ganze exe/avi/jpg Datei auslesen...

Anfängerfragen zum Programmieren mit PureBasic.
pede
Beiträge: 90
Registriert: 08.07.2007 20:37
Wohnort: brixen / Italien

ganze exe/avi/jpg Datei auslesen...

Beitrag von pede »

Hallo.

Wie schafft man es eine exe/Jpg/avi ect Datei vollständig auszulesen und den Inhalt in einem String zu speichern?
Das Problem ist, dass immer nur die ersten 2 oder 3 Zeichen der Datei ausgelesen werden...

Ich brauch das, um die Dateien verschlüsseln zu können!

So klappt es nicht:

Code: Alles auswählen

If ReadFile(#datei_auslesen, pfad$)
        
        laenge = Lof(#datei_auslesen)
        If laenge
            *mem = AllocateMemory(laenge)
            ReadData(#datei_auslesen, *mem, laenge)
            Datei_Inhalt$ = PeekS(*mem, laenge)
            CloseFile(#datei_auslesen)
        EndIf
    EndIf
Bei Text/ini ect. Dateien funktioniert es jedoch!

mfg
Pede
"oh... ein Sarkasmus-Detektor... ein wirklich nützliches Gerät" .. dit.. dit.. ditditdit.. *bumm*
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

die daten sind schon im buffer. nur das auslesen ist nullterminiert. und 'ne 0 taucht in binären dateien nun mal recht schnell auf.
Zuletzt geändert von #NULL am 21.10.2007 23:00, insgesamt 1-mal geändert.
my pb stuff..
Bild..jedenfalls war das mal so.
pede
Beiträge: 90
Registriert: 08.07.2007 20:37
Wohnort: brixen / Italien

Beitrag von pede »

#NULL hat geschrieben:die daten sind schon im buffer. nur das auslesen ist nullterminiert. und 'ne 0 taucht binären dateien nun mal recht schnell auf.
hä? das versteh ich nicht... :oops:
mit Notepad kann man so ne Datei doch auch öffnen...
Und die Zeichen, die da dargestellt werden, sind doch keine Binärdaten..
Es kommen doch haufenweiße komische Zeichen vor?!
Ein kleiner Ausschnitt aus ner exe:
Y‹Æ^Â V‹ñè öD$tVè³
Und wie kann ich das Problem dann beheben?

Sry, ich checks nich... :oops:

lg
"oh... ein Sarkasmus-Detektor... ein wirklich nützliches Gerät" .. dit.. dit.. ditditdit.. *bumm*
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Du willst eine Datei verschlüsseln und den Inhalt in einem String speichern? Verrückt.

Wie wäre es mal mit:

Code: Alles auswählen

if readfile(0,"Program.exe")

while not eof(0)
debug readbyte(0)

wend
closefile(0)
endif
Eine einfache Verschlüsselungsmethode:

Code: Alles auswählen

if readfile(0,"Program.exe")
createfile(1,"Program_crypt.exe")

while not eof(0)
byte=readbyte(0)

writebyte(1,byte+1)


wend
closefile(0)
closefile(1)
endif

Achtung, nicht getestet!
Du musst die Datei mit ReadByte auslesen, den Bytewert z.b nach der obigen Methode "verschlüsseln" und sie auch wieder mit Writebyte erstellen.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

pede hat geschrieben:...Sry, ich checks nich... :oops: lg
Pede, in einem String darf kein 0 Byte [chr(0)] vorkommen, weil dieses Byte das Ende eines Strings markiert.
Wenn die eingelesene Binärdatei also an der 5ten Stelle ein 0-Byte aufweist, dann werden, wenn Du das ganze in einen String einliest und den String 'printen' läßt, nur die ersten 4 Zeichen angezeigt.

@Xor:
writebyte(1,byte+1)
Und was machst Du, wenn byte = $ff ist? Da wirds doch dann zu $100.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
pede
Beiträge: 90
Registriert: 08.07.2007 20:37
Wohnort: brixen / Italien

Beitrag von pede »

:?
Xor: ich glaub das hast du falsch verstanden, oder ich versteh deine Aussage nicht

Einen verschlüsslungsalgorithmus hab ich schon!
Eine Text-Datei kann ich schon verschlüsseln, und zwar so, dass die Datei ausgelesen wird --> in den String "Datei_Inhalt$" und dieser dann mit einem einfachen Xor Algo :mrgreen: verschlüsselt wird...

Bei Binärdateien tritt aber eben nun das Problem auf, dass nicht die ganze Datei eingelesen wird, sondern nur, soweit ich jetzt #Null verstanden habe, bis zum ersten Nullbyte, das in Binärdateien öfters vorkommt!
Anstatt die ganze Datei zu verschlüsseln werden meinetwegen nur 10 Zeichen verschlüsselt...

Und das Problwm möcht ich lösen!
Ich hoff ich hab mich verständlich ausgedrückt, wenn nicht tuts mir leid

lg

Edit: das mit den Nullbytes hab ich jetzt verstanden, danke :allright:
Aber wie kann ich das Problem dann beheben?
"oh... ein Sarkasmus-Detektor... ein wirklich nützliches Gerät" .. dit.. dit.. ditditdit.. *bumm*
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Du hast doch die Datei lt. Deinem obigen Code schon in einen allokierten Speicherbreich gelesen. Verschlüssle ihn dort und schreib den Speicherbereich einfach in eine neue Datei. Du musst da nichts mit Strings machen.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
pede
Beiträge: 90
Registriert: 08.07.2007 20:37
Wohnort: brixen / Italien

Beitrag von pede »

jo das klingt gut, werd ich gleich morgen probieren

und wenns nicht klappt, meld ich mich einfach wieder! :D
"oh... ein Sarkasmus-Detektor... ein wirklich nützliches Gerät" .. dit.. dit.. ditditdit.. *bumm*
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

@Kurzer:

Geht natürlich nur von -128 bis 127. Muss man halt prüfen. Meins war ein grobes sample.
Antworten