Zurück zu den Updates
New releaseAug 13, 2026

bulk_extractor v2.2.0beta2

Dies ist der Entwicklungsbaum. Produktionsdownloads befinden sich unter:

Teilen

codecov Coverity Scan Build Status

bulk_extractor ist ein Hochleistungswerkzeug für die digitale Forensik. Es ist ein „Beweise sichern“-Knopf, der jede Art von Eingabe (Festplatten-Images, Dateien, Verzeichnisse mit Dateien usw.) schnell scannt und strukturierte Informationen wie E-Mail-Adressen, Kreditkartennummern, JPEGs und JSON-Ausschnitte extrahiert, ohne das Dateisystem oder Dateisystemstrukturen zu parsen. Die Ergebnisse werden in Textdateien gespeichert, die sich leicht inspizieren, durchsuchen oder als Eingaben für andere forensische Verarbeitung verwenden lassen. bulk_extractor erstellt außerdem Histogramme bestimmter Merkmale, die es findet, wie Google-Suchbegriffe und E-Mail-Adressen, da frühere Forschung gezeigt hat, dass solche Histogramme besonders nützlich für Ermittlungs- und Strafverfolgungsanwendungen sind.

Anders als andere Werkzeuge der digitalen Forensik untersucht bulk_extractor jedes Datenbyte darauf, ob es der Beginn einer Sequenz sein kann, die dekomprimiert oder anderweitig dekodiert werden kann. Ist das der Fall, werden die dekodierten Daten rekursiv erneut untersucht. Dadurch kann bulk_extractor Dinge wie BASE64-kodierte JPEGs und komprimierte JSON-Objekte finden, die herkömmliche Carving-Werkzeuge übersehen.

Dieser Quellbaum erstellt bulk_extractor 2.2.0. Für den Produktionseinsatz ist eine getestete Version von https://github.com/simsong/bulk_extractor/releases zu bevorzugen.

Erstellen von bulk_extractor

Wir empfehlen, aus den Quellen zu bauen. Wir stellen eine Reihe von bash-Skripten im Verzeichnis etc/ bereit, die eine saubere virtuelle Maschine konfigurieren:

git clone https://github.com/simsong/bulk_extractor.git
./bootstrap.sh
./configure
make
make check
make install

Detaillierte Anweisungen zum Installieren von Paketen und zum Erstellen von bulk_extractor finden Sie auf der Wiki-Seite: https://github.com/simsong/bulk_extractor/wiki/Installing-bulk_extractor

Weitere Informationen zu bulk_extractor finden Sie unter: https://forensics.wiki/bulk_extractor

Dokumentation

Die erzeugten PDF-Handbücher werden unter https://simsong.github.io/bulk_extractor/ veröffentlicht, nachdem Änderungen in main gemerged wurden. Sie enthalten die Bedienungs- und Entwicklerhandbücher der Version 2.2. Pull-Requests erhalten dieselben PDFs als Workflow-Artefakt.

Getestete Konfigurationen

Diese Version von bulk_extractor benötigt C++17. Die aktuelle Validierung umfasst:

  • Apple-Silicon-macOS (lokaler Build und make distcheck, 2026-07-19)
  • Ubuntu 22.04 und aktuelle macOS-GitHub-Actions-Runner

Ältere Skripte zur Plattformvorbereitung unter etc/ entsprechen nicht der aktuellen CI-Unterstützung und müssen möglicherweise gewartet werden.

Getestete Konfigurationen, mit denen bulk_extractor nicht funktioniert

  • Debian 10 (für native Builds nicht unterstützt)

EMPFOHLENE ZITIERWEISE

Wenn Sie einen wissenschaftlichen Artikel schreiben und bulk_extractor verwenden, zitieren Sie es bitte mit:

Garfinkel, Simson, Digital media triage with bulk data analysis and bulk_extractor. Computers and Security 32: 56-72 (2013)

@article{10.5555/2748150.2748581,
author = {Garfinkel, Simson L.},
title = {Digital Media Triage with Bulk Data Analysis and Bulk_extractor},
year = {2013},
issue_date = {February 2013},
publisher = {Elsevier Advanced Technology Publications},
address = {GBR},
volume = {32},
number = {C},
issn = {0167-4048},
journal = {Comput. Secur.},
month = feb,
pages = {56–72},
numpages = {17},
keywords = {Digital forensics, Bulk data analysis, bulk_extractor, Stream-based forensics, Windows hibernation files, Parallelized forensic analysis, Optimistic decompression, Forensic path, Margin, EnCase}
}

UMGEBUNGSVARIABLEN

Die folgenden Umgebungsvariablen können gesetzt werden, um das Verhalten von bulk_extractor zu ändern:

VariableVerhalten
DEBUG_BENCHMARKCPU-Benchmark-Informationen in die Datei report.xml aufnehmen
DEBUG_NO_SCANNER_BYPASSDeaktiviert die Scanner-Bypass-Logik, die einige Scanner überspringt, wenn ein sbuf ngrams enthält oder keine hohe Anzahl unterschiedlicher Zeichen aufweist.
DEBUG_HISTOGRAMSDebug-Informationen zu dateibasierten Histogrammen ausgeben.
DEBUG_HISTOGRAMS_NO_INCREMENTALInkrementelle, speicherbasierte Histogramme nicht verwenden.
DEBUG_PRINT_STEPSGibt auf stdout aus, wann jeder Scanner für jeden sbuf aufgerufen wird
DEBUG_SCANNER_DUMP_DATAJeden zu scanenden sbuf als Hex-Dump ausgeben.
DEBUG_SCANNERS_IGNOREEine Teilzeichenfolge zum Identifizieren von Scannern, die ignoriert werden sollen. Nützlich zum Debuggen von Unit-Tests.

Weitere Hinweise zum Debuggen:

  • Führen Sie -xall aus, um ohne Scanner zu laufen.
  • Führen Sie eine Zufallsstichprobe von 0,001 % aus, um das Lesen der Image-Größe und ein paar schnelle Seek-Vorgänge zu debuggen.

LADBARE SCANNER

bulk_extractor lädt Scannermodule mit den Namen scan_.so (bzw. scan_.dylib unter macOS und scan_*.dll unter Windows) aus den Verzeichnissen, die mit -P angegeben oder in BE_PATH festgelegt sind. Ein Modul exportiert diese Factory mit C-Linkage:

extern "C" scanner_t *bulk_extractor_scanner_v1();

Die Factory gibt eine normale scanner_t-Funktion zurück. Erstellen Sie die Module gegen dieselbe Quellversion von bulk_extractor wie das ausführbare Programm; der PHASE_INIT-Handler des Scanners muss sp.check_version() aufrufen. Module bleiben geladen, bis die Scanner-Bereinigung abgeschlossen ist.

ERSTELLEN UNTER WINDOWS

Native Windows-Builds von bulk_extractor werden derzeit nicht unterstützt.

Der GitHub-Actions-Workflow Windows MinGW build kreuzkompiliert das ausführbare Programm bei jedem Pull-Request auf Ubuntu und lädt bulk_extractor64.exe im Artefakt bulk_extractor-windows-x86_64 hoch. Der Workflow prüft, dass das PE-Programm nicht die Laufzeit-DLLs von MinGW, RE2, Abseil, Expat, zlib oder GNU crypto importiert. Ein Windows-Runner lädt genau dieses Artefakt herunter und führt es mit einem Verzeichnis aus, das einen Unicode-Dateinamen enthält. Der Workflow verwendet die x86_64-MinGW-w64-POSIX-Toolchain sowie statisches Expat, RE2 und Abseil aus einem festgelegten vcpkg-Checkout. Das CI-Artefakt wird derzeit ohne libewf erstellt, unterstützt daher kein E01, ist nicht signiert und ist kein Release-Installer. Die Workflow-Datei und die zugehörigen gepflegten Build-Hinweise sind .github/workflows/mingw.yml und doc/mingw_notes.txt.

BULK_EXTRACTOR-VERSIONSHINWEISE

Release 2.2.0 (19. Juli 2026)

Die be20-API und ihre Quellabhängigkeiten wurden in den Quellbaum von bulk_extractor integriert, sodass kein rekursives Submodule-Setup mehr erforderlich ist. Der vereinheitlichte Build validiert nun bulk_extractor, be20 und DFXML gemeinsam und behebt Fehler beim Herunterfahren des Thread-Pools, die durch Vollimage-Tests und AddressSanitizer gefunden wurden.

Release 2.1.1 (26. April 2024)

Der Feature-Recorder jpeg_carved wurde in jpeg umbenannt, sodass der JPEG-Carve-Modus nun mit -S jpeg_carve_mode=2 gesetzt werden kann, statt mit -S jpeg_carved_carve_mode=2, was verwirrend war.

Release 2.0

bulk_extractor 2.0 (BE2) ist nun einsatzbereit. Obwohl es mit dem Java-basierten Viewer funktioniert, gibt es derzeit keinen Installer, der unter Windows läuft.

BE2 benötigt C++17 zum Kompilieren. Die be20-Scanner-API sowie die Quellen für dfxml_cpp, utfcpp und das DFXML-Schema werden direkt in diesem Repository gepflegt; ein rekursiver Submodule-Checkout ist nicht erforderlich.

Das Projekt hat länger gedauert als erwartet. Neben der Aktualisierung auf C++17 wurde es als Gelegenheit für ein massives Refactoring des Codes sowie eine allgemeine Steigerung von Codequalität, Testbarkeit und Zuverlässigkeit genutzt. Ein Artikel über das Experiment wird in einer kommenden Ausgabe des ACM Queue erscheinen.

Kategorien