Ich file
laufe gegen eine wallet.dat-Datei (eine Datei, in der Bitcoin seine privaten Schlüssel behält) und obwohl es keinen identifizierbaren Header oder String zu geben scheint, file
kann ich trotzdem feststellen, dass es sich um eine Berkley DB-Datei handelt, selbst wenn ich Schneiden Sie es auf 16 Bytes.
Ich weiß, dass diese Datei eine Art Regel angewendet oder nach einer Sequenz gesucht hat, um sie zu identifizieren. Ich möchte wissen, welche Regel hier angewendet wird, damit ich sie in meinem eigenen Programm duplizieren kann.
file-command
Nick ODell
quelle
quelle
file
ist unter diesen Umständen nicht falsch.Antworten:
Holen Sie sich die Quelle des Dateibefehls. Die meisten, wenn nicht alle Open-Source-Unices verwenden diese . Der
file
Befehl wird mit dermagic
Datenbank geliefert, die nach den darin beschriebenen magischen Zahlen benannt ist. (Diese Datenbank ist ebenfalls auf Ihrem Live-System installiert, jedoch in kompilierter Form.) Suchen Sie nach der Datei, die den angezeigten Beschreibungstext enthält:Die
magic
Manpage beschreibt das Format der Datei. Die Triggerleitungen für „Berkeley DB“ sindDie erste Spalte gibt den Offset an, bei dem eine bestimmte Bytefolge gefunden werden soll. Die dritte Spalte enthält die Bytesequenz. Die zweite Spalte beschreibt den Typ der Bytesequenz:
long
bedeutet 4 Bytes in der Endianness der Plattform ;lelong
undbelong
bedeuten 4 Bytes in Little-Endian- bzw. Big-Endian-Reihenfolge.Anstatt die Regeln zu replizieren, möchten Sie möglicherweise das
file
Dienstprogramm aufrufen . Es wird von POSIX angegeben , die erkannten Formate und die von ihm ausgegebenen Beschreibungen jedoch nicht. Alternativ können Sielibmagic
die Funktionmagic_file
oder verknüpfen und aufrufenmagic_buffer
.quelle
Du könntest:
Führen Sie es
file
in Ihrem Programm ausVerwenden Sie eine Bibliothek, die
file
Ihrer Programmiersprache Funktionen bietet . zBlibmagic
für C,File::Libmagic
oderFile::MMagic
für dieperl
,python-magic
für Python usw.Übrigens finden Sie die Definitionen,
file
mit denen Dateien identifiziert werden/etc/magic
. Sieheman 5 magic
für Dateiformat Details.quelle
/etc/magic
in der Regel für Ihr eigenes lokales magisches Wissen. Distros neigen dazu, ihre generische Magie einzubringen/usr/share/misc/magic
.