Ceci est l'arbre de développement. Les téléchargements de production se trouvent à :
bulk_extractor est un outil d'exploitation en criminalistique numérique à hautes performances. C'est un bouton « obtenir des preuves » qui analyse rapidement tout type d'entrée (images disque, fichiers, répertoires de fichiers, etc.) et extrait des informations structurées telles que des adresses e-mail, des numéros de carte de crédit, des JPEG et des extraits JSON sans analyser le système de fichiers ni les structures du système de fichiers. Les résultats sont stockés dans des fichiers texte faciles à inspecter, à rechercher ou à utiliser comme entrées pour d'autres traitements criminalistiques. bulk_extractor crée également des histogrammes de certains types de caractéristiques qu'il trouve, comme les termes de recherche Google et les adresses e-mail, car des recherches antérieures ont montré que ces histogrammes sont particulièrement utiles dans les applications d'investigation et de forces de l'ordre.
Contrairement à d'autres outils de criminalistique numérique, bulk_extractor sonde chaque octet de données pour voir s'il s'agit du début d'une séquence pouvant être décompressée ou autrement décodée. Si c'est le cas, les données décodées sont réexaminées de manière récursive. Par conséquent, bulk_extractor peut trouver des éléments comme des JPEG encodés en BASE64 et des objets JSON compressés que les outils de carving traditionnels manquent.
Cette arborescence source construit bulk_extractor 2.2.0. Pour une utilisation en production, préférez une version testée depuis https://github.com/simsong/bulk_extractor/releases.
bulk_extractorNous recommandons de compiler à partir des sources. Nous fournissons un certain nombre de scripts bash dans le répertoire etc/ qui configureront une machine virtuelle propre :
git clone https://github.com/simsong/bulk_extractor.git
./bootstrap.sh
./configure
make
make check
make install
Pour des instructions détaillées sur l'installation des paquets et la compilation de bulk_extractor, consultez la page wiki ici : https://github.com/simsong/bulk_extractor/wiki/Installing-bulk_extractor
Pour plus d'informations sur bulk_extractor, visitez : https://forensics.wiki/bulk_extractor
Les manuels PDF générés sont publiés à l'adresse
https://simsong.github.io/bulk_extractor/ après fusion des modifications dans main.
Ils contiennent les manuels d'utilisation et de développement de la version 2.2. Les pull requests reçoivent les
mêmes PDF en tant qu'artefact de workflow.
Cette version de bulk_extractor nécessite C++17. La validation actuelle couvre :
make distcheck, 2026-07-19)Les anciens scripts de préparation de plateforme sous etc/ ne sont pas équivalents au support
CI actuel et peuvent nécessiter de la maintenance.
Si vous rédigez un article scientifique et utilisez bulk_extractor, veuillez le citer ainsi :
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}
}
Les variables d'environnement suivantes peuvent être définies pour modifier le fonctionnement de bulk_extractor :
| Variable | Comportement |
|---|---|
DEBUG_BENCHMARK | Inclut les informations de benchmark CPU dans le fichier report.xml |
DEBUG_NO_SCANNER_BYPASS | Désactive la logique de contournement des scanners qui ignore certains scanners si un sbuf contient des n-grammes ou ne présente pas un nombre élevé de caractères distincts. |
DEBUG_HISTOGRAMS | Affiche des informations de débogage sur les histogrammes basés sur les fichiers. |
DEBUG_HISTOGRAMS_NO_INCREMENTAL | N'utilise pas d'histogrammes incrémentaux en mémoire. |
DEBUG_PRINT_STEPS | Affiche sur stdout lorsque chaque scanner est appelé pour chaque sbuf |
DEBUG_SCANNER_DUMP_DATA | Effectue un vidage hexadécimal de chaque sbuf à scanner. |
DEBUG_SCANNERS_IGNORE | Une sous-chaîne utilisée pour identifier les scanners à ignorer. Utile pour déboguer les tests unitaires. |
Autres astuces de débogage :
bulk_extractor charge les modules de scanner nommés scan_.so (ou scan_.dylib sur macOS et scan_*.dll sur Windows) depuis les répertoires fournis avec -P ou dans BE_PATH. Un module exporte cette fabrique à liaison C :
extern "C" scanner_t *bulk_extractor_scanner_v1();
La fabrique renvoie une fonction scanner_t normale. Compilez les modules avec la même version des sources de bulk_extractor que l'exécutable ; le gestionnaire PHASE_INIT du scanner doit appeler sp.check_version(). Les modules restent chargés jusqu'à ce que le nettoyage des scanners soit terminé.
Les compilations natives de bulk_extractor sous Windows ne sont actuellement pas prises en charge.
Le workflow GitHub Actions Windows MinGW build effectue une compilation croisée de l'exécutable
sur Ubuntu à chaque pull request et téléverse bulk_extractor64.exe dans
l'artefact bulk_extractor-windows-x86_64. Le workflow vérifie que l'exécutable PE
n'importe pas les DLL d'exécution MinGW, RE2, Abseil, Expat, zlib ou GNU crypto.
Un runner Windows télécharge et exécute cet artefact exact sur
un répertoire contenant un nom de fichier Unicode. Le workflow utilise la chaîne d'outils
POSIX MinGW-w64 x86_64 et les bibliothèques statiques Expat, RE2 et Abseil issues d'un checkout vcpkg épinglé.
L'artefact CI est actuellement compilé sans libewf, il n'inclut donc pas la prise en charge
E01, n'est pas signé et n'est pas un installateur de version. Le fichier de workflow et
ses notes de compilation maintenues sont .github/workflows/mingw.yml et
doc/mingw_notes.txt.
Intégration de l'API be20 et de ses dépendances sources dans l'arborescence source de bulk_extractor, éliminant la configuration récursive des sous-modules. La compilation unifiée valide désormais bulk_extractor, be20 et DFXML ensemble et corrige les défauts d'arrêt du pool de threads découverts par les tests sur image complète et AddressSanitizer.