Frage:
Wo finde ich Informationen zu einem Dateiformat?
user187
2013-04-04 12:49:50 UTC
view on stackexchange narkive permalink

Angenommen, ich habe eine Datei gefunden (möglicherweise eine ausführbare Datei, Daten oder etwas anderes) und möchte sie ausführen oder lesen. Ich öffne diese Datei in einem Texteditor, aber das Format ist nicht lesbar. Beispiele sind: Java-Klasse, ausführbare Windows-Datei, SQLite-Datenbank, DLL, ...

Ich kenne das Dateiformat, wenn wir der Erweiterung vertrauen können.

Gibt es irgendwo eine Site oder Datenbank mit vielen Informationen zu vielen verschlüsselten oder binären Dateiformaten? Zu den Informationen sollten gehören:

  • Dateiverwendung
  • Dateilayout und -struktur
  • Eventuell Programme, die die Datei lesen oder ausführen können

Ich suche also nicht nach einer Möglichkeit, das Format der Datei zu identifizieren. Ich kenne das Dateiformat bereits, muss aber Informationen zu diesem Format haben. Wann wird das Format verwendet (in welchen Anwendungen), wie ist das Format aufgebaut?

Ich würde vermuten, dass all diese Daten in freier Wildbahn versendet werden. Ich sehe keine Gruppe, die in der Lage ist, eine kohärente Sammlung aller Spezifikationen aller Formate zu führen. Aber ich könnte auch nur unwissend sein. :) :)
Sie haben also eine Datei mit einem undokumentierten Format? Ich denke, die Frage ist auch jetzt noch etwas mehrdeutig formuliert. Außerdem erhalten Sie Wotsit und ähnliche Websites. Alles andere wäre eher eine Site, die * Domain * -Wissen über das jeweilige Format abdeckt.
@0xC0000022l Ja, ich wollte die Frage so weit wie möglich halten, aber das ging nicht gut. Ich habe keine bestimmte Beispieldatei, die ich gerade betrachte. Ich wollte nur wissen, ob es einen zentralen Ort mit Dateiformatinformationen gibt. Wotsit ist in der Tat sehr gut, wie in dieser Antwort erwähnt (http://reverseengineering.stackexchange.com/a/1573/187).
Ich finde die Frage interessant, aber alle guten Seiten und Bibliotheken, an die ich jetzt denken kann, wurden bereits erwähnt. Suchen Sie also jetzt (wegen der Prämie) nach einer genauen Methodik?
@Ange Hachoir ist das beste, das ich bisher gesehen habe. Da jedoch viele Dinge erwähnt wurden, wäre eine CW-Liste vielleicht besser. Wenn nicht, verwende ich das Kopfgeld nur, um eine vorhandene Antwort zu belohnen. Besonders das Hachoir-Ding scheint für diese IMO geeignet zu sein.
Hachoir ist in der Tat ziemlich beeindruckend - es wäre meine erste Antwort gewesen - sowohl was bereits unterstützt wird als auch wie es erweitert werden kann (seine Struktur erleichtert das Hinzufügen neuer Formate, [Beispiel] (https://bitbucket.org/) haypo / hachoir / src / 9bae02ddf53ea7284f7a431654849ad5e553c429 / hachoir-parser / hachoir_parser / program / exe_pe.py)).
Zwölf antworten:
#1
+36
nneonneo
2013-04-08 21:01:02 UTC
view on stackexchange narkive permalink

Ich bin Entwickler für das Hachoir-Projekt, mit dem das Format einer Datei bis auf Bitebene beschrieben werden soll. Derzeit gibt es Parser für eine Reihe bekannter Formate, einschließlich Java-Klassen, ausführbare Windows-Dateien, MP3-Dateien usw. Die vollständige Liste der Parser finden Sie in den Unterverzeichnissen hier.

Wenn Sie an einem neuen Parser für hachoir_parser arbeiten, müssen Sie häufig Informationen zu einem Dateiformat finden. Es gibt keine einzige Quelle, die jedes Format beschreibt (auch wenn Hachoir diese Quelle anstrebt, ist sie bei weitem nicht umfassend genug). Im Allgemeinen besteht der erste Schritt darin, nur nach <file format name>-Dateiformat zu suchen, z. Java-Klassendateiformat und suchen Sie auf offiziellen Websites nach Dokumentation (für Java-Klassen wird die Dokumentation von Oracle angezeigt, die alles sein sollte, was Sie benötigen). Wenn es keine offiziellen Websites gibt, können Sie dennoch Dokumentationen von jemandem anzeigen, der in der Vergangenheit an dem Format gearbeitet hat.

Bei gängigen Dateiformaten wird die gewünschte Formatspezifikation für 90-95 angezeigt % der ganzen Zeit. Größere Softwareunternehmen wie Oracle und Microsoft veröffentlichen ihre Dateiformatspezifikationen aus Gründen der Interoperabilität online. Sie können beispielsweise Dokumentation für PE (Windows EXE / DLL), MS Office-Formate (XLS, PPT, DOC) und andere Microsoft-Formate finden, indem Sie MSDN durchsuchen oder durchsuchen.

Für Multimedia-Formate das Multimedia Wiki ist eine großartige Ressource. Sie decken auch einige Spieledateiformate ab.

Für ein weniger verbreitetes Dateiformat, für das ich keine Spezifikation (oder geeignete Beschreibung) von Googling finde, besteht mein Ansatz normalerweise darin, Open Source zu finden Programm, das die Datei versteht, und entweder die Formatspezifikationsquelle suchen (falls in einem Commit oder in der README-Datei beschrieben) oder den Quellcode direkt lesen, um das Dateiformat zu verstehen.

Wenn es keine Open-Source-Programme für die Datei gibt und keine offen verfügbaren Beschreibungen des Dateiformats online, ist das Dateiformat wahrscheinlich ziemlich dunkel. Für Spieledateien (in denen viele Entwickler darauf bestehen, ihre eigenen proprietären Formate zu verwenden) habe ich festgestellt, dass XeNTaX einige gute Hinweise und eine gute Community bietet, um die Formate herauszufinden. Bei anderen Arten von Formaten müssen Sie möglicherweise die Stichproben untersuchen, um die Bytefelder zu vergleichen und ihre Funktion zu erläutern. Wenn Sie ein Programm haben, das diese Dateien akzeptiert, können Sie versuchen, die Felder methodisch zu ändern, um festzustellen, welche Auswirkungen sie auf die Programmausgabe haben. Dies ist letztendlich die "echte" Reverse Engineering-Arbeit, und ich denke, sie liegt nicht im Rahmen dieser Antwort.

Ich bin ein großer Fan des Hachoir-Projekts. Ich benutze es seit Jahren. Mach weiter so.
Einer der Jungs auf XentaX hat auch ein Skript / Framework namens QuickBMS geschrieben, was ziemlich erstaunlich ist. Es klingt wie es für Hachoir nützlich sein kann. http://aluigi.altervista.org/quickbms.htm
#2
+28
samuirai
2013-04-04 14:48:13 UTC
view on stackexchange narkive permalink

Die -Datei (1) und die zugrunde liegende libmagic (3) befehlen Fingerabdruckdateien basierend auf den Dateiinhalt. Beispiel:

  $ file test.ctest.c: ASCII-Text $ file test.exetest.exe: PE32-ausführbare Datei für MS Windows (Konsole) Intel 80386 32-Bit $ file testtest: ELF 32 -bit LSB ausführbare Datei, ARM, Version 1 (SYSV), dynamisch verknüpft (verwendet gemeinsam genutzte Bibliotheken), für GNU / Linux 2.6.16, nicht entfernt $ file database.sqlitedatabase.sqlite: SQLite 3.x-Datenbank  

Diese Informationen können dann verwendet werden, um im Internet nach dem tatsächlichen Standard, RFC, zu suchen.


Eine weitere Ressource könnten die binären Vorlagen des 010-Editors a sein >, die viele verschiedene Dateiformate enthalten und die Sie selbst anpassen oder von Grund auf neu entwickeln können.


Ich kenne ein deutsches Buch namens Dateiformate (Deutsch für: Dateiformate) .


Wikipedia - Liste der Dateiformate enthält viele Links mit Informationen zu bestimmten Dateiformaten

Wenn dies die Antwort wäre, wäre die Frage nicht ein Duplikat von [this] (http://reverseengineering.stackexchange.com/questions/324/how-should-i-determine-the-format-of-this-audio- Datei)? Ich denke, er möchte eine Datenbank mit Spezifikationen von Dateiformaten. Nicht nur magische Zahlen.
Genau. Ihre Antwort ist nützlich, aber keine Antwort auf die Frage. Ich kenne das Dateiformat, ich muss Informationen über dieses Format haben - wie zum Beispiel die Struktur der Datei.
Du hast recht. Irgendwie hat die Frage falsch interpretiert. Ich erinnerte mich nur daran, dass ich in der "Bibliothek" meines lokalen Hackerspace ein Buch mit vielen Dateiformaten gesehen habe. Es ist ein deutsches Buch, aber vielleicht kann jemand die englische Version finden. Ich habe meine Antwort aktualisiert.
#3
+10
RobotHumans
2013-04-04 21:21:09 UTC
view on stackexchange narkive permalink

Ich mag es, wenn file den Dateityp aus der Header-Magie und Wotsit für Standarddateiformate / Dokumentation / umgekehrte Dateiformatstrukturen von anderen Personen bestimmt.

Fileformat.info wurde als weitere Ressource für diejenigen vorgeschlagen, die Wotsit nicht mögen oder das Gefühl haben, dass es veraltet ist.

Wotsit ist keine wirklich gute Wahl: Probleme beim Herunterladen (jetzt in Kraft!), Schlecht organisierte Sammlung.
@user539484: Wenn Ihnen die Organisation nicht gefällt, verwenden Sie die Operatoren "site:" oder "inurl:" einer bestimmten Suchmaschine mit G, um ein erweitertes Suchwerkzeug zu haben.
@0xC0000022L, mag es von etwas Hilfe bei `wotsit.org` ... Es ist in den 1990ern festgefahren. Die Sammlung `fileformat.info` ist für den Leser fast genauso breit und viel freundlicher. Um zu demonstrieren, dass Frustration durch Wotsit verursacht werden kann, würde ich einen Versuch vorschlagen, neue ausführbare Veröffentlichungen aus der Wotsit-Sammlung zu erhalten.
@user539484 - Warum nicht einfach hinzufügen? Die anderen Antworten geben Ihnen überhaupt keine Ressource. Nur "hier ist ein Werkzeug, das funktioniert".
@Call me V, fileformat.info wurde bereits aufgelistet. Ich benutze auch Wikipedia, manchmal sind ihre Artikel zum Dateilayout überraschend gut und technisch.
#4
+10
Paul Wheatley
2013-04-08 21:00:57 UTC
view on stackexchange narkive permalink

Das Wiki Löst das Dateiformatproblem deckt eine ganze Reihe dunkler Formate ab und es lohnt sich zu prüfen, ob Wikipedia den Job nicht für Sie erledigt. Es ist auch ein guter Ort, um sehr detaillierte oder undurchsichtige Dinge beizutragen, die Wikipedia möglicherweise für unumgänglich hält.

Möglicherweise finden Sie Hilfe oder Ratschläge von der Community für Bibliothek und Archivierung digitaler Aufbewahrung, die Probleme dieser Art aufgegriffen hat seit ein paar Jahren. Die Open Planets Foundation ist ein guter Anfang. Insbesondere sammelt die Community (mit der ich zusammenarbeite) Beispiele für schwierige oder beschädigte Dateiformate auf einem Github-basierten Format Corpus. Ein Beitrag dazu kann hilfreich sein, um Ratschläge von Experten zu erhalten, und dies hilft natürlich dabei, eine nützliche Ressource für Entwickler digitaler Aufbewahrungswerkzeuge (zum Testen und Validieren) zu entwickeln. Dateien müssen jedoch CC0 sein!

Der andere Weg, um weitere Informationen zu erhalten, ist die Community für digitale Forensik. Die National Software Reference Library verfügt beispielsweise über einige nützliche Ressourcen, die Ihnen am Rande Ihrer Herausforderung helfen können.

#5
+7
Denis Laskov
2013-04-04 13:33:10 UTC
view on stackexchange narkive permalink

Wenn ich das richtig verstehe, müssen Sie die Datei identifizieren? Zunächst einmal - die Erweiterung ist keine 100% ige Garantie dafür, dass die Datei so ist, wie sie vorgibt. Sie können binary.dll einfach in binary.dat oder binary.hhh umbenennen und trotzdem eine Dateizuordnung erstellen oder als DLL laden.

Um eine Datei zu identifizieren, können Sie TrID verwenden von Marco Pontello.

Außerdem ist der Hex-Editor eine praktische Möglichkeit, Streams und alle Arten von Dumps zu untersuchen.

Wenn Sie die Datei identifizieren, hilft Ihnen Google dabei, den richtigen Weg zu finden um \ open \ zu bearbeiten, führen Sie die Datei aus.

Vielen Dank, dass Sie von TrID erzählt haben. Ich wusste nichts über ein so großartiges Programm :)
Immer willkommen, Jake :)
Vielen Dank für Ihre Antwort, aber ich muss die Datei nicht identifizieren. Ich kenne das Format bereits (nehmen wir an, dass die Erweiterung vorerst richtig ist), benötige aber Informationen zu diesem Format - zum Beispiel, wie die Datei aufgebaut ist.
Dann hilft Ihnen Google, wie gesagt, dabei, den richtigen RFC oder die richtigen Details pro Dateiformat zu finden. Wie für .DLL - es ist fast ähnlich wie .EXE aufgebaut, mit Ausnahme des Exportteils des PE-Headers.
#6
+6
alexanderh
2013-04-08 19:12:32 UTC
view on stackexchange narkive permalink

Schauen Sie sich das Projekt Hachoir an. Es ist genau das, wonach Sie suchen. Die Hachoir-Subdatei ist großartig, da Sie ihr einen Dateistream übergeben können und alle eingebetteten Dateitypen, die Größe (falls berechnet) und deren Versatz identifiziert werden können. Hachoir und dd sind zwei meiner Lieblingswerkzeuge zum Schnitzen von Dateien aus Datenströmen. Wenn Sie Ubuntu Typ sudo apt-get install hachoir ausführen, führen Sie hachoir-subfile <file_stream> aus.

Wenn Sie etwas tiefer in den Stream eintauchen müssen, können Sie hachoir-urwid verwenden. Die Datei wird in bekannte Strukturen aufgeteilt.

Ich sehe nicht, wo Hachoir Informationen über ein bestimmtes Format gibt. Es ist nur eine Dateikennung.
[Haftungsausschluss: Ich bin ein Hachoir-Entwickler.] Hachoir analysiert Dateien in verschiedenen bekannten Formaten, um eine Ansicht des Dateiinhalts sowie Beschreibungen zur Identifizierung der einzelnen Felder in der Datei anzuzeigen. Hachoirs Ziel ist es, eine Datei bis auf die Bitebene zu verstehen. Hachoir wird also viel mehr als nur zur Identifizierung von Dateien verwendet - es kann Feldextraktionen und Feldänderungen durchführen und liefert Textbeschreibungen für jedes Feld in der Datei.
#7
+5
Robert Mason
2013-04-08 18:20:02 UTC
view on stackexchange narkive permalink

Wie in vielen Dingen ist Wikipedia die Antwort, wenn Sie weitere Informationen benötigen. Es enthält nur detaillierte Informationen für einige Formate, enthält jedoch normalerweise Links zu detaillierteren technischen Beschreibungen der Formate. Sie müssen erraten, unter welchem ​​Artikel sich das Dateiformat befinden würde, aber in vielen Fällen finden Sie gute Informationen zu (zumindest) vielen der gängigsten Formate. Es ist nicht ideal - vielleicht wäre es ein nützliches Projekt, ein neues "Dateiformat" -Wiki zu erstellen - aber es enthält eine anständige Menge an Informationen.

Es ist alles andere als eine ideale Quelle für diese Art von Daten In Bezug auf Ressourcen an einem Standort ist dies eine der besseren Optionen und sicherlich ein guter Ausgangspunkt.

Einige Beispiele:

#8
+3
Jake Badlands
2013-04-04 13:02:32 UTC
view on stackexchange narkive permalink

Ich befürchte, dass es zu diesem Thema noch keine Website gibt :(
Nach meiner Erfahrung ist die Situation, in der Sie die Datei haben, aber ihren Typ nicht kennen
, nicht oft, aber wenn es passiert, kann es passieren Das Lösen ist ärgerlich und zeitaufwändig.
Grundsätzlich müssen Sie den Hex-Editor verwenden, um Zeichen zu erkennen, die Ihnen einen Hinweis geben könnten,
und Beispieldateien mit vermuteten Dateitypen herunterladen, um sie zu analysieren und Ähnlichkeiten zu finden.
Dieser Ansatz funktioniert in den meisten Fällen bei mir.

Entschuldigung, ich war nicht klar. Ich kenne den Dateityp (basierend auf der Erweiterung), benötige jedoch Informationen zum Dateiformat, um ihn lesen oder ausführen zu können.
@CamilStaps Wenn ich das richtig verstanden habe, sprechen Sie über eine solche Situation, wenn Sie eine Datei (z. B. DLL) haben, aber nicht wissen, wozu sie dient (z. B. welches Programm sie verwendet)?
Ja, das, und was ist der Zweck dieser spezifischen Datei. So möchte ich zum Beispiel sehen, was diese DLL-Datei tut. Daher benötige ich Informationen zum Dateiformat, und [this] (http://filext.com/file-extension/DLL) bietet nicht genügend Informationen.
Um zu wissen, was die DLL-Datei tut, müssen Sie sie wie jede andere Binärdatei zerlegen. :) :)
Die @CamilStaps-DLL-Datei ist eine komplexe Datenstruktur, die eine Reihe einfacherer Datenstrukturen wie Code und Ressourcen in beliebiger Kombination enthält. Die Architektur dieser Datenstruktur hängt vom Programmierer ab, der sie erstellt hat, als sein Programm sie benötigte.
@CamilStaps Dasselbe mit vielen verschiedenen Dateitypen, die Ihre Frage aufwerfen. Es scheint hilfreich zu sein, in dieser komplexen Datenstruktur nach einfacheren Datenstrukturen zu suchen und diese dann zu analysieren. Während Sie diesen Prozess durchlaufen, werden Sie allmählich mehr und mehr über diese Datei informiert.
Ich habe nur DLL als Beispiel erwähnt. Ich würde gerne wissen, ob es einen Standardort gibt, an den man geht, wenn man detaillierte Informationen über ein Dateiformat benötigt.
#9
+3
Laurent Clévy
2013-04-06 15:36:31 UTC
view on stackexchange narkive permalink

Informationen zu Multimedia-Formaten: http://wiki.multimedia.cx/index.php?title=Main_Page

Signsrch findet Muster in einer Datei: http : //aluigi.altervista.org/mytoolz.htm, wie binwalk: http://code.google.com/p/binwalk/

Informationen zum Amiga-Dateiformat finden Sie hier: http: //lclevy.free.fr/amiga/formats.html, Informationen zum Canon Raw v2-Format finden Sie hier: http: //lclevy.free.fr/cr2/,MO3 format ( komprimiertes Modul): http: //lclevy.free.fr/mo3/
#10
+2
Euan
2013-04-05 10:44:59 UTC
view on stackexchange narkive permalink

DROID aus dem National Archives of the UK ist auch nützlich, um Dateiformate zu identifizieren.

Ich habe das Format bereits identifiziert. Ich benötige Informationen zu diesem Format.
DROID-Links zur Pronomendatenbank (http://www.nationalarchives.gov.uk/PRONOM/Default.aspx). Wikidata ist eine weitere Option, z. https://www.wikidata.org/wiki/Q2141903
#11
+2
nst
2013-04-05 14:19:43 UTC
view on stackexchange narkive permalink

Die meisten Dateiformate haben Header, z. B. PK 0x03 0x04 für Zip-Dateien oder 0x89 PNG 0x0D 0x0A 0x1A 0x0A für PNG-Dateien.

Also Meistens müssen Sie nur die ersten Bytes lesen, um das Format der Datei zu kennen.

Auf http://www.fileformat.info finden Sie zahlreiche Beschreibungen des Dateiformats /format/all.htm

#12
  0
Alexandre Dumont
2016-08-26 03:01:39 UTC
view on stackexchange narkive permalink

Dies ist das Tool, das ich verwendet habe, wenn ich ein Dateiformat oder Dateien in einem (großen) Speicherauszug erkennen musste. Es verfügt über eine große Signatur-BD-Datei, zu der Sie / Personen beitragen können.

Signsrch 0.2.4 (Signsrch)

Tool zum Suchen von Signaturen Innerhalb von Dateien, äußerst nützlich bei der Umkehrung des Engineerings, um herauszufinden oder eine erste Vorstellung davon zu haben, welcher Verschlüsselungs- / Komprimierungsalgorithmus für ein proprietäres Protokoll oder eine proprietäre Datei verwendet wird. Es kann unzählige Komprimierungs-, Multimedia- und Verschlüsselungsalgorithmen und viele andere Dinge wie bekannte Zeichenfolgen und Anti-Debugging-Code erkennen, die auch manuell hinzugefügt werden können, da alles auf einer zur Laufzeit gelesenen und einfach zu ändernden Textsignaturdatei basiert. unterstützt Multithreading, das Scannen von Ordnern mithilfe von Platzhaltern, das Scannen von Prozessen, das Konvertieren der Offsets für ausführbare Dateien in Speicher-Offsets, das Laden von benutzerdefinierten Signaturdateien und deren automatische Überprüfung auf Fehlervermeidung sowie das automatische Auffinden der Anweisungen, die auf die gefundenen Signaturen verweisen (z. B. "Verweise suchen" "von Ollydbg) und das Starten einer ausführbaren Datei, bei der ein INT3-Byte am gewünschten Speicheroffset platziert wird (z. B. eines der mit der Option -F abgerufenen, sehen Sie sich die Videoeinstellung als Beispiel an). Das Tool unterstützt 8, 16, 32 und 64 Bit, Float und Double sowie automatische CRC-Tabellenerstellung und Zeichenfolgen im C-Stil.

Quelle: http://aluigi.altervista.org /mytoolz.htm

Als das OP fünf ähnliche Antworten kommentierte: Keine Notwendigkeit zur Identifizierung, er weiß bereits, was der Dateityp ist.
Es geht darum, anderen zu helfen, die später möglicherweise die gleiche Frage haben.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...