Seite 1 von 1

Hexstring aus mehreren Dateien auslesen.

Verfasst: Sonntag 22. Mai 2016, 10:10
von michaelc
Moin leute, bin neu hier und hätte ne Frage zum auslesen von Hexstrings aus Binären Dateien in meinem Beispiel nehme ich .exe Dateien.
hier mal der Code der mit einzelnen Dateien wunderbar funktioniert:

Code: Alles auswählen

import glob, os
path = "/root"
for bla in glob.glob("*.exe"):
    file = os.path.join(path, bla)
    print(file)
with open("d.exe", 'rb') as f: 
#with open(bla, 'rb') as f:       <---ist das die Lösung?
   if b'\x74\x75\x61\x6C\x44\x75\x62\x20\x62\x75\x69\x6C\x64\x20\x25\x64\x2F' in f.read():
        print('String find in: ',file)
   else:
        print('String not found!')
Das Ergebnis:

Code: Alles auswählen

#python 4.py
/root/d.exe
/root/DivXRepair.exe
('String find in: ', '/root/DivXRepair.exe')
Dachte das ich mit
with open(bla, 'rb') as f:
mein Problem lösen könnte, leider erhalte ich zwar kein Fehlermeldung, aber nur eine von 2 Dateien.
Danke im vorraus.

Gruß Michael

Re: Hexstring aus mehreren Dateien auslesen.

Verfasst: Sonntag 22. Mai 2016, 10:42
von Sirius3
@michaelc: zum Ersten durchsuchst Du das falsche Verzeichnis, falls «/root» nicht sowieso schon Dein aktuelles ist. Zum Zweiten steht Dein with-open-Block nach der for-Schleife und nicht in ihr. Zum Dritten verwendest Du Python 2 schreibst aber print-Statements wie eine Funktion.

Code: Alles auswählen

from __future__ import print_function
import os
import glob

PATH = "/root"
PATTERN = b"\x74\x75\x61\x6C\x44\x75\x62\x20\x62\x75\x69\x6C\x64\x20\x25\x64\x2F"

def main():
    for filename in glob.iglob(os.path.join(PATH, '*.exe')):
        print(filename)
        with open(filename, "rb") as binary:
            data = binary.read()
        if PATTERN in data:
            print('String find in:', filename)
        else:
            print('String not found!')

if __name__ == '__main__':
    main()

Re: Hexstring aus mehreren Dateien auslesen.

Verfasst: Sonntag 22. Mai 2016, 11:36
von BlackJack
@michaelc: `PATTERN` könnte man auch etwas kürzer schreiben: b'tualDub build %d/'. Es macht nicht so wirklich viel Sinn ASCII-Zeichen als Hex-Escape-Codes zu schreiben. ;-)

Re: Hexstring aus mehreren Dateien auslesen.

Verfasst: Montag 23. Mai 2016, 20:28
von michaelc
Supi DANKE genau das was ich gesucht hab :D