2009-05-12 13 views
2

Ich habe ein Stück ziemlich zufällige Binärdaten. Ich möchte herausfinden, wo dieser Chunk in einer Datei existiert, wie oft er auftritt und bei welchen Byte- (oder Sektor-) Offsets. Irgendwelche Ideen, wie man das macht?Binär-Chunk in einer Datei finden

Danke, Justin

+0

Entschuldigung, habe den Linux-Tag bis jetzt nicht bemerkt. –

Antwort

2

würde ich X-Ways WinHex dafür empfehlen. Ich benutze es ziemlich oft, um beliebige Daten auf Festplattenlaufwerken oder großen Disk-Image-Dateien zu suchen.

+0

+1, nettes Werkzeug, selbst wenn es Win-centric ist ;-) – DCookie

3

Ich glaube, dass kein bestehender Befehl genau das tut, was Sie wollen. Wenn Ihr Chunk klein ist und Ihre Datei in den Speicher passt, ist es einfach, Ihre eigenen zu schreiben. Scanne einfach den Dateiinhalt und verwende strncmp an jeder Position.

Wenn Ihre Datei sehr groß ist, aber immer noch in Ihren Adressraum passt, können Sie dasselbe mit mmap tun.

Wenn Ihr Stück nicht klein ist, werden Sie wahrscheinlich besser mit Boyer-Moore algorithm anstelle von strncmp. Dies ist immer noch nicht zu viel Arbeit, da es bereits Implementierungen gibt, die Sie verwenden können.

+0

+1, geschickter Algorithmus – DCookie

+0

Dies ist, was ich getan habe, mit mmap und memcmp. Es funktioniert, aber ich dachte, es sollte wirklich ein Befehl sein, der das schon tut. – Justin

0

Sie können mit dem Byte mit grep

Dies gibt Linien einige dies zu tun

Offset

grep --text --byte-offset 'ls' /bin/ls

hinzufügen --count Parameter die Gesamtzahl der Spiele zu erhalten.

+0

Ich habe das auch getan, aber die Sache ist, ich habe eine Datei, die den Brocken enthält. Ich finde keine Möglichkeit, grep nach dem Inhalt einer Datei in einer anderen Datei suchen zu lassen. – Justin

Verwandte Themen