Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 26 odgovora
  • 4.661 pregleda

Najnovija ↓

problem sa kodiranjem,pretpostavljam 26.08.2008. u 14:27 · pre 221 mesec #1
aplikacija treba sadrzaj fajla(128Bytes) koji je txt formatu(predstavlja kljuc i sadrzi hex vrednosti) da iscita i napravi novi fajl koji se automatski smesta na odredjenu lokaciju na C,sam kod sam iskomplikovala,imam jedan exe fajl koji odredjuje putanje i sadrzaj novog fajla definisan sa 128 *(zvezdica)jer je poverljiv i drugi kod koji gadja prvi exe i trazi niz od 128*kad nadje medja zvezdice odgovarajucim karakterima iz zadatig fajla i to smesta u novi fajl na C i pravi exe koji ide korisniku.Opseg vrednosti od 80-9F vb6 mi interpretita kao 3F,ostale vrednosti mi tacno prenese.?????????Ako me je neko razumeo:-),pomagajte!!!!!!!!
poenta aplikacije je da korisnik unese sifru i da se taj sadrzaj prenese na odredjenu lokaciju a da korisnik nema pojma sta radi apllikacija.
Re: problem sa kodiranjem,pretpostavljam 26.08.2008. u 16:15 · pre 221 mesec #2
hmm, nisam siguran da sam bas razumeo sta si htela da kazes :)

kako mislis da ti vb vrednosti od &h80 do &h9F tretira kao &h3F? poslednji put kada sam ja radio sa vb6 sasvim dobro je podnosio hexadecimalne brojeve :)

pojasni malo to "prenosenje" brojeva. ja koliko sam razumeo ti u jednom fajlu imas 128-bitni hexadecimalni broj i treba da ga procitas i onda otvoris drugi exe fajl, pronadjes 128 zvezdica i te zvezdice zamenis sa tim 128bitnim hexadecimalnim brojem?
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: problem sa kodiranjem,pretpostavljam 26.08.2008. u 18:30 · pre 221 mesec #3
Ja sam shvatio da imas niz od 128 bajtova raznih vrednosti (u kom rasponu ?) u txt fajlu.
I kad ih iscitas ? vrednosti od &h80 do &h9F su "interpretirane" (gde? u VB IDE-u?) kao &h3F. Sta je sa ostalim vrednostima preko &h9F ? Dali se koriste ?
Evo ti kod koji upisuje i cita te vrednosti ... mozda ti bude od koristi ...

Code:

Private Sub Form_Load()
Dim fso, fs
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = fso.CreateTextFile("C:\Fajl.txt")
Dim str As String
str = ""
For n = &H80 To &H9F
str = str & Chr(n)
Next n
fs.Write str
fs.Close
Set fs = Nothing
Set fs = fso.OpenTextFile("C:\Fajl.txt", 1)
str = fs.ReadAll
Set fs = Nothing
Set fso = Nothing
Debug.Print str
End Sub
Potpis
HomePage http://www.eurora3d.com
Re: problem sa kodiranjem,pretpostavljam 27.08.2008. u 08:49 · pre 221 mesec #4
Dobro si shvatio ....najobicniji txt fajl od 128bajtova sa sadrzajem izmuljanim u hex editoru,znaci niz od 128 hex brojeva.
Citam ih u drugom kodu koji mi trazi zvezdice,otvara fajl sa hex sadrzajem,iscitava,medja zvezdice karakterima i to smesta u novi fajl na odgovarajucu lokaciju.
Sve ostale vrednosti mi verno prenese osim navedenih....
Zasto....te vrednosti prestavljaju ona glupava slova kao a sa dve tacke i tome sl.i takvo kodiranje podrzava ANSII ,da li je mozda u tome problem?
Re: problem sa kodiranjem,pretpostavljam 27.08.2008. u 11:49 · pre 221 mesec #5
Ovo je citat iz MSDN-s o ANSI setu znakova.
"ANSI 8-bit character set used to represent up to 256 characters (0–255) using your keyboard. The first 128 characters (0–127) correspond to the letters and symbols on a standard U.S. keyboard. The second 128 characters (128–255) represent special characters, such as letters in international alphabets, accents, currency symbols, and fractions."
Taj raspon znakova koji pominjes spada u prvi deo druge polovine ovog seta znakova (128-159).
Nisi objasnila sve ovo sto sam pitao tako da nije moguce dati 100% tacan odgovor ... u svakom slucaju
Ova moja funkcija gore tacno cita fajl u i upisuje bajtove u String buffer
Probaj sledece
Nemoj da koristis znakove u programu nego njihove ASCI vrednosti. Imas funkcije Chr(broj) za pretvaranje ASCI koda u slovo i Asc("slovo") za pretvaranje slova u ASCI kod.
Ucitavaj sadrzaj fajla u String i ucitaj ceo odjednom (posto je mali tekst) pa ga parsiraj odatle.
Proveri deo programa koji radi trazenje tih zvezdica , moguce je da si prilikom postavljanja uslova (dali je zvezdica itd.) negde greskom isfiltrirala taj raspon znakova.
Cini mi se da je problem najverovatnije u ovom poslednjem.... jer ako pogledas logicki nema razloga da funkcije koje citaju fajl (windows funkcije) ne procitaju svaki bajt tacno ... mozda je problem i u programu koji je snimio taj fajl na HD (taj hex editor) mozda nije snimio to sto ti mislis da bi trebalo.

Potpis
HomePage http://www.eurora3d.com
Re: problem sa kodiranjem,pretpostavljam 27.08.2008. u 12:13 · pre 221 mesec #6
Fajlu pristupam binarno i citam bajt po bajt tako da ne mogu da koristim funkcije Chr i Asc(valjda),a opseg je 00-FF,sve mi iscita i prenese verno osim ovog opsega koji sam navela....
Re: problem sa kodiranjem,pretpostavljam 27.08.2008. u 12:15 · pre 221 mesec #7
e sad ste me oboje zbunili :)

prvo se kaze:
Citat:
aplikacija treba sadrzaj fajla(128Bytes) koji je txt formatu(predstavlja kljuc i sadrzi hex vrednosti)


i ja pomislim da taj fajl sadrzi nesto tipa:
Code:
3b0cd18f7ba643012ef28c6a3e7b80311f8bc54d0f264ab3012be8c104fa383b0cd18f7ba643012ef28c6a3e7b80311f8bc54d0f264ab3012be8c104fa38

sto je 128bajtni hexadecimalni broj (ili 128 hexadecimalnih cifara) a fajl je u ascii formatu

a onda se kaze:
Citat:
najobicniji txt fajl od 128bajtova sa sadrzajem izmuljanim u hex editoru

a prikaz u hex editoru se dosta razlikuje od prikaza ascii fajla (hex editorom se edituju binarni fajlovi a ne textualni, mada mogu i textualni naravno...)


i meni i dalje nije jasno sta podrazumevas pod "Opseg vrednosti od 80-9F vb6 mi interpretita kao 3F", jer ukoliko ti samo treba da ucitas 128-bajtni string/niz i da ga prekopiras u drugi fajl sta se tu interpretira?


edit:
pretece me miljanar :)
ali i dalje ostaju oba moja pitanja...
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: problem sa kodiranjem,pretpostavljam 27.08.2008. u 12:31 · pre 221 mesec
izmenjeno 1 put, poslednji put Eurora3D Team 27.08.2008. u 15:27
  1. Eurora3D Team27.08.2008. u 15:27zapis iz teksta poruke
#8
Mozes da koristis Chr i Asc i sa bajtovima
Code:

Dim Slovo As String
'Bajt
Dim Bajt As Byte
Bajt = 65 ' ASCI 65 = A
Slovo = Chr(Bajt) ' Dobijamo A u Slovo
Debug.Print Slovo ' Dobijamo A na izlazu
Debug.Print Asc(Slovo) ' Dobijamo 65 na izlazu
'Niz bajtova
Dim BajtNiz(3) As Byte
BajtNiz(1) = 67 ' ASCI 67 = C
Slovo = Chr(BajtNiz(1)) ' Dobijamo C u Slovo
Debug.Print Slovo ' Dobijamo C na izlazu
Debug.Print Asc(Slovo) ' Dobijamo 67 na izlazu


@Alekasandar
:)
Ma ima txt sa 128 karaktera (koji ako gledas u nekom hex editoru izgleda kao niz hex brojeva :) ) ,
Ima nesto kao ev2cb av2--4ov gledano iz Notepada
S' tim da svaki znak normalno mozemo da gledamo i kao broj (decimalni ili hex) od 0 do 255 . Jedino sto ona ocigledno vise voli (ili mora zbog aplikacije) da barata hex brojevima
tako sam ja shvatio ..
Potpis
HomePage http://www.eurora3d.com
Re: problem sa kodiranjem,pretpostavljam 27.08.2008. u 13:47 · pre 221 mesec #9
aj ovako,ako imas hex editor unesi neke hex vrednosti,idi na export to file i fajl sacuvaj kao hex byte(*.hex).Takav fajl ja dobijam,odnosno kljuc za sifrovanje.i taj kao takav trebam da ocitam,i sadrzaj bukvalno iskopiram u drugi novi koji se smesta na C.
Ovo je druga varijanta sa binarnim fajlovima,pa se mozda bolje razumemo,ali isti problem.
Re: problem sa kodiranjem,pretpostavljam 27.08.2008. u 15:18 · pre 221 mesec
izmenjeno 1 put, poslednji put Aleksandar Ružičić 27.08.2008. u 16:40
  1. Aleksandar Ružičić27.08.2008. u 16:40zapis iz teksta poruke
#10
e pa to je vec druga stvar, ti si me zbunila kada si rekla u txt formatu...

elem, ucitavas ovako:
Code:

Dim fn As Integer
dim key(0 to 127) As Byte
fn = FreeFile
Open "file.ext" For Binary Access Read Lock Write As #fn
   get #fn,, key()
close #fn


a ovako upisujes:
Code:

dim pos as integer
fn = FreeFile
Open "file2.ext" For Binary Access Write Lock Write As #fn
   pos = findPositionOfFirstStar() ' ovde ubaci logiku/funkciju koja ce da ti pronadje gde pocinju tih 128 zvezdica (na kojoj poziciji)
  put #fn, pos, key()
close #fn


i to je to...
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: problem sa kodiranjem,pretpostavljam 28.08.2008. u 10:40 · pre 221 mesec
izmenjeno 1 put, poslednji put Aleksandar Ružičić 28.08.2008. u 17:06
  1. Aleksandar Ružičić28.08.2008. u 17:06zapis iz teksta poruke
#11
evo ti moj kod,malo skracen ali to je to
Code:

open KRIPTO for binary as #3   'kripto je binarni fajl sa kljucem
poc_lok=FindStart-1   'findstart funkcija koja trazi 128 *
duz=FileLen(template_exe)      'template_exe je exe fajl sa putanjama i definisanom const od 128 *
open template_exe for binary as #1
open new_exe for binary as #2      'new_exe je novi exe fajl u kom je integrisan kljuc
ofset=0
tst_pod=&h30
for i=0 to duz-1
get #1,,pom_pod
if((i=poc_lok+ofset) and i<poc_lok +broj_bajtova))  then   'broj_bajtova=128
get#3,,tst_pod
put #2,,tst_pod
ofset=ofset+2
else
put #2,,pom_pod


kad otvorim fajl kripto i novi fajl koji sam definisala u template_exe(a koji treba da budu isti) i koji je sada na nekoj lokaciji na C(uporeddjujenm ih preko total commandera,f3view,options pa hex-vrednosti izmedju h80-h9F mi prenosi kao h3F)
Re: problem sa kodiranjem,pretpostavljam 28.08.2008. u 20:34 · pre 221 mesec
izmenjeno 1 put, poslednji put Eurora3D Team 28.08.2008. u 23:20
  1. Eurora3D Team28.08.2008. u 23:20zapis iz teksta poruke
#12
Zainteresovala me je tema :) (mozda si nasla Bug u MS VB bibliotekama ... ) a i da se odmorim od c++-a
Probao sam sa bmp slikom u koju sam na kraj dodao 128 * i fajlom od 128 bajtova koji ima nekoliko znakova koji su kod tebe problematicni i radi.
Slika koja se dobije moze da se otvori a * na kraju su zamenjene sadrzajem hex fajla.
Inace koriscen je Win API , kao sto se i vidi ...
poz
Code:

Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const CREATE_NEW = 1
Private Const OPEN_EXISTING = 3
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const CREATE_ALWAYS = 2
Private Const INVALID_HANDLE_VALUE = -1
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Any) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Any) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Option Base 1 ' baza nizova je index 1 ... a ne 0

Private Function CopyHex(CrFile As String, InFile As String, OutFile As String) As Boolean
CopyHex = False
Dim hCr As Long, hIn As Long, hOut As Long
Dim CrBuffer() As Byte, InBuffer() As Byte, OutBuffer() As Byte
Dim bWrote As Long, bRead As Long
Dim fSz As Long, I As Long, n As Long, m As Long
'I
bRead = 0
hCr = CreateFile(CrFile, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
If hCr = INVALID_HANDLE_VALUE Then Debug.Print "Greska u otvaranju HEX fajla": Exit Function
fSz = GetFileSize(hCr, 0)
If fSz <> 128 Then Debug.Print "HEX fajl nema 128 bajtova": Exit Function
ReDim CrBuffer(fSz)
ReadFile hCr, CrBuffer(1), fSz, bRead, ByVal 0&
CloseHandle hCr
If bRead <> fSz Then Debug.Print "Greska u citanju fajla " & CrFile: Exit Function
'II
bRead = 0
hIn = CreateFile(InFile, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
If hIn = INVALID_HANDLE_VALUE Then Debug.Print "Greska u otvaranju fajla " & InFile: Exit Function
fSz = GetFileSize(hIn, 0)
If fSz = 0 Then Debug.Print "Greska u otvaranju fajla " & InFile: Exit Function
ReDim InBuffer(fSz)
ReadFile hIn, InBuffer(1), fSz, bRead, ByVal 0&
CloseHandle hIn
If bRead <> fSz Then Debug.Print "Greska u citanju fajla " & InFile: Exit Function
ReDim OutBuffer(fSz)
'Prepisujemo bajtove i nalazimo ***
n = 0: m = 0
For I = 1 To fSz
If I <= fSz - 127 And  m = 0 Then
If InBuffer(I) = CByte(Asc("*")) And InBuffer(I + 127) = CByte(Asc("*")) Then ' mali trik :)
Dim b As Boolean
b = True
For n = I To I + 127
If Not Chr(InBuffer(I)) = "*" Then b = False
Next n
If b = True Then m = I
End If
End If
OutBuffer(I) = InBuffer(I)
Next I
If m = 0 Then Debug.Print "Nemamo niz ****": Exit Function
For I = m To m + 127
OutBuffer(I) = CrBuffer(I - m + 1)
Next I
'III
hOut = CreateFile(OutFile, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, CREATE_ALWAYS, 0, 0)
If hOut = INVALID_HANDLE_VALUE Then Debug.Print "Greska u kreiranju fajla " & OutFile: Exit Function
WriteFile hOut, OutBuffer(1), fSz, bWrote, ByVal 0&
CloseHandle hOut
If fSz <> bWrote Then Debug.Print "Greska pri upisu u fajl " & OutFile: Exit Function
CopyHex = True
End Function

Private Sub Form_Load()
'CrFile je HEX fajl od 128 bajtova, InFile je fajl sa 128 * a OutFile je proizvod gde su zvezdice iz InFile zamenjena sadrzajem HEX fajla
Dim CrFile As String, InFile As String, OutFile As String
CrFile = "": InFile = "": OutFile = "" ' popuniti
If CopyHex(CrFile, InFile, OutFile) Then MsgBox "Ok"
End Sub
Potpis
HomePage http://www.eurora3d.com
Re: problem sa kodiranjem,pretpostavljam 02.09.2008. u 17:51 · pre 221 mesec #14
Nigde nije pisalo da si pocetnik :) a i taj kod koji radis nije za nivo pocetnika ... (citas jedan exe fajl , drugi hex pa upisujes u treci ...)
Win API je sam po sebi komplikovan u odnosu na VB6
Evo ti objasnjenje , ukratko
Ulazni parametri su imena fajlova.
Delovi I i II citaju ceo sadrzaj fajlova u 2 byte niza
Deo posle toga trazi niz od 128 zvezdica u drugom fajlu i pravi treci niz identican sa drugim s' tim sto su sve zvezdice iz drugog (ocekuje se da su zvezdice poredjane jedna za drugom) zamenjuje sadrzajem prvog niza.
Deo III upisuje dobijeni treci niz u izlazni fajl
Uz ovo ima i dosta error handler-a , al ovo gore je sustina ove funkcije
Potpis
HomePage http://www.eurora3d.com
Re: problem sa kodiranjem,pretpostavljam 03.09.2008. u 11:04 · pre 221 mesec #15
:-)Ok,to sam provalila ali nisam radila sa Win API-jem pa mi je malo konfuzna sama sintaksa koda....
Hoces da mi objasnis liniju koda

hCr = CreateFile(CrFile, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
Re: problem sa kodiranjem,pretpostavljam 03.09.2008. u 13:02 · pre 221 mesec #17
poziv API funkcije CreateFile:

Code:

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long


Napravi datoteku [OutFile] za čitanje, ne ekskluzivno da bi drugi mogli da čitaju i upisuju, bez SecurityAttribute-a, ukoliko vec postoji onda otvori postojecu, bez flagova i bez šeme. :)
Re: problem sa kodiranjem,pretpostavljam 03.09.2008. u 15:51 · pre 221 mesec #18
ok,jasno....hvala:-)
a da li neko zna zasto moj kod ne radi,tj.zasto mi ne prenosi tacno onaj hex opseg????Necu se smiriti dok to ne provalim....
Re: problem sa kodiranjem,pretpostavljam 03.09.2008. u 20:32 · pre 221 mesec
izmenjeno 1 put, poslednji put Eurora3D Team 03.09.2008. u 20:44
  1. Eurora3D Team03.09.2008. u 20:44zapis iz teksta poruke
#19
Ni meni nije jasno u cemu je tu stvar ...
U svakom slucaju , pre nego sto sam napisaju ovu funkciju koja koristi Windows API probao sam VB pristup (FileSystemObject) za citanje i upis u fajlove. Podatke sam ucitavao u String buffere.
Iako je kod bio dobro napisan slike (ja sam koristio slike umesto exe-a) koje sam dobijao nisu mogle da se otvore (gledaju). Gledano iz Notepada dobijeni fajl je bio dosta drugaciji od ulaznog . Zvezdice su bile zamenjene ali su ostali podatci (nisam gledao opsege) bili prepisani pogresno, ne svi al prilicno.
To je to sto sam ja primetio a zasto nije ni meni jasno.
A ova pravi fajl za upis
hOut = CreateFile(OutFile, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, CREATE_ALWAYS, 0, 0)
Potpis
HomePage http://www.eurora3d.com
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme