FileAnalyzer

Skriptsteuerung des FileAnalyzers

Viele Funktionen des FileAnalyzers können alternativ zur Nutzung der grafischen Benutzeroberfläche auch über Kommandozeilenbefehle gesteuert werden. Dazu gehören zum Beispiel das Auslesen einzelner Werte aus der Dateistruktur, der Vergleich von ganzen Chunks oder einzelnen Eigenschaften mehrerer Dateien, die Suche nach Bytesequenzen, Zahlen oder Strings sowie die Suche innerhalb der Dateistruktur. Damit ist es möglich, den FileAnalyzer zu automatisieren und in andere Programme oder Skripte einzubinden.

Wie dies im einzelnen funktioniert und welche Parameter Ihnen zur Verfügung stehen, möchten wir uns Schritt für Schritt in diesem Tutorial ansehen. Das Tutorial ist in die folgenden Abschnitte eingeteilt:

Allgemeine Grundlagen der Skriptsteuerung des FileAnalyzers

Bevor wir uns die verschiedenen Möglichkeiten der Skriptsteuerung des FileAnalyzers im Detail ansehen, möchten wir zunächst anhand der folgenden zehn Beispielaufrufe, die die verschiedenen Arten von Befehlen und Ausgabearten des FileAnalyzers demonstrieren, das Grundprinzip der Skriptsteuerung dieses Programms verdeutlichen:

FileAnalyzer.exe -cl C:\Schrift.ttf get-val=/head:macStyle.Bold
FileAnalyzer.exe -cl C:\Ordner filter-ext=jpg/jpeg compare=/APP1
FileAnalyzer.exe -cl C:\Icon.ico compare=/Image/ImageDescriptor
FileAnalyzer.exe -cl C:\Bild1.png C:\Bild2.png compare=/IHDR:Width,Height
FileAnalyzer.exe -cl C:\Ordner filter-onlytextfiles=1 search-bytes=0D0A cols=file_name,offset_file colh=0
FileAnalyzer.exe -cl C:\Ordner search-subdirs=0 filter-name=[0-9]+ filter-name-regex=1 search-uint32be=1
FileAnalyzer.exe -cl C:\Ordner search-str=abc search-enc=utf16le search-bom=1 format=csv
FileAnalyzer.exe -cl C:\Ordner search-val=7 save=C:\Ergebnis.xlsx openfile=1
FileAnalyzer.exe -cl C:\Ordner filter-ext=wav search-prop=Channels search-val=2
FileAnalyzer.exe -cl C:\Ordner filter-ext=exe search-path=/pe_optional_header search-prop=OSVersion search-val=4.0-6.1 search-val-cop=between

Die generelle Vorgehensweise ist immer die gleiche: Zunächst versetzen wir den FileAnalyzer mit dem Parameter "-cl" in den Command Line Mode, anschließend wählen wir Dateien aus, definieren eine Aktion und geben an, wie das Ergebnis gespeichert oder ausgegeben werden soll.

In den nächsten Abschnitten gehen wir näher auf diese und alle weiteren verfügbaren Parameter ein. Am Ende dieses Tutorials finden Sie darüber hinaus eine Übersichtstabelle aller Parameter. Diese Tabelle enthält eine Kurzbeschreibung der Parameter inklusive ihrer Default-Werte. Diese werden verwendet, falls der betreffende Parameter nicht explizit angegeben wird.

Auswahl von Dateien

Wenn Sie einzelne Dateien mit dem FileAnalyzer über die Befehlszeile verarbeiten möchten, können Sie dem FileAnalyzer einfach deren Pfade übergeben. Im folgenden Beispiel lesen wir auf diese Weise die Eigenschaft "macStyle.Bold" aus dem Header einer Schriftdatei aus:

FileAnalyzer.exe -cl C:\Schrift.ttf get-val=/head:macStyle.Bold

Wie der nächste Beispielaufruf zeigt, können Sie auch mehrere Dateipfade gleichzeitig übergeben. Dieses Mal vergleichen wir die Werte des kompletten Headers zweier Schriftdateien miteinander:

FileAnalyzer.exe -cl C:\Schrift1.ttf C:\Schrift2.ttf compare=/head

Statt jede Datei einzeln anzugeben, können wir alternativ auch den Pfad eines Ordners übergeben, um Dateien aus diesem Ordner zu verarbeiten. Mehr dazu im nächsten Abschnitt.

Auswahl von Dateien aus Ordnern

Wenn wir sehr viele Dateien oder eine unbestimmte Sammlung von Dateien mit dem FileAnalyzer verarbeiten möchten, bietet es sich an, dem FileAnalyzer den Pfad zu einem Ordner oder auch mehreren Ordnern gleichzeitig zu übergeben, um gleich alle Dateien aus den betreffenden Ordnern oder eine Auswahl daraus zu verarbeiten.

Die Pfade der Ordner können in der gleichen Weise angegeben werden wie die Pfade von Dateien, wie wir es im letzten Abschnitt gesehen haben. Also zum Beispiel wie in unserem nächsten Aufruf, in dem wir die im Chunk "APP1" gespeicherten Exif-Daten mehrerer JPG-Dateien miteinander vergleichen möchten:

FileAnalyzer.exe -cl C:\Bilder compare=/APP1

Dieser Aufruf vergleicht das Element "APP1" aller Dateien, die im Ordner "C:\Bilder" gespeichert sind.

Dateipfade und Ordnerpfade können auch nach Belieben gemischt werden. Das nächste Beispiel vergleicht beispielsweise die Exif-Daten des Bildes "C:\Bild.jpg" mit den JPG-Bildern, die im Ordner "C:\Bilder" gespeichert sind:

FileAnalyzer.exe -cl C:\Bild.jpg C:\Bilder compare=/APP1

Natürlich könnten unsere Ordner auch andere Dateien außer JPG-Bilder enthalten, für die der APP1-Vergleich keinen Sinn ergibt. Für diesen Fall stellt der FileAnalyzer Ihnen einige Filter zur Verfügung, mit denen Sie die verarbeiteten Dateien aus einem Ordner auf eine bestimmte Auswahl begrenzen können. In unserem Fall könnten wir zum Beispiel den Filter für die Dateiendung "filter-ext" verwenden:

FileAnalyzer.exe -cl C:\Ordner filter-ext=jpg compare=/APP1

Dieser Aufruf würde nur noch die Dateien mit der Dateiendung "jpg" aus dem Ordner "C:\Ordner" verarbeiten. Da für JPG-Dateien auch die Endung "jpeg" üblich ist, könnten wir zusätzlich auch noch diese Dateiendung angeben:

FileAnalyzer.exe -cl C:\Ordner filter-ext=jpg/jpeg compare=/APP1

Mehrere Dateiendungen können entsprechend mit einem Komma getrennt aufgelistet werden. Wenn alle Bilder in Ihrem Ordner JPG-Dateien sind, könnten Sie alternativ auch den Filter "filter-type=image" verwenden, mit dem Sie nach dem allgemeinen Dateitypen statt einer bestimmten Dateiendung filtern können. Verfügbar sind die Optionen "image", "video", "text", "document", "spreadsheet", "website", "font", "executable", "archive", "playlist", "sourcecode" und "other".

Zusätzlich oder alternativ können Sie auch nach dem Namen der Dateien filtern. Dazu können Sie den Filter "filter-name" verwenden, der mit den Parametern "filter-name-matchcase" (Groß- und Kleinschreibung beachten), "filter-name-matchall" (gesamter Dateiname muss übereinstimmen) sowie "filter-name-regex" (regulärer Ausdruck) kombiniert werden kann. Schauen wir uns auch dazu ein Beispiel an:

FileAnalyzer.exe -cl C:\Ordner filter-ext=jpg filter-name=2000 compare=/APP1
FileAnalyzer.exe -cl C:\Ordner filter-name=[0-9]+ filter-name-regex=1 compare=/APP1
FileAnalyzer.exe -cl C:\Ordner filter-name=[0-9]+ filter-name-regex=1 filter-name-matchall=1 compare=/APP1
FileAnalyzer.exe -cl C:\Ordner filter-name=abc filter-name-matchcase=1 compare=/APP1
FileAnalyzer.exe -cl C:\Ordner filter-name=abc/def compare=/APP1

Der erste Aufruf findet alle Dateien mit der Dateiendung "JPG", deren Namen die Zahl "2000" enthält. Im zweiten Aufruf sagen wir dem FileAnalyzer mit "filter-name-regex=1", dass er das Suchwort "[0-9]+" als regulären Ausdruck interpretieren soll. Gefunden werden also alle Dateien, die mindestens eine beliebige Ziffer enthalten. Nehmen wir wie im dritten Beispiel den Parameter "filter-name-matchall=1" hinzu, reicht es nicht mehr aus, dass der Dateiname bloß Zahlen enthält. Stattdessen muss jetzt der gesamte Dateiname dem Suchbegriff entsprechen, gefunden werden also nur Dateinamen die ausschließlich aus Ziffern bestehen (ausgenommen der Dateiendung). Als nächstes suchen wir nach allen Dateien, die den kleingeschriebenen Text "abc" enthalten. Würden wir "filter-name-matchcase=1" weglassen, würde unabhängig von der Schreibweise gesucht und es würden zum Beispiel auch Dateien, deren Dateinamen den Text "ABC" enthalten, gefunden. Würden wir "filter-name-matchall=1" hinzufügen, würden nur Dateien mit dem Namen "abc" gefunden werden. Zuletzt schauen wir uns an, wie wir nach mehrere Namen gleichzeitig suchen können. Dieser Aufruf findet alle Dateien, deren Namen entweder "abc" oder "def" enthält. Natürlich können wir auch diese Mehrfachsuche mit allen verfügbaren Optionsparametern wie "filter-name-matchall" oder "filter-name-regex" kombinieren.

Ein weiterer wichtiger Parameter im Zusammenhang mit der Übergabe von Ordnern an den FileAnalyzer ist der Parameter "search-subdirs". Mit diesem Parameter geben Sie an, ob auch Unterordner des übergebenen Ordners durchsucht werden sollen. Standardmäßig ist das Durchsuchen von Unterordnern aktiv, was dem Parameter "search-subdirs=1" entspricht. In allen unseren bisherigen Beispielen dieses Abschnitts würden also auch Dateien aus einem Ordner wie "C:\Ordner\Order2" verarbeitet werden. Wenn Sie dies nicht möchten, können Sie den Parameter "search-subdirs=0" übergeben, wie das nächste Beispiel demonstriert:

FileAnalyzer.exe -cl C:\Ordner search-subdirs=0 filter-ext=jpg compare=/APP1

Die einzelnen Filter können beliebig miteinander kombiniert werden und es spielt keine Rolle, in welcher Reihenfolge Sie die Filter angeben. Eine Liste der in diesem Abschnitt vorgestellten und weiterer Filter finden Sie in der Übersichtstabelle aller Parameter am Ende dieses Tutorials.

Das Pfad-Konzept

Bevor wir uns das Auslesen, Vergleichen und Suchen von Eigenschaften und Werten aus Dateistrukturen ansehen, möchten wir kurz darauf eingehen, in welcher Weise wir die Dateiteile (Chunks), in denen die Eigenschaften und Werte gespeichert sind, im FileAnalyzer ansprechen können. Der FileAnalyzer versteht die innere Struktur von Dateien ähnlich wie eine Ordnerstruktur, in der sich jeder Chunk eindeutig über einen Pfad auswählen lässt.

Als Beispiel möchten wir uns das ISO Base Media File Format ansehen, ein Containerformat, mit dem zum Beispiel Dateien der Formate MP4, M4A, MOV, 3GP, HEIC, HEIF, AVIF oder CR3 gespeichert sind. Eine MP4-Videodatei oder eine M4A-Audiodatei enthält auf der ersten Ebene typischerweise Chunks wie die File Type Box (ftyp), den Media Data Container (mdat) und die Movie Box (moov). Diese Chunks können wir entsprechend über den Pfad /ftyp, /mdat oder /moov ansprechen.

Wenn wir nun eine Eigenschaft wie die Spieldauer dieser Dateien auslesen möchten, müssen wir tiefer in die Dateistruktur eintauchen. Die Spieldauer von MP4-Videos oder M4A-Audios ist im Track Header (tkhd) hinterlegt. Der Track Header befindet sich im Track Container (trak), der sich wiederum innerhalb der Movie Box (moov) befindet. Da sich die Movie Box auf der ersten Ebene befindet sind sind wir fertig und es ergibt sich entsprechend der Pfad /moov/trak/tkhd, den wir für unsere Aufgabe verwenden können.

Während Audiodateien typischerweise nur einen Audio-Track enthalten, können Videodateien sowohl eine Audiospur als auch eine Videospur enthalten. MP4-Dateien, die sowohl einen Audio-Track als auch einen Video-Track umfassen, enthalten daher unterhalb ihrer Movie Box (moov) gleich zwei Track Container, die beide den gleichen Namen "trak" haben. In diesem Fall ist unser Pfad "/moov/trak/tkhd" natürlich nicht mehr eindeutig. Um den Pfad eindeutig zu machen, nummeriert der FileAnalyzer solche Pfade mit einem Index beginnend bei 0. Der erste Pfad einer solchen Datei wäre demnach eindeutig über "/moov/trak[0]/tkhd" zu erreichen, der zweite über "/moov/trak[1]/tkhd".

Wenn wir in der Suchfunktion des FileAnalyzers also einen der beiden Pfade mit Index verwenden, suchen wir nur in dem jeweiligen Pfad und nicht in beiden. Verwenden wir dagegen den Pfad ohne Index (hier also "/moov/trak/tkhd"), würde die Suche sowohl den Audio-Track-Header als auch den Video-Track-Header durchsuchen. Wir können mit dem Weglassen oder der Angabe eines Indexes also steuern, ob wir einen bestimmten oder alle Chunks des jeweiligen Typs meinen.

Natürlich müssen Sie nicht auswendig wissen, welche Eigenschaften in welchem Pfad eines Dateiformats gespeichert sind. Öffnen Sie eine Datei Ihrer Wahl einfach im FileAnalyzer und stöbern Sie mithilfe der Baumstruktur auf der linken Seite des Programms in der Datei oder nutzen Sie die Suchfunktionen um bestimmte Eigenschaften zu finden. Wenn Sie ein Element innerhalb der Baumstruktur ausgewählt haben, wird der jeweilige Pfad dieses Elementes unterhalb der Baumstruktur angezeigt. Wenn Sie mit der rechten Maustaste auf das Element klicken, lässt sich der Pfad darüber hinaus bequem in die Zwischenablage kopieren, so dass Sie den Pfad nicht manuell eingeben müssen.

Das ist alles, was Sie zum Pfad-Konzept im FileAnalyzer wissen sollten. Im nächsten Abschnitt greifen wir das Beispiel mit dem Auslesen der Spieldauer von MP4- und M4A-Dateien erneut auf und schauen uns an, wie das Auslesen über einen Skriptaufruf konkret aussehen kann.

Einzelne Werte auslesen

Einzelne Werte bestimmter Eigenschaften lassen sich über den Parameter "get-val" aus der Dateistruktur auslesen. Der Name der Eigenschaft sowie der Pfad, in dem die Eigenschaft gespeichert ist, können in der folgenden Form angegeben werden:

get-val=/pfad:eigenschaft

Im folgenden Beispiel möchten wir die Spieldauer einer M4A-Audiodatei mit dem "get-val"-Parameter auslesen. Eine M4A-Audiodatei basiert auf dem ISO Base Media File Format, in dem die Spieldauer im Pfad "/moov/trak/tkhd" unter der Eigenschaft "Duration" gespeichert ist (falls Sie bisher nicht alle Teile dieses Tutorials gelesen haben: wie wir auf diesen Pfad gekommen sind und was er bedeutet erfahren Sie im Abschnitt zuvor, wie wir Dateien auswählen hier). Wir können für unser Anliegen also folgenden Aufruf konstruieren:

FileAnalyzer.exe -cl C:\Audio.m4a get-val=/moov/trak/tkhd:Duration

Theoretisch könnten wir den gleichen Aufruf auch für Videodateien des Formats MP4 verwenden, die ebenfalls auf dem ISO Base Media File Format basieren. Videos können aber sowohl einen Audio-Track als auch einen Video-Track enthalten, sodass dieser Aufruf für diesen Fall zwei Spieldauern ausgeben würde, eine für jeden in der Datei enthaltenen Track. Wollen wir nur eine Spieldauer haben (die Spieldauern der Audio- und Video-Spur weichen typischerweise wenn überhaupt nur gering voneinander ab), reicht es, nur den ersten Track auszulesen. Wir geben für "trak" also einen Index an und verwenden "trak[0]", um den ersten trak-Chunk anzusprechen (auch dazu mehr im Abschnitt zuvor):

FileAnalyzer.exe -cl C:\Audio.mp4 get-val=/moov/trak[0]/tkhd:Duration

Beide dieser Aufrufe geben uns einfach nur den Wert der Spieldauer beziehungsweise Duration aus, da dies der Default-Output für den "get-val"-Parameter ist. Falls wir mehr Informationen benötigen, können wir zum Beispiel über den Parameter "cols" weitere Spalten für die Ausgabe definieren, wie das nächste Beispiel zeigt:

FileAnalyzer.exe -cl C:\Videos filter-ext=mp4 get-val=/moov/mvhd:Duration cols=file_name,offset_file,value colh=1

Mit diesem Aufruf lesen wir die Spieldauer aller MP4-Dateien aus dem Ordner "C:\Videos" aus und erzeugen eine Tabelle, die die Spalten Dateiname (file_name), Offset des Werts innerhalb der Datei (offset_file) sowie den Werte selber (value) enthält. Zusätzlich übergeben wir den Parameter "colh=1" mit dem wir angeben, dass auch Spaltenüberschriften in die Tabelle mit aufgenommen werden sollen. Wenn wir den Default-Wert der beiden Parameter cols und colh nicht in dieser Weise überschreiben, werden standardmäßig für "get-val" die Defaults "cols=value" sowie "colh=0" verwendet, wodurch, wie bereits erwähnt, nur der angefragte Wert ausgegeben wird. Mehr über die Definition von Spalten und die anderen zur Verfügung stehenden Spaltenparameter erfahren Sie im Abschnitt über Spalten und Spaltenüberschriften.

Übrigens haben wir in diesem Aufruf anstelle von "/moov/trak[0]/tkhd:Duration" den Pfad "/moov/mvhd:Duration" verwendet. Neben den beiden Angaben der Dauer in den Headern der jeweiligen einzelnen Tracks (tkhd), befindet sich nämlich im Movie Header (mvhd) eine dritte, allgemeine Spezifikation der Spieldauer der Datei. In den ersten Beispielen sind wir jedoch bewusst den komplizierteren Weg gegangen, um die Verwendung der Indices zu demonstrieren.

Chunks mehrerer Dateien miteinander vergleichen

Wenn Sie die Eigenschaften eines Chunks mit den Eigenschaften des gleichen Chunks anderer Dateien vergleichen möchten, können Sie dies mit der Hilfe des compare-Parameters tun, dem Sie einfach den Pfad des zu vergleichenden Chunks übergeben können.

Mit dem folgenden Aufruf möchten wir beispielsweise den "PE Optional Header" aller EXE-Anwendungen (basierend auf dem Portable Executable Format) aus dem Ordner "C:\Ordner" miteinander vergleichen:

FileAnalyzer.exe -cl C:\Ordner filter-ext=exe compare=/pe_optional_header

Mit diesem Aufruf erwartet uns eine Ausgabe, die genauso aussieht wie die von der Vergleichsfunktion erzeugte Vergleichstabelle in der grafischen Benutzeroberfläche des FileAnalyzers. Die Ausgabetabelle enthält entsprechend die Spalten Dateiname (file_name), Pfad des Chunks (chunk_path), Byte-Offset des Chunks innerhalb der Datei (chunk_offset), alle Werte der Eigenschaften des Chunks als jeweils eigene Spalten (values) sowie den Dateipfad der jeweiligen durchsuchten Datei. Wenn Sie andere Spalten benötigen, können Sie diese über die Spaltenparameter konfigurieren, die im Abschnitt über die Spalten und Spaltenüberschriften der Ausgabe erläutert werden.

Chunks innerhalb einer Datei miteinander vergleichen

Neben dem Vergleich gleicher Chunks mehrerer verschiedener Dateien kann die Vergleichsfunktion auch für den Vergleich gleicher Chunks innerhalb einer Datei verwendet werden. Zum Beispiel für den Vergleich der verschiedenen Bilder unterschiedlicher Größe, die in einem Icon gespeichert sein können:

FileAnalyzer.exe -cl C:\Icon.ico compare=/image/imagedescriptor

Wir erhalten durch diesen Aufruf eine Übersichtstabelle, in der die Informationen der Einzelbilder wie Breite, Höhe, BitCount oder Byte-Offset der einzelnen Bilder des Icons "C:\Icon.ico" gelistet sind.

Wichtig ist, dass wir für diesen Vergleich den allgemeinen Pfad ohne Bild-Index (hier "/image/imagedescriptor") statt den Pfad der einzelnen Bilder (wie "/image[0]/imagedescriptor" für Bild 1, "/image[1]/imagedescriptor" für Bild 2 und so weiter) verwenden, um nicht nur einen sonderen alle Chunks der gleichen Datei für unseren Vergleich auszuwählen. Wenn Sie stattdessen "/image[0]/imagedescriptor" schreiben würden und gleichzeitig mehrere Bilder auswählen würden, könnten Sie damit das jeweils erste Bild aller ausgewählten Bilder miteinander vergleichen. Mehr zum Hintergrund der Pfad-Auswahl erfahren Sie im Abschnitt über das Pfad-Konzept.

Der "PE Optional Header" aus unserem ersten Beispiel für die Verwendung des compare-Parameters aus dem letzten Abschnitt enthält Dutzende von Eigenschaften, der "ImageDescriptor" aus unserem zweiten Beispiel in diesem Abschnitt knapp über 10. Wenn Sie nicht an allen Eigenschaften eines Chunks interessiert sind, können Sie neben den sonstigen, über cols konfigurierbaren, Spalten, auch Einfluss auf die Eigenschaften-Spalten der Ergebnistabelle nehmen indem Sie nur einzelne Eigenschaften für den Vergleich auswählen. Wie dies funktioniert erfahren Sie im nächsten Abschnitt.

Einzelne Eigenschaften mehrerer Dateien vergleichen

In den letzten beiden Abschnitten haben wir uns angesehen, wie wir alle Eigenschaften eines Chunks mehrerer Dateien beziehungsweise innerhalb einer Datei miteinander vergleichen können. Chunks können jedoch sehr viele Eigenschaften enthalten, die uns vielleicht gar nicht alle interessieren. Aus diesem Grund bietet der FileAnalyzer auch die Möglichkeit, nur einzelne Eigenschaften eines Chunks für einen Vergleich auszuwählen. Dafür müssen wir dem Pfad lediglich die uns interessierende Eigenschaft in der folgenden Form anhängen:

compare=/pfad:eigenschaft

Interessieren uns mehrere Eigenschaften, können wir diese mit einem Komma getrennt auflisten:

compare=/pfad:eigenschaft1,eigenschaft2,eigenschaft3,...

In dem nächsten Beispielaufruf greifen wir noch einmal das erste Beispiel aus dem letzten Abschnitt auf. Dieses Mal möchten wir aber nur die Eigenschaft "OSVersion" (minimale unterstützte Windows-Version der Portable Executable) mit den anderen EXE-Dateien aus dem spezifizierten Ordner vergleichen:

FileAnalyzer.exe -cl C:\Ordner filter-ext=exe compare=/pe_optional_header:OSVersion

Als Ergebnis erhalten wir wieder eine Tabelle wie wir sie bereits im letzten Abschnitt beschrieben haben. Allerdings mit der Ausnahme, dass diese Tabelle nicht mehr alle Eigenschaften des PE Optional Headers enthält sondern nur noch die Eigenschaft "OSVersion". Natürlich können wir auch in diesem Fall die sonstigen Spalten dieser Tabelle nach unseren eigenen Bedürfnissen anpassen, in der gleichen Weise wie wir es uns im letzten Abschnitt angesehen haben.

Auch für die Auswahl mehrerer Eigenschaften möchten wir uns ein Beispiel ansehen:

FileAnalyzer.exe -cl C:\Bilder filter-ext=bmp compare=/infoheader:Width,Height

Dieser Aufruf vergleicht die Breite und Höhe aller Bitmap-Dateien mit der Dateiendung BMP (filter-ext=bmp) aus dem Ordner "C:\Bilder". Breite und Höhe von Bitmaps sind im Chunk "/infoheader" in den Eigenschaften "Width" und "Height" hinterlegt. Deswegen haben wir den compare-Parameter mit "/infoheader:Width,Height" aufgerufen. Würden wir nur "compare=/infoheader" schreiben, würde unser Vergleich auch alle anderen Eigenschaften des Bitmap-Infoheaders wie zum Beispiel Planes, BitCount, Compression, XPelsPerMeter, YPelsPerMeter oder ColorsUsed enthalten. So bekommen wir aber nur unsere gewünschten Eigenschaften "Width" und "Height".

Suche nach Bytesequenzen

Mit dem Parameter "search-bytes" können Sie beliebige Dateien nach beliebigen Bytesequenzen durchsuchen. Die zu suchenden Bytes können direkt mit dem Parameter angegeben werden:

FileAnalyzer.exe -cl C:\Ordner filter-ext=mkv search-bytes=1F43B675

Mit diesem Aufruf generieren Sie eine Liste aller Vorkommnisse der Bytesequenz "1F 43 B6 75" (Beginn/ElementID eines Matroska-Clusters) innerhalb der MKV-Dateien, die im Ordner "C:\Ordner" gespeichert sind. Standardmäßig enthält die Liste die Spalten Dateiname (file_name), Dateistrukturpfad des Chunks in dem die Bytes gefunden wurden (chunk_path), Eigenschaft und Wert innerhalb der Dateistruktur in der die Bytes gefunden wurden (property und value), Byte-Offset der Bytesequenz innerhalb der Datei (offset_file), Datengröße (datasize) sowie den Pfad der Datei (file_path).

Mit dem Parameter "cols" können Sie diese Default-Spalten Ihrer Ausgabe ändern (mehr dazu im Abschnitt über die Konfiguration von Spalten und Spaltenüberschriften). Der nächste Aufruf listet beispielsweise lediglich den Dateinamen sowie den Byte-Offset (cols=file_name,offset_file) der Bytesequenz "0D 0A" aller Textdateien (filter-onlytextfiles=1) aus dem Ordner "C:\Ordner" ("0D 0A" sind die beiden Bytes des Windows-Zeilenumbruchs CR LF):

FileAnalyzer.exe -cl C:\Ordner filter-onlytextfiles=1 "search-bytes=0D 0A" cols=file_name,offset_file

Dieses Beispiel zeigt auch, dass wir die Bytes zum Zwecke einer besseren Lesbarkeit alternativ auch mit Leerzeichen angeben können. Um klarzumachen, dass das Leerzeichen keinen neuen Parameter einläutet, müssen wir den kompletten Parameter in diesem Fall allerdings in Anführungszeichen setzen.

Wenn Ihre zu suchenden Bytes die Bedeutung einer Zahl oder eines Textes haben sollten, ist es nicht nötig, händisch die erforderliche Bytesequenz für die Suche zu ermitteln. Stattdessen können Sie die Zahl oder den Text auch als solche über Parameter wie search-str oder search-val angeben und dem FileAnalyzer den Rest überlassen. Wie dies funktioniert möchten wir uns in den nächsten Abschnitten dieses Tutorials ansehen.

Suche nach Zahlen

Wenn Sie Dateien nach Zahlen verschiedener Formate durchsuchen möchten, ist es nicht notwendig, die zu suchende Zahl zunächst in ihr Byte-Äquivalent zu konvertieren. Stattdessen können Sie im FileAnalyzer unter Angabe des Zahlenformats auch direkt nach einer bestimmten Zahl suchen. Die Syntax dieses Suchparameters ist die folgende:

search-(u/s)int(8/16/24/32/40/48/56/64)(le/be)=<Zahl>

Nach "search-" geben wir zunächst über "uint" (unsigned) oder "sint" (signed) die Signedness unserer Zahl an. Anschließend erfolgt die Größe in Bits sowie die Endianness ("le" steht für Little Endian, "be" für Big Endian). Wenn wir unseren Parameter auf diese Weise zusammengesetzt haben, folgt die zu suchende Zahl nach dem Gleichheitszeichen.

Mit dem folgenden Aufruf suchen wir beispielsweise nach der 4 Byte (= 32 Bit) großen unsigned Little Endian Zahl "1":

FileAnalyzer.exe -cl C:\Ordner search-uint32be=1

Intern wird der FileAnalyzer diese Angaben in die resultierende Bytesequenze "00 00 00 01" umrechnen und durch diesen Aufruf alle Dateien aus dem Ordner "C:\Ordner" danach durchsuchen.

Ein anderes Beispiel ist der nächste Aufruf, der in der Datei "C:\Datei.dat" nach der signed Zahl "-2" im 8-Byte/64-Bit Little Endian Format sucht, was einer Suche nach der Bytesequenz "FE FF FF FF FF FF FF FF" entspricht:

FileAnalyzer.exe -cl C:\Datei.dat search-sint64be=-2 cols=offset_file

Ohne eine explizite Angabe der gewünschten Spalten werden standardmäßig auch bei der Zahlen-Suche die selben Spalten für die Ausgabe verwendet wie bei der direkten Suche nach Bytesequenzen, die wir uns im Abschnitt zuvor angesehen haben. Wieder lässt sich dieses Verhalten über den Parameter "cols" steuern, über den wir in diesem Aufruf angegeben haben, dass wir nur an dem jeweiligen Byte-Offset der Vorkommnisse interessiert sind.

Ein Problem der Verwendung dieser hier vorgestellten reinen Suche nach Zahlen ist, dass das Format und die Struktur der zu durchsuchenden Datei unberücksichtigt bleibt. Das heißt, dieser Befehl sucht die Zahlen allein auf der Grundlage der Bytes und berücksichtigt nicht, welche Bedeutung die Bytes innerhalb einer Datei / eines Dateiformats haben beziehungsweise ob die Byte-Entsprechung überhaupt im Sinne der gesuchten Zahl innerhalb der Datei verwendet wird. Insbesondere bei Zahlen geringer Byte-Größe kann es sehr schnell passieren, dass die generierten Bytesequenzen in der Datei alles andere bedeuten als die gesuchte Zahl.

Aus diesem Grund sollten Sie die Suche in der Dateistruktur der reinen Suche nach Zahlen auf Byteebene vorziehen, wenn diese möglich ist. Mit der Suche innerhalb der Dateistruktur können Sie über den Parameter "search-val" auch nach Zahlen suchen, die Zahlen werden aber nur dann gefunden, wenn sie auch als solche als Eigenschaft innerhalb der Dateistruktur vorkommen. Darüber hinaus brauchen Sie sich bei dieser Art der Suche über die Datengröße, die Signedness und die Endianness der zu suchenden Zahlen keine Gedanken machen, da sich das Zahlenformat automatisch aus dem Dateiformat ergibt.

Suche nach Strings

Ähnlich wie die Suche nach Zahlen funktioniert auch die String-Suche beziehungsweise die Suche nach Texten über den Parameter search-str im FileAnalyzer. Wenn wir zum Beispiel alle Dateien aus dem Ordner "C:\Ordner" unabhängig von ihrer Dateistruktur nach dem Text "abc" durchsuchen möchten, können wir den FileAnalyzer in folgender Weise aufrufen:

FileAnalyzer.exe -cl C:\Ordner search-str=abc

Intern wird der FileAnalyzer unseren angegebenen String in eine Bytesequenz konvertieren und danach suchen. Wenn wir nichts abweichendes angeben, wird der String standardmäßig in die Kodierung UTF-8 ohne Byte Order Mark konvertiert. Unser String "abc", der nur Zeichen aus dem ASCII-Zeichensatz enthält, wird entsprechend zu Bytesequenzen "61 62 63".

Möchten wir einen String in einer anderen Kodierung oder mit einleitender Byte Order Mark suchen, können wir die Parameter "search-enc" und "search-bom" für unsere Angaben verwenden. Zum Beispiel so:

FileAnalyzer.exe -cl C:\Ordner search-str=abc search-enc=utf16le search-bom=1

Hier möchten wir nach dem UTF-16 Little Endian kodierten String "abc" mit Byte Order Mark (BOM) suchen. In UTF-16-Little-Endian-Bytes entspricht "abc" der Bytesequenz "61 00 62 00 63 00". Die Byte Order Mark für UTF-16 besteht darüber hinaus aus den 2 Bytes "FF FE", so dass dieser Aufruf zu einer Suche nach der Bytesquenz "FF FE 61 00 62 00 63 00" führen würde.

Die standardmäßig verwendeten Spalten für die String-Suche entsprechen den Spalten der Suche nach Bytesequenzen und der Suche nach Zahlen. Falls Sie eine andere Spaltenkonfiguration für Ihr Ergebnis wünschen, können Sie wieder die Spaltenparameter cols und colh für Ihre Konfiguration nutzen.

Wie auch bei der Zahlen-Suche, die wir uns im letzten Abschnitt angesehen haben, erfolgt auch die String-Suche über den Parameter "search-str" ohne Beachtung der zugrunde liegenden Dateistruktur. Möchten Sie nur Texte finden, die auch innerhalb der Dateistruktur als solche verwendet werden, sollten Sie Ihren Text statt mit "search-str" über "search-val" suchen. Erläuterungen sowie Beispiele dafür finden Sie im nächsten Abschnitt über die Suche in der Dateistruktur.

Suche in der Dateistruktur

Die bisher vorgestellten Suchtypen nach Bytesequenzen, Zahlen oder Strings hatten gemeinsam, dass die durch diese Suchfunktionen durchgeführte Suche jeweils ohne Beachtung der zugrunde liegenden Struktur der zu durchsuchenden Datei ausgeführt wird.

So könnten die aus der jeweiligen Sucheingabe generierten Bytes einer Zahl oder eines Strings in der durchsuchten Datei zum Beispiel auch lediglich Teil-Bytes größerer Zahlen oder Strings sein, die Bytes könnten im Sinne eines anderen Datentyps gebraucht werden (zum Beispiel könnten Zahlen Teil eines Strings sein) oder sogar mehrere eigentlich syntaktisch unabhängige Chunks oder Eigenschaften umfassen, wenn die ersten Bytes zum Beispiel am Ende eines Chunks vorkommen und der nächste Chunk mit den restlichen Bytes beginnt. Die Wahrscheinlichkeit ist dabei natürlich bei kurzen Zahlen am höchsten während sie mit zunehmender Länge eines Strings abnimmt.

Natürlich haben auch die Suchfunktionen nach Bytesequenzen, Zahlen und Strings ihre Einsatzbereiche. Wenn Sie jedoch nach einem bestimmten Wert suchen, der auch als solcher innerhalb der Dateistruktur vorkommen soll, sollten Sie die in diesem Abschnitt vorgestellte Suche in der Dateistruktur den anderen Suchfunktionen vorziehen.

Grundlage der Suche innerhalb der Dateistruktur bilden die drei Basisparameter search-path, search-prop und search-val, mit denen Sie Ihre Suche auf einen bestimmten Chunk-Pfad, eine bestimmte Eigenschaft oder einen bestimmten Wert eingrenzen können. Die drei Parameter können alle zusammen, aber auch beliebig kombiniert oder einzeln verwendet werden.

Das folgende Beispiel zeigt die gemeinsame Verwendung aller drei Parameter:

FileAnalyzer.exe -cl C:\Ordner filter-ext=avi search-path=/list/avih search-prop=Width search-val=1280

Mit diesem Aufruf suchen wir nach AVI-Videos (filter-ext=avi) aus dem Ordner "C:\Ordner", die eine Breite von 1280 Pixeln haben und geben das Ergebnis in der Konsole aus. Da Breite und Höhe im AVI Header (avih) gespeichert sind und sich der AVI Header im Pfad "/list/avih" des Resource Interchange File Formats (RIFF-Format) befindet, haben wir den Search-Path auf "/list/avih" eingegrenzt. Gleichzeitig interessiert uns aus dem AVI Header nur die Eigenschaft "Width" (search-prop=Width), deren Wert "1280" betragen soll, weswegen wir zuletzt den Parameter "search-val=1280" übergeben.

Die Erkenntnis aus dieser Art von Suche ist letztendlich nur, welche Dateien aus unserem übergebenen Ordner unseren Suchkriterien entsprechen, da Pfad, Eigenschaft und Wert bereits vor Ausführung der Suche feststehen. Anders verhält es sich, wenn wir nicht alle Suchkriterien spezifizieren, wie in dem folgenden Beispiel:

FileAnalyzer.exe -cl C:\Ordner filter-ext=tiff search-val=1 save=Suchergebnis.csv

In diesem Aufruf lassen wir den Pfad und die Eigenschaft offen, indem wir die Parameter search-path und search-prop leer lassen. Stattdessen durchsuchen wir die Dateistruktur aller TIFF-Dateien (Tagged Image File Format) aus dem angegebenen Ordner lediglich nach dem Wert "1" und speichern das Suchergebnis anschließend als CSV-Datei ab. Dadurch dass wir sowohl den Pfad als auch die Eigenschaft leer gelassen haben, können wir beliebige Eigenschaften in beliebigen Pfaden als Ergebnis erhalten. Die "1" könnte also sowohl der Wert von ImageWidth oder ImageLength als auch von Orientation, ResolutionUnit, Compression oder jeder beliebigen anderen TIFF-Eigenschaft sein um in unserem Suchergebnis zu erscheinen.

Natürlich können wir auch mit jeder beliebigen anderen Kombination aus unseren drei Basisparametern arbeiten. Wenn wir zum Beispiel nur search-path und search-prop definieren, suchen wir einen beliebigen Wert der angegebenen Eigenschaft im angegebenen Pfad (eine Kurzform dieser Art von Suche ist die Suche nach Einzelwerten über den Parameter gel-val). Wenn wir nur search-path definieren, finden wir alle Eigenschaften in dem angegebenen Pfad mit ihren beliebigen Werten.

In unseren bisherigen Beispielen haben wir immer nach einer Eigenschaft gesucht, die einem bestimmten Wert entsprechen soll. Dies entspricht dem Vergleichsoperator "equals" (gleich), der immer standardmäßig aktiv ist, wenn wir keinen anderen abweichenden Vergleichsoperator bestimmen. Neben "equals" stehen uns noch die Vergleichsoperatoren "contains" (enthält), "starts_with" (beginnt mit), "ends_with" (endet mit), "matches_regex" (entspricht regulärem Ausdruck), "contains_regex" (enthält regulären Ausdruck), "greater" (größer), "greater_or_equal" (größer oder gleich), "smaller" (kleiner), "smaller_or_equal" (kleiner oder gleich) sowie "between" (zwischen zwei Werten, einschließlich dieser Werte) zur Verfügung. Diese Operatoren können wir mit den Parametern search-prop-cop für search-prop sowie search-val-cop für search-val übergeben. Das Anhängsel "cop" steht hier für "comparison operator". Schauen wir uns auch dazu Beispiele an:

FileAnalyzer.exe -cl C:\Ordner filter-ext=ico search-path=/fileheader search-prop=NumberOfImages search-val=3 search-val-cop=greater

Mit diesem Aufruf suchen wir alle Icons aus dem angegebenen Ordner, die mehr als 3 Bilder enthalten. Dafür nutzen wir die Parameter "search-val=3 search-val-cop=greater".

FileAnalyzer.exe -cl C:\Ordner filter-ext=exe search-path=/pe_optional_header search-prop=OSVersion search-val=4.0-6.1 search-val-cop=between

In diesem Aufruf nutzen wir den "between"-Vergleichsoperator, um alle EXE-Dateien mit einer minimal unterstützten Windows-Version zwischen 4.0 (Windows 95) und 6.1 (Windows 7) zu listen.

FileAnalyzer.exe -cl C:\Ordner filter-ext=jpg search-path=/app1/exifdata search-prop=Image search-prop-cop=starts_with search-val=[0-9] search-val-cop=contains_regex

Und in diesem Aufruf nutzen wir sowohl search-prop-cop als auch search-val-cop um alle Exif-Daten aller JPG-Bilder aus dem Ordner "C:\Ordner" zu extrahieren, die mit "Image" beginnen ("search-prop=Image search-prop-cop=starts_with") und mindestens eine beliebige Zahl in ihrem Wert enthalten (keine reinen nicht-nummerischen Strings). Die Suche nach einer beliebigen Zahl realisieren wir über den regulären Ausdruck [0-9] ("search-val=[0-9] search-val-cop=contains_regex").

Neben search-prop-cop und search-val-cop stehen Ihnen mit search-prop-rev sowie search-val-rev zwei weitere Parameter zur Verfügung, mit denen Sie Einfluss auf die Interpretation der über search-prop beziehungsweise search-val angegebenen Werte nehmen können. Die beiden Parameter können jeweils die Werte 0 oder 1 annehmen und kehren die Suche um ("rev" steht für reverse search). Ein Beispiel ist der nächste Aufruf:

FileAnalyzer.exe -cl C:\Ordner filter-ext=wav search-prop=Channels search-val=2 search-val-rev=1

Mit diesem Aufruf suchen wir alle WAV-Dateien aus dem angegeben Ordner deren Anzahl von Channels nicht 2 beträgt. Wir definieren die Zahl "2" über "search-val=2" und schreiben "search-val-rev=1" um die Suche umzukehren. Lassen wir "search-val-rev=1" weg würde standardmäßig nach allen Dateien gesucht, deren Wert der Eigenschaft "Channels" auf genau "2" steht (dies entspricht "search-val-rev=0"). Der Parameter "search-prop-rev" funktioniert in gleicher Weise und kann zum Beispiel dazu verwendet werden, alle Eigenschaften außer der angegebenen Eigenschaft zu suchen. Natürlich können die -rev Parameter in beliebiger Weise mit den verschiedenen -cop Parametern kombiniert werden, um nicht nur die "equals"-Suche umzukehren.

Bisher haben wir uns noch keine Gedanken darüber gemacht, welche Informationen eigentlich durch unsere Aufrufe in das Ergebnis geschrieben werden. Standardmäßig nutzt die Suche in der Dateistruktur sowohl für die Ausgabe in der Konsole als auch für die Speicherung als Datei die Spalten Dateiname (file_name), Chunk-Pfad (chunk_path), Eigenschaft (property), Wert (value), Datentyp des Wertes (datatype), Datengröße des Wertes (datasize), Byte-Offset des Wertes innerhalb der Datei (offset_file) sowie Pfad der Datei (file_path). Zusätzlich werden per Default Spaltenüberschriften für die Spalten verwendet.

Über die beiden Parameter cols (Art und Reihenfolge der Spalten, definiert über kommaseparierte Spaltenparameter) sowie colh (colh=1 - Spaltenüberschriften; colh=0 - keine Spaltenüberschriften), können wir diese Standardausgabe beliebig mit unseren eigenen Spaltenwünschen überschreiben. Schauen wir uns auch dazu ein Beispiel an:

FileAnalyzer.exe -cl C:\Bild.gif search-path=/image/imagedescriptor search-prop=ImageSeparator cols=offset_file colh=0

Mit diesem Aufruf möchten wir die Byte-Offsets aller einzelnen Bilder, die in der spezifizierten GIF-Datei "C:\Bild.gif" stecken, auflisten. Den Dateinamen kennen wir bereits - Datentyp, Datengröße, Spaltenüberschriften und so weiter interessieren uns nicht, daher haben wir über den Parameter cols nur die Spalte für den Byte-Offset ab Beginn der Datei (offset_file) definiert und über den Parameter colh die Spaltenüberschriften deaktiviert. Wir erhalten also eine Liste, die nur die Byte-Offsets der Einzelbilder unseres GIFs enthalten.

Mehr zur Konfiguration von Ergebnistabellen erfahren Sie im Abschnitt über die Spalten und Spaltenüberschriften der Ausgabe. Mehr über die verschiedenen Spaltentypen und deren Parameter inklusive Beschreibungen und Beispiele finden Sie in der Übersichtstabelle über alle Spaltenparameter.

Ausgabe in der Konsole oder Speicherung als Datei

Unabhängig davon, welche Informationen Sie mit dem FileAnalyzer auslesen oder generieren, kann eine Ausgabe stets entweder direkt in der Konsole erfolgen oder als Datei gespeichert werden. Sie steuern diesen Unterschied der Ausgabe über den Parameter "save", mit dem sich eine Datei für den Output definieren lässt. Ist dieser Parameter definiert, erfolgt eine Ausgabe in Form der angegebenen Datei. Fehlt dieser Parameter, wird der Output in die Konsole geschrieben.

Mit den beiden folgenden Aufrufen vergleichen wir die File Type Box (ftyp) aller MP4-Dateien, die im angegebenen Ordner gespeichert sind:

FileAnalyzer.exe -cl C:\Ordner filter-ext=mp4 compare=/ftyp
FileAnalyzer.exe -cl C:\Ordner filter-ext=mp4 compare=/ftyp save=C:\VergleichFTYP.xlsx

Allerdings haben wir nur im zweiten Aufruf eine Ausgabedatei definiert. Daher erfolgt die Ausgabe des Ergebnisses im ersten Aufruf in die Konsole während sie im zweiten Aufruf in der Form eines Excel-Spreadsheets unter dem Namen "C:\VergleichFTYP.xlsx" gespeichert wird.

Falls Sie möchten, dass die gespeicherte Datei gleich nach ihrer Erstellung automatisch geöffnet wird, können Sie zusätzlich den Parameter "openfile=1" hinzufügen:

FileAnalyzer.exe -cl C:\Ordner filter-ext=png compare=/ihdr save=C:\VergleichIHDR.xlsx openfile=1

Mit diesem Aufruf vergleichen wir den Image Header (IHDR) aller PNG-Bilder aus dem Ordner "C:\Ordner" und speichern das Ergebnis unter dem Namen "C:\VergleichIHDR.xlsx" ab. Der generierte Excel-Sheet wird direkt nach dessen Generierung automatisch geöffnet, da wir den Parameter "openfile=1" übergeben haben. Standardmäßig ist dieser Parameter nicht aktiviert, sodass eine automatische Öffnung der erzeugten Datei nur dann stattfindet, wenn wir den Parameter explizit in dieser Form angeben.

Im nächsten Abschnitt erfahren Sie, in welchen Formaten die Ausgabe erfolgen kann und wie Sie Einfluss auf das verwendete Format nehmen können.

Format der Speicherung und Konsolenausgabe

Bei der Ausgabe in Form einer Datei, bestimmen Sie das Format der Ausgabe automatisch über die Dateiendung der Ausgabedatei, die Sie über den save-Parameter übergeben. Unterstützt werden aktuell die Formate TXT (simple Textdatei), CSV (Comma-Separated Values), TSV (Tab-Separated Values), XLSX (Excel-Spreadsheet), ODS (Open Document Spreadsheet), DIF (Data Interchange Format) sowie HTM/HTML (Webseite). Jeder der folgenden Beispielaufrufe durchsucht alle Dateien, die sich im angegebenen Ordner "C:\Ordner" befinden nach dem Text "abc" und gibt das Ergebnis jeweils in einem anderen der unterstützten Formate aus:

FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.txt
FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.csv
FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.tsv
FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.xlsx
FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.ods
FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.dif
FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.htm
FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.html

Mit dem Parameter "format" lässt sich das durch die Dateiendung vorgegebene Format überschreiben. Bei der Speicherung als Datei kann der format-Parameter die Werte txt, csv, tsv, xlsx, ods, dif, htm oder html annehmen. In der Praxis kann das zum Beispiel folgendermaßen aussehen:

FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.dat format=txt
FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.csv format=tsv

Der erste Aufruf speichert das Ergebnis unter dem Namen "Ergebnis.dat" ab. Dadurch dass sich aus der Dateiendung "dat" kein eindeutiges Format für die Speicherung ergibt, verwenden wir "format=txt" um dem FileAnalyzer die Anweisung zu geben, im Textformat zu speichern. Anders verhält es sich im zweiten Aufruf. Basierend auf der Dateiendung würde im CSV-Format gespeichert werden, wir wünschen uns aber eine TSV-Datei mit der Dateiendung "CSV". Geht aus der Dateiendung kein eindeutiges Format hervor und ist der format-Parameter nicht angegeben, wird standardmäßig im Textformat gespeichert. Im ersten Beispiel hätten wir demnach auch "format=txt" weglassen können und hätten dennoch das gleiche Ergebnis erzielt.

Soll die Ausgabe in der Konsole erfolgen, fehlt natürlicherweise die Dateiendung als Indiz für das gewünschte Speicherformat. Daher kommt dem format-Parameter in diesem Fall eine besondere Bedeutung zu. Im folgenden Beispiel möchten wir das Ergebnis unserer Suche im CSV-Format in der Konsole ausgeben. Aus diesem Grund übergeben wir den Parameter "format=csv":

FileAnalyzer.exe -cl C:\Ordner search-str=abc format=csv

Bei der Ausgabe in der Konsole kann der format-Parameter die Werte txt, csv, tsv, dif, htm oder html annehmen. Unterstützt werden entsprechend keine Binärformate. Wenn wir den Parameter "format" bei einer Konsolenausgabe nicht explizit angeben, wird auch in diesem Fall standardmäßig das Textformat verwendet. Der Default ist demnach "format=txt".

Die auf einer Textdatei basierenden Formate TXT, CSV, TSV, DIF sowie HTM und HTML werden standardmäßig unter Verwendung der Kodierung UTF-8 ohne Byte Order Mark gespeichert. Als Zeilenumbruch wird der Zeilenumbruchtyp des Systems verwendet, also CRLF für Windows. Ebenso richtet sich das Feldtrennungszeichen für den CSV-Export auch nach den Systemeinstellungen (Komma oder Semikolon). Sie können diese Voreinstellungen über die Parameter enc (Encoding), bom (Byte Order Mark), lb (Line Break) und fs (Field Separator) überschreiben:

FileAnalyzer.exe -cl C:\Ordner search-str=abc save=C:\Ergebnis.csv enc=utf32be bom=0 lb=cr fs=pipe

Mit diesem Aufruf speichern wir das Suchergebnis in der Kodierung UTF-32 Big Endian ohne Byte Order Mark mit dem CR-Zeilenumbruchtyp und verwenden das Zeichen | (pipe) als Feldtrenner. Würden wir einzelne dieser Parameter weglassen, würden dafür die Default-Werte verwendet. Eine Übersicht über alle Werte, die die 4 Parameter annehmen können, finden Sie in der Übersichtstabelle aller verfügbarer Parameter am Ende dieses Tutorials.

Spalten und Spaltenüberschriften der Ausgabe

Unabhängig davon, ob Sie das Ergebnis Ihrer Auslesung, Ihres Vergleichs oder Ihrer Suche als Datei abspeichern möchten oder in der Konsole ausgeben lassen, können Sie das Erscheinungsbild der Ergebnistabelle über die beiden Parameter cols und colh konfigurieren.

Mit dem Parameter "cols" (von Columns) können Sie angeben, welche Spalten in welcher Reihenfolge in Ihre Tabelle aufgenommen werden sollen. Mit dem Parameter "colh" (von Column Headers) bestimmen Sie, ob Ihre Tabelle Spaltenüberschriften enthalten soll oder nicht.

Genauer gesagt können Sie mit dem Parameter "cols" eine kommagetrennte Liste Ihrer gewünschten Spalten übergeben. Gleichzeitig legen Sie mit diesem Parameter die Reihenfolge der Spalten fest, da die Anordnung der Spalten in der Ausgabetabelle genau der Reihenfolge entspricht, wie Sie die Spalten mit diesem Parameter angegeben haben. Die Angabe der Spalten erfolgt über die Spaltenparameter, die Sie in der Übersichtstabelle der Spaltenparameter finden können. Diese Tabelle zeigt auch, welche Spalten für welche Ausgabe- und Suchtypen zur Verfügung stehen. Der Parameter "colh" kann dagegen nur die Werte 0 (keine Spaltenüberschriften) oder 1 (Tabelle mit Spaltenüberschriften) annehmen.

Wenn Sie beide oder auch nur einen der Parameter nicht explizit angeben, werden für die Ausgabe die jeweiligen Default-Werte des oder der nicht angegebenen Parameter verwendet. Diese sind abhängig von Ihrem verwendeten Ausgabe- oder Suchtyp. Beispielsweise verwendet "get-val" standardmäßig für seine Ausgabe nur die Spalte "value" (Wert) und keine Spaltenüberschriften, während die Vergleichsfunktion mit "compare" standardmäßig eine Ausgabe mit Spaltenüberschriften und mehreren Spalten erzeugt. Die jeweilig verwendete Default-Konfiguration der Spaltenparameter für die verschiedenen Ausgabe- und Suchtypen finden Sie in der Übersichtsabelle der Default-Spalten direkt im Anschluss an diesen Abschnitt.

Die folgenden Beispiele zeigen den Gebrauch der beiden Parameter:

FileAnalyzer.exe -cl C:\Icon.ico get-val=/FileHeader:NumberOfImages cols=value colh=0

Mit diesem Aufruf möchten wir die Anzahl der Bilder einer Icon-Datei auslesen und nur diesen Wert ohne weitere Spalten oder Spaltenüberschriften direkt in der Konsole ausgeben. Aus diesem Grund verwenden wir neben der Übergabe des Dateipfads die beiden Parameter "cols=value" (wir definieren nur eine Spalte, die Spalte "value" für die Ausgabe des Values) sowie "colh=0" (wir möchten keine Spaltenüberschriften in unser Tabelle). Dadurch besteht unsere "Tabelle" schlussendlich nur aus einer Zelle, in die die Anzahl der Bilder geschrieben wird.

Anders verfahren wir im nächsten Beispiel, in dem wir sowohl mehrere Spalten definieren als auch Spaltenüberschriften haben möchten:

FileAnalyzer.exe -cl C:\Ordner search-val=7 cols=file_name,chunk_path,property colh=1 save=7.xlsx

Mit diesem Aufruf durchsuchen wir alle Dateistrukturen aller Dateien aus dem Ordner "C:\Ordner" nach dem Wert 7, der in einer beliebigen Eigenschaft vorkommen darf, da wir weder die Eigenschaft selber noch den Chunk-Pfad in irgendeiner Weise für die Suche einschränken. Als Spalten definieren wir mit "cols=file_name,chunk_path,property" den Namen der Datei (file_name), den Chunk-Pfad, in dem die Eigenschaft mit dem Wert gefunden wurde (chunk_path) sowie den Namen der gefundenen Eigenschaft mit dem Wert 7 (property) in genau dieser Reihenfolge. Mit dem nächsten Parameter "colh=1" bestimmen wir explizit, dass unsere Tabelle Spaltenüberschriften haben soll und zuletzt sagen wir dem FileAnalyzer mit dem Parameter "save=7.xlsx" dass das Ergebnis dieser Suche als Excel-Spreadsheet unter dem Namen "7.xlsx" abgespeichert werden soll. Im ersten Beispiel haben wir den save-Parameter weggelassen, wodurch die Ausgabe direkt in die Konsole erfolgt.

In unserem ersten Beispiel hätten wir übrigens die Parameter "cols=value" sowie "colh=0" genauso wie aus unserem zweiten Beispiel den Parameter "colh=1" weglassen können, da diese Werte auch genau den Default-Werten dieser Parameter für "get-val" beziehungsweise "search-val" entsprechen. Trotzdem wurden diese Parameter für die Beispielaufrufe bewusst gesetzt um den Unterschied zwischen den beiden Situationen zu verdeutlichen.

Übersicht über die Default-Spalten der verschiedenen Ausgabe- und Suchtypen

Die Parameter zum Auslesen von Werten, zum Vergleichen von Chunks und Eigenschaften sowie für die verschiedenen Suchtypen verwenden unterschiedliche Default-Werte für die in ihrer Ausgabe verwendeten Spalten. Diese Default-Werte werden verwendet, wenn Sie die Parameter cols und/oder colh nicht explizit angeben um damit den Default-Wert zu überschreiben und sind für die beiden Parameter in der folgenden Tabelle gelistet.

Typcolscolh
get-valvalue0
comparefile_name,chunk_path,chunk_offset,values,file_path1
search-bytes
search-uint...
search-sint...
search-str
file_name,chunk_path,property,value,offset_file,file_path1
search-path
search-prop
search-val
file_name,chunk_path,property,value,datatype,datasize,offset_file,file_path 1

Die verschiedenen Suchtypen nach Bytesequenzen (search-bytes), Zahlen (search-uint.../search-sint...) und Strings (search-str) verwenden jeweils die gleichen Default-Werte für ihre Spalten. Die Suche innerhalb der Dateistruktur (search-path, search-prop und/oder search-val) verwendet als Default dagegen zusätzlich zwei weitere Spalten.

Mehr zur Verwendung der Spaltenparameter cols und colh erfahren Sie im Abschnitt über die Spalten und Spaltenüberschriften der Ausgabe. Im nächsten Abschnitt finden Sie darüber hinaus eine Tabelle aller verfügbaren Spaltenparameter inklusive Beschreibung und Beispiel sowie einer Übersicht darüber, welche Spalten Sie mit welchem Ausgabe- oder Suchtyp kombinieren können.

Übersicht über alle Spaltenparameter

In der folgenden Tabelle sehen Sie eine Übersicht über alle verfügbaren Spaltenparameter und deren Bedeutung. Zur Verdeutlichung haben wir für Sie in der Spalte "Beispiel" mögliche Werte des jeweiligen Parameters dargestellt, wie sie sich beim Auslesen der Dauer (Duration) des Movie Header Chunks (mvhd) einer MP4-Datei ergeben könnten. In den letzten vier Spalten ist aufgeführt, ob der jeweilige Parameter für die verschiedenen Ausgabe- und Suchtypen get-val (V), compare (C), search-bytes / search-int / search-str (S) oder die Suche in der Dateistruktur (F) genutzt werden kann (D oder ●) oder sogar als Default-Spalte (D) von dem betreffenden Parameter verwendert wird.

ParameterBeschreibungBeispielVCSF
file_nameDateiname der Datei ohne Pfadvideo.mp4DDD
file_extFormat / Dateiendung der DateiMP4
file_sizeGröße der gesamten Datei in Bytes1015737 
chunk_pathPfad des Chunks/moov/mvhdDDD
chunk_typeChunk-Typmvhd
chunk_offsetByte-Offset des Chunks innerhalb der Datei32D
chunk_sizeGröße des Chunks in Bytes108  
propertyName der EigenschaftDuration DD
valueWert der Eigenschaft6000D DD
valuesMehrere Werte eines Chunks108|mvhd|0|... D  
offset_fileByte-Offset des Wertes innerhalb der Datei56 DD
offset_chunkByte-Offset des Wertes innerhalb des Chunks24 
datasizeDatengröße des Wertes in Bytes4 D
datatypeDatentyp des WertesUINT_BE(32)  D
descriptionBedeutung des Wertes60s  
file_path

Dateiname mit Pfad der Datei

E:\video.mp4DDD

Der Unterschied zwischen den Parametern "value" und "values" besteht darin, dass "value" wie alle anderen aufgeführten Parameter auch nur für eine Spalte steht während "values" mehrere Spalten erzeugen kann. Beim einfachen Auslesen einzelner Werte zum Beispiel über die Suchfunktionen (S und F) oder über "get-val" (V) kommt daher ausschließlich der Parameter "value" zum Einsatz, während "values" nur für die Vergleichsfunktion (C) mit dem compare-Parameter zur Verfügung steht.

Da mit der Vergleichsfunktion eine beliebige Anzahl von Eigenschaften miteinander verglichen werden können und auch die verschiedenen zu vergleichenden Chunks eine unbestimmte Anzahl von Eigenschaften umfassen können, benötigen wir diesen variablen Parameter, um dieser besonderen Situation gerecht zu werden und nicht alle Spalten (möglicherweise unbekannter Art) einzeln händisch definieren zu müssen. Dennoch lassen sich auch die Spalten, die sich hinter "values" verbergen sowohl in ihrer Art als auch in ihrer Reihenfolge bestimmen, indem Sie die Vergleichsfunktion auf einzelne Eigenschaften beschränken und so ihre gewünschten Eigenschaften nicht über den Parameter "cols" sondern über den Parameter "compare" definieren. Genauere Erklärungen und Beispiele dafür finden Sie im Abschnitt über den Vergleich einzelner Eigenschaften mehrerer Dateien.

Wie Sie die hier vorgestellten Spaltenparameter für die Konfiguration der Spalten Ihrer Ergebnisausgabe nutzen können, erfahren Sie im Abschnitt über die Konfiguration der Spalten der Ausgabe.

Übersicht über alle verfügbaren Parameter

Die folgende Tabelle zeigt eine Übersicht aller verfügbarer Parameter, die Sie im Batch-Modus des FileAnalyzers verwenden können. Den Namen des Parameters finden Sie in der ersten Spalte. Die zweite Spalte enthält eine Liste aller Werte, die der jeweilige Parameter annehmen kann. Die darauffolgende Spalte zeigt den Default-Wert, der immer dann Anwendung findet, falls der jeweilige Parameter nicht explizit angegeben wurde. Darüber hinaus finden Sie in der letzten Spalte eine Kurzbeschreibung des Parameters. Häufig finden Sie in dieser Spalte auch einen Link zu dem Abschnitt dieses Tutorials, in dem der betreffende Parameter erklärt ist und Sie auch Beispiele für dessen Verwendung finden können.

Ist ein Parameter der ersten Spalte kursiv geschrieben, bedeutet dies, dass der betreffende Parameter ein Zusatzparameter für den letzten nicht kursiv geschriebenen Parameter ist und nur mit diesem zusammen verwendet werden kann.

ParameterWerteDefaultBeschreibung
[Dateien]beliebige(r) Dateipfad(e)- Pfad zu einer oder mehreren Dateien, die analysiert werden sollen. Es können mehrere Dateien hintereinander angegeben werden, um mehrere Dateien gleichzeitig auszuwählen. Mehr Informationen und Beispiele im Abschnitt über die Auswahl von Dateien.
[Ordner]beliebige(r) Ordnerpfad(e)-Pfad zu einem oder mehreren Ordnern, deren Inhalt analysiert werden soll. Es können mehrere Ordner hintereinander angegeben werden, um mehrere Ordner gleichzeitig nach Dateien zu durchsuchen. Um nicht alle Dateien aus dem Ordner auszuwählen, können Sie die Parameter search-subdirs, filter-ext, filter-name, filter-name-matchcase, filter-name-matchall, filter-name-regex sowie filter-hiddenfiles, filter-onlytextfiles und filter-onlybinaryfiles verwenden, um die Dateisuche entsprechend einzugrenzen. Mehr Informationen und Beispiele finden Sie im Abschnitt über die Auswahl von Dateien aus Ordnern.
filter-extbeliebige Dateiendung(en)- Falls bei der Suche in Ordnern nur Dateien mit einer bestimmten Dateiendung gefunden werden sollen, können Sie die betreffenden Endungen mit diesem Parameter angeben. Also zum Beispiel filter-ext=mp4 um nur Videos mit der Dateiendung MP4 zu berücksichtigen. Mehrere Endungen können mit einem Schrägstrich (/) getrennt werden. Also zum Beispiel filter-ext=mp4/m4a/heic/avif/cr3 um nur Dateien mit einer der Endungen MP4, M4A, HEIC, AVIF oder CR3 zu berücksichtigen. Wenn Sie diesen Parameter weg oder leer lassen, werden Dateien mit allen Endungen akzeptiert. Detaillierte Erläuterungen und Beispiele finden Sie im Abschnitt über die Auswahl von Dateien aus Ordnern.
filter-typeimage, audio, video, text, document, spreadsheet, website, font, executable, archive, playlist, sourcecode, other oder allall Wenn Sie bei der Suche in Ordnern nur Dateien eines bestimmten Dateityps beziehungsweise einer bestimmten Dateigattung berücksichtigen möchten, können Sie Ihre gewünschten Typen mit diesem Parameter definieren. Mit filter-type=video öffnen Sie beispielsweise nur Videodateien wie AVI, MP4 oder WMV. Mehrere Typen können sowohl mit einem Semikolon (;) als auch mit einem Komma (,) oder Bindestrich (-) getrennt werden. Mit filter-type=video;audio lässt sich die Dateisuche zum Beispiel sowohl auf Video- als auch auf Audio-Dateien beschränken. Wenn Sie diesen Parameter weglassen oder mit "all" aufrufen, werden Dateien jeden Dateityps akzeptiert. Detaillierte Erläuterungen und Beispiele finden Sie im Abschnitt über die Auswahl von Dateien aus Ordnern.
filter-namebeliebiger Text-Falls bei der Suche in Ordnern nur Dateien mit einem bestimmten Namen gefunden werden sollen, können Sie diesen Namen mit diesem Parameter angeben. Gefunden werden alle Dateien die die mit "filter-name" angegebenen Zeichen in ihrem Namen enthalten. Mit filter-name=ab also zum Beispiel Dateien wie abc.mp4 oder xab.jpg. Mehrere Suchen können mit einem Schrägstrich kombiniert werden. Beispielsweise findet "filter-name=123/abc" alle Dateien die entweder den Text "123" oder den Text "abc" im Namen enthalten. Wenn Sie diesen Parameter weglassen oder leer lassen, werden Dateien mit allen Namen berücksichtigt. Dieser Parameter kann mit den Parametern filter-name-matchcase, filter-name-matchall und filter-name-regex kombiniert werden. Detaillierte Erläuterungen und Beispiele für die Nutzung dieses Parameters finden Sie im Abschnitt über die Auswahl von Dateien aus Ordnern.
filter-name-matchcase0 oder 10Soll der mit dem Parameter "filter-name" angegebene Text oder reguläre Ausdruck gemäß seiner Groß- und Kleinschreibung interpretiert werden? 0 für nein, 1 für ja. Falls 1 muss der Text/RegEx im Dateinamen genau so in der gleichen Schreibweise vorkommen. Falls 0 wird unabhängig von der Groß- und Kleinschreibung gesucht.
filter-name-matchall0 oder 10Soll der mit dem Parameter "filter-name" angegebene Text oder reguläre Ausdruck dem Dateinamen komplett entsprechen? 0 für nein, 1 für ja. Falls 1 muss der gesamte Dateinamen den Suchbegriff vollständig matchen. Falls 0 ist es ausreichend wenn der Suchbegriff lediglich irgendwo im Dateinamen vorkommt.
filter-name-regex0 oder 10Falls der unter "filter-name" angegebene Suchfilter als regulärer Ausdruck interpretiert werden soll, verwenden Sie 1. Falls einfach nur nach dem angegebenen Text gesucht werden soll, 0.
filter-hiddenfiles0 oder 10Sollen beim Durchsuchen von Ordnern auch versteckte Dateien gefunden werden? 0 für nein, 1 für ja. Mit dem Wert 0 werden keine versteckten Dateien gefunden, mit dem Wert 1 werden auch versteckte Dateien berücksichtigt.
filter-onlybinaryfiles0 oder 10Sollen beim Durchsuchen von Ordnern nur Binärdateien gefunden werden? 0 für nein, 1 für ja. Falls ja, wird jede Datei vor dem Hinzufügen geprüft, ob sie eine Binärdatei ist und die Datei nur dann berücksichtigt, falls dies zutrifft.
filter-onlytextfiles0 oder 10Sollen beim Durchsuchen von Ordnern nur Textdateien gefunden werden? 0 für nein, 1 für ja. Falls ja, wird jede Datei vor dem Hinzufügen geprüft, ob sie eine Binärdatei ist und die Datei nur dann berücksichtigt, falls die Datei keine Binärdatei ist.
search-subdirs0 oder 11Sollen beim Durchsuchen von Ordnern auch Unterordner durchsucht werden? 0 für nein, 1 für ja. Mit dem Wert 0 werden nur diejenigen Dateien berücksichtigt, die direkt in dem angegebenen Ordner liegen. Unterordner werden nicht durchsucht. Mit dem Wert 1 werden sowohl die Dateien geladen, die direkt im Ordner liegen, als auch alle Dateien, die sich in einem Unterordner unterhalb des angegebenen Ordners befinden. Beispiele und weitere Erläuterungen zu diesem Parameter finden Sie im Abschnitt über die Auswahl von Dateien aus Ordnern.
get-val/pfad:eigenschaft- Suche nach einzelnen Werten. Mit "get-val" können Sie die auszulesende Eigenschaft und deren Chunk-Pfad in der Form "get-val=/pfad:eigenschaft" übergeben. Beispielsweise können Sie mit "get-val=/moov/trak/tkhd:CreationTime" die Zeit der Erstellung (Eigenschaft CreationTime) eines Tracks (Pfad zum Track-Header = /moov/trak/tkhd) einer Iso Base Media File Format Datei (zum Beispiel MP4- oder M4A-Dateien) auslesen. Die auszugebenden Informationen können über die Parameter cols und colh spezifiziert werden. Mehr Informationen und Anwendungsbeispiele finden Sie im Abschnitt über das Auslesen von einzelnen Werten.
compare/pfad oder /pfad:eigenschaft- Vergleich von ganzen Chunks oder ausgewählten Eigenschaften gleicher Chunks mehrerer Dateien oder innerhalb einer Datei. Mit "compare=/pfad" wird der gesamte über den angegebenen Chunk-Pfad definierte Chunk aller geladenen Dateien miteinander verglichen. Mit "compare=/pfad:eigenschaft" wird nur die definierte Eigenschaft für den Vergleich herangezogen. Sollen mehrere Eigenschaften eines Chunks in den Vergleich einfließen, können diese mit einem Komma getrennt werden (zum Beispiel "compare=/pfad:eigenschaft1,eigenschaft2". Die auszugebenden Informationen können über die Parameter cols und colh spezifiziert werden. Mehr Informationen und Beispiele finden Sie in den Abschnitten über den Vergleich von Chunks mehrerer Dateien, den Vergleich von Chunks innerhalb einer Datei sowie den Vergleich einzelner Eigenschaften mehrerer Dateien.
search-bytesByte-Sequenz- Suche nach Bytesequenzen unabhängig von der Dateistruktur. Die Bytes können mit Leerzeichen ("search-bytes=A0 B0 C0") oder ohne Leerzeichen ("search-bytes=A0B0C0") angegeben werden. Die auszugebenden Informationen können über die Parameter cols und colh spezifiziert werden. Mehr Informationen und Anwendungsbeispiele finden Sie im Abschnitt über die Suche nach Bytesequenzen.
search-ubyte
search-uint8
search-uint16le
search-uint16be
search-uint24le
search-uint24be
search-uint32le
search-uint32be
search-uint40le
search-uint40be
search-uint48le
search-uint48be
search-uint56le
search-uint56be
search-uint64le
search-uint64be
positive Zahl- Suche nach Zahlen (unsigned) unabhängig von der Dateistruktur. Die zu suchende positive Zahl kann direkt als solche angegeben werden (zum Beispiel "search-ubyte=0" oder "search-uint16le=231"). Für die Konvertierung der angegebenen Zahl in die zu suchenden Bytes wird die hinter "search-uint" angegebene Bit-Zahl (von 8 = 1 Byte bis 64 = 8 Byte) sowie die durch "le" oder "be" spezifizierte Endianness (le = Little Endian oder be = Big Endian) zu Grund gelegt. Ein Sonderfall spielen "search-ubyte" und "search-uint8", bei denen sich aufgrund ihrer Größe von nur einem Byte die Spezifikation der Endianness erübrigt. Bitte beachten Sie bei der Auswahl eines für Sie geigneten Parameters die Grenzen, welche Zahlen mit welchen Byte-Größen maximal darstellbar sind (1 Byte = 0 bis 255; 2 Byte = 0 bis 65535; 3 Byte = 0 bis 16777215; 4 Byte = 0 bis 4294967295 und so weiter). Die auszugebenden Informationen können über die Parameter cols und colh spezifiziert werden. Mehr Informationen und Anwendungsbeispiele finden Sie im Abschnitt über die Suche nach Zahlen.
search-sbyte
search-sint8
search-sint16le
search-sint16be
search-sint24le
search-sint24be
search-sint32le
search-sint32be
search-sint40le
search-sint40be
search-sint48le
search-sint48be
search-sint56le
search-sint56be
search-sint64le
search-sint64be
positive oder negative Zahl- Suche nach Zahlen (signed) unabhängig von der Dateistruktur. Die zu suchende positive oder negative Zahl kann direkt als solche angegeben werden (zum Beispiel "search-ubyte=-1" oder "search-sint32be=100"). Für die Konvertierung der angegebenen Zahl in die zu suchenden Bytes wird die hinter "search-sint" angegebene Bit-Zahl (von 8 = 1 Byte bis 64 = 8 Byte) sowie die durch "le" oder "be" spezifizierte Endianness (le = Little Endian oder be = Big Endian) zu Grund gelegt. Ein Sonderfall spielen "search-sbyte" und "search-sint8", bei denen sich aufgrund ihrer Größe von nur einem Byte die Spezifikation der Endianness erübrigt. Bitte beachten Sie bei der Auswahl eines für Sie geigneten Parameters die Grenzen, welche Zahlen mit welchen Byte-Größen maximal darstellbar sind (1 Byte = -128 bis 127; 2 Byte = -32768 bis 32767; 3 Byte = -8388608 bis 8388607; 4 Byte = -2147483648 bis 2147483647 und so weiter). Die auszugebenden Informationen können über die Parameter cols und colh spezifiziert werden. Mehr Informationen und Anwendungsbeispiele finden Sie im Abschnitt über die Suche nach Zahlen.
search-strbeliebiger Text-Suche nach einem beliebigen String beziehungsweise Text unabhängig von der Dateistruktur. Mit "search-str=abc" können Sie zum Beispiel nach dem Text "abc" suchen. Standardmäßig wird für die Konvertierung des Textes in Bytes die Kodierung UTF-8 ohne Byte Order Mark verwendet. Möchten Sie Ihren Suchtext in einer anderen Kodierung suchen, können Sie diese über die Parameter search-enc und search-bom definieren. Die auszugebenden Informationen können über die Parameter cols und colh spezifiziert werden. Mehr Informationen und Anwendungsbeispiele finden Sie im Abschnitt über die Suche nach Strings.
search-encascii, latin1, latin2, win-ansi, win-1250, win-1251, win-1252, win-1253, cp437, utf7, utf8, utf16le, utf16be, utf32le oder utf32beutf8 Kodierung, die für den über den Parameter "search-str" angegebenen String verwendet wird. Mit dem Aufruf "search-str=abc search-enc=utf16le" suchen Sie beispielsweise nach dem UTF-16 Little Endian kodierten String "abc". Mehr Informationen und Anwendungsbeispiele finden Sie im Abschnitt über die Suche nach Strings.
search-bom0 oder 10Vorhandensein einer Byte Order Mark (BOM) im über den Parameter "search-str" angegebenen String. Mit dem Aufruf "search-str=abc search-enc=utf16le search-bom=1" wird nicht nur nach dem UTF-16 Little Endian kodierten String "abc" gesucht sondern auch nach einer den String einleitenden Byte Order Mark. Mehr Informationen und Anwendungsbeispiele finden Sie im Abschnitt über die Suche nach Strings.
search-path
search-prop
search-val
Pfade, Eigenschaften und beliebige Werte-Suche in der Dateistruktur. Die Parameter search-path, search-prop und search-val können gemeinsam oder alleine verwendet werden. Mindestens einer dieser drei Parameter muss angegeben sein. Über search-path lässt sich der zu durchsuchende Chunk-Pfad angeben, über search-prop die zu durchsuchende Eigenschaft und über search-val kann der zu suchende Wert spezifiert werden. Wird zum Beispiel nur search-val angegeben, wird der angegebene Wert in jedem Pfad und jeder Eigenschaft gesucht. Werden nur Pfad und Eigenschaft angegeben, wird der Wert dieser Eigenschaft in diesem Pfad gesucht. Wird nur der Pfad angegeben, werden alle Eigenschaften unabhängig von ihrem Wert in diesem Pfad gefunden und so weiter. Über die Parameter search-prop-cop und search-val-cop können die Vergleichsoperatoren für die Eigenschaft- und Wert-Suche definiert werden. search-prop-rev sowie search-val-rev kehren die Suche um (Reverse Search). Mehr Informationen und Anwendungsbeispiele finden Sie im Abschnitt über die Suche in der Dateistruktur.
search-prop-cop
search-val-cop
equals, contains, starts_with, ends_with, matches_regex, contains_regex, greater, greater_or_equal, smaller, smaller_or_equal oder betweenequalsVergleichsoperator (cop = comparison operator) für die Parameter search-prop und search-val der Suche in der Dateistruktur. Mit "search-prop=a search-prop-cop=starts_with" suchen Sie beispielsweise nach allen Eigenschaften, die mit einem "a" beginnen. Mehr Informationen und Beispiele für die Verwendung dieses Zusatzparameters finden Sie im Abschnitt über die Suche in der Dateistruktur.
search-prop-rev
search-val-rev
0 oder 10Reverse Search: Soll der Vergleichsoperator von search-prop beziehungsweise search-val der Suche in der Dateistruktur umgekehrt werden? Mit "search-val=1 search-val-cop=equals search-val-rev=1" suchen Sie beispielsweise alle Werte die ungleich 1 sind. Mehr Informationen und Beispiele für die Verwendung dieses Zusatzparameters finden Sie im Abschnitt über die Suche in der Dateistruktur.
colsSpaltensiehe Tabelle Welche Spalten sollen in welcher Reihenfolge in die Ergebnistabelle aufgenommen werden? Zum Beispiel "cols=file_name,value" für die Erzeugung einer Ergebnistabelle mit den beiden Spalten Dateiname (file_name) und ausgelesener Wert (value). Eine Übersicht aller zur Verfügung stehenden Spaltenparameter finden Sie in dieser Tabelle. Der Default-Wert ist abhängig vom verwendeten Ausgabe- oder Suchtyp und ist in der Tabelle der Default-Werte der Spaltenparameter gelistet. Eine detaillierte Erklärung dieses Parameters mit Beispielen finden Sie im Abschnitt über die Konfiguration der Spalten für die Ausgabe.
colh0 oder 1siehe Tabelle Soll das Ergebnis Spaltenüberschriften enthalten? 1 für ja, 0 für nein. Der Default-Wert ist abhängig von dem verwendeten Ausgabe- oder Suchtyp und ist in der Tabelle der Default-Werte der Spaltenparameter gelistet. Eine detaillierte Erklärung dieses Parameters mit Beispielen finden Sie im Abschnitt über die Konfiguration der Spalten und Spaltenüberschriften für die Ausgabe.
savePfad zu beliebiger Datei- Datei unter der das Ergebnis abgespeichert wird. Das Exportformat ergibt sich aus der Dateiendung (unterstützte Dateiendungen beziehungsweise Formate sind: txt, csv, tsv, xlsx, ods, dif, htm und html) oder kann durch den Parameter "format" festgelegt beziehungsweise überschrieben werden. Falls der save-Parameter nicht spezifiziert wurde, erfolgt eine Ausgabe direkt in der Konsole. Beispiele und mehr Informationen zum save-Parameter finden Sie im Abschnitt über die Ausgabe.
formattxt, csv, tsv, xlsx, ods, dif, htm oder htmltxt Exportformat für das Ergebnis. Bei einer Ausgabe in der Konsole kann dieser Parameter dazu verwendet werden, das Ausgabeformat festzulegen. Bei einer Konsolenausgabe werden aktuell nur Textformate wie TXT, CSV, TSV, DIF, HTM und HTML unterstützt. Dokument-, oder Spreadsheetformate werden bei einer Konsolenausgabe nicht unterstützt. Bei einer Speicherung des Ergebnisses als Datei ergibt sich das Format normalerweise aus der Dateiendung der angegebenen Exportdatei über den save-Parameter, so dass die explizite Angabe des format-Parameters nur notwendig ist, wenn das gewünschte Exportformat nicht aus der Dateiendung hervorgeht. Beispiele dafür wären "save=result.dat format=csv" oder "save=result.txt format=html". Beispiele und mehr Informationen zu diesem Parameter finden Sie im Abschnit über die Ausgabe als Datei oder in der Konsole.
encascii, latin1, latin2, win-ansi, win-1250, win-1251, win-1252, win-1253, cp437, utf7, utf8, utf16le, utf16be, utf32le oder utf32beutf8 Kodierung für das gespeicherte Ergebnis, falls in einem Textformat wie TXT, CSV, TSV, DIF oder HTML gespeichert wird. Die Kodierung "win-ansi" ist abhängig von der Lokalisierung Ihrer Windows-Version. Es wird die Windows-Codepage verwendet, die Ihrer Sprachversion von Windows entspricht. Eine Übersicht und Erläuterungen zu den verschiedenen Kodierungen finden Sie im Artikel über die verschiedenen Textformate und Kodierungen. Mehr Informationen zu diesem Parameter und Beispiele für dessen Verwendung finden Sie im Abschnitt über das Format der Speicherung.
bom0 oder 10Soll eine Byte Order Mark in die Datei geschrieben werden, falls in einem Textformat wie TXT, CSV, TSV, DIF oder HTML gespeichert wird? 0 für nein, 1 für ja. Mehr Informationen zu diesem Parameter und Beispiele für dessen Verwendung finden Sie im Abschnitt über das Format der Speicherung.
lbsystem, crlf, lf, cr, nl, ff, nel, ls, ps, vt, tab oder nocharsystemZeilenumbruch-Typ für die Datei, falls das Ergebnis in einem Textformat wie TXT, CSV, TSV, DIF oder HTML gespeichert wird. Der Wert "system" entspricht dem Standard-Zeilenumbruch-Typ des Betriebssystems, auf dem der FileAnalyzer aktuell ausgeführt wird. Also zum Beispiel crlf für Windows. Die Konstante "nochar" steht für kein Zeichen. Mehr Informationen zu diesem Parameter und Beispiele für dessen Verwendung finden Sie im Abschnitt über das Format der Speicherung.
fssystem, comma, semicolon, pipe, hyphen, space, tab, nochar oder ein beliebiger StringsystemFeldtrennungszeichen für eine Speicherung im CSV-Format. Der Wert "system" entspricht dem Standard-Feldtrennungszeichen des Betriebssystems, auf dem der FileAnalyzer aktuell ausgeführt wird (Komma oder Semikolon). Die Konstante "nochar" steht für kein Zeichen. Mehr Informationen zu diesem Parameter und Beispiele für dessen Verwendung finden Sie im Abschnitt über das Format der Speicherung.
openfile0 oder 10Soll die Datei mit dem Ergebnis nach der Erstellung geöffnet werden? Mit openfile=1 wird die neu erstellte Datei geöffnet. Ein Beispiel finden Sie im Abschnitt über die Ausgabe als Datei.

Grundsätzlich können alle in dieser Tabelle aufgeführten Parameter frei miteinander kombiniert und innerhalb des selben Aufrufs des FileAnalyzers gemeinsam miteinander verwendet werden. Eine Ausnahme bilden die Parameter zum Auslesen und Vergleichen von Chunks, Werten und Eigenschaften (get-val und compare) sowie die Parameter für die Suche von Bytesequenzen (search-bytes), die Suche von Zahlen, die Suche von Strings (search-str) und die Suche innerhalb der Dateistruktur (search-path, search-prop und/oder search-val). Von diesen Parametergruppen kann jeweils nur einer gleichzeitig angewendet werden. In welcher Reihenfolge die einzelnen Parameter dem FileAnalyzer übergeben werden, spielt dagegen keine Rolle.

Wird der FileAnalyzer aufgerufen ohne einen bestimmten Parameter zu definieren, wird für diesen Parameter der Wert aus der Spalte "Default" dieser Tabelle angenommen. Steht der Wert "-" in der "Default"-Spalte eines Parameters, heißt dies, dass der betreffende Parameter per Default leer ist und entsprechend keine Anwendung findet, wenn er nicht explizit definiert wird.