Torna agli aggiornamenti
New releaseAug 13, 2026

bulk_extractor v2.2.0beta2

Questo è l'albero di sviluppo. I download di produzione si trovano su:

Condividi

codecov Coverity Scan Build Status

bulk_extractor è uno strumento ad alte prestazioni per l'estrazione di dati forensi digitali. È un pulsante "ottieni prove" che scansiona rapidamente qualsiasi tipo di input (immagini disco, file, directory di file, ecc.) ed estrae informazioni strutturate come indirizzi email, numeri di carte di credito, JPEG e frammenti JSON senza analizzare il file system o le strutture del file system. I risultati vengono salvati in file di testo facilmente ispezionabili, ricercabili o utilizzabili come input per altre elaborazioni forensi. bulk_extractor crea anche istogrammi di alcuni tipi di caratteristiche che trova, come termini di ricerca Google e indirizzi email, poiché ricerche precedenti hanno dimostrato che tali istogrammi sono particolarmente utili nelle applicazioni investigative e delle forze dell'ordine.

A differenza di altri strumenti di informatica forense, bulk_extractor esamina ogni byte di dati per verificare se è l'inizio di una sequenza che può essere decompressa o comunque decodificata. In tal caso, i dati decodificati vengono riesaminati in modo ricorsivo. Di conseguenza, bulk_extractor può trovare elementi come JPEG codificati in BASE64 e oggetti JSON compressi che gli strumenti di carving tradizionali non rilevano.

Questo albero sorgente compila bulk_extractor 2.2.0. Per l'uso in produzione, preferire una release testata da https://github.com/simsong/bulk_extractor/releases.

Compilazione di bulk_extractor

Consigliamo di compilare dai sorgenti. Forniamo una serie di script bash nella directory etc/ che configurano una macchina virtuale pulita:

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

Per istruzioni dettagliate sull'installazione dei pacchetti e sulla compilazione di bulk_extractor, leggi la pagina wiki qui: https://github.com/simsong/bulk_extractor/wiki/Installing-bulk_extractor

Per maggiori informazioni su bulk_extractor, visita: https://forensics.wiki/bulk_extractor

Documentazione

I manuali PDF generati vengono pubblicati all'indirizzo https://simsong.github.io/bulk_extractor/ dopo che le modifiche vengono unite in main. Contengono i manuali operativi e per sviluppatori della versione 2.2. Le pull request ricevono gli stessi PDF come artefatto del workflow.

Configurazioni testate

Questa versione di bulk_extractor richiede C++17. La validazione attuale copre:

  • Apple Silicon macOS (build locale e make distcheck, 2026-07-19)
  • Ubuntu 22.04 e runner GitHub Actions macOS correnti

Gli script di preparazione per piattaforme meno recenti in etc/ non sono equivalenti al supporto CI attuale e potrebbero richiedere manutenzione.

Configurazioni testate in cui bulk_extractor non funziona

  • Debian 10 (non supportata per build native)

CITAZIONE CONSIGLIATA

Se stai scrivendo un articolo scientifico e utilizzi bulk_extractor, citalo con:

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}
}

VARIABILI D'AMBIENTE

Le seguenti variabili d'ambiente possono essere impostate per modificare il funzionamento di bulk_extractor:

VariabileComportamento
DEBUG_BENCHMARKInclude le informazioni sul benchmark della CPU nel file report.xml
DEBUG_NO_SCANNER_BYPASSDisabilita la logica di bypass degli scanner che salta alcuni scanner se un sbuf contiene n-grammi o non ha un elevato numero di caratteri distinti.
DEBUG_HISTOGRAMSStampa informazioni di debug sugli istogrammi basati su file.
DEBUG_HISTOGRAMS_NO_INCREMENTALNon usare istogrammi incrementali basati su memoria.
DEBUG_PRINT_STEPSStampa su stdout quando ogni scanner viene chiamato per ogni sbuf
DEBUG_SCANNER_DUMP_DATAEsegue l'hex-dump di ogni sbuf che deve essere scansionato.
DEBUG_SCANNERS_IGNOREUna sottostringa usata per identificare gli scanner da ignorare. Utile per il debug dei test unitari.

Altri suggerimenti per il debug:

  • Esegui -xall per eseguire senza alcuno scanner.
  • Esegui con un campionamento casuale dello 0.001% per eseguire il debug della lettura della dimensione dell'immagine e di alcune ricerche rapide.

SCANNER CARICABILI

bulk_extractor carica moduli scanner chiamati scan_.so (o scan_.dylib su macOS e scan_*.dll su Windows) dalle directory fornite con -P o in BE_PATH. Un modulo esporta questa factory a collegamento C:

extern "C" scanner_t *bulk_extractor_scanner_v1();

La factory restituisce una normale funzione scanner_t. Compila i moduli contro la stessa versione dei sorgenti bulk_extractor dell'eseguibile; il gestore PHASE_INIT dello scanner deve chiamare sp.check_version(). I moduli rimangono caricati fino al completamento della pulizia dello scanner.

COMPILAZIONE SU WINDOWS

Le build native di bulk_extractor su Windows non sono attualmente supportate.

Il workflow di GitHub Actions Windows MinGW build cross-compila l'eseguibile su Ubuntu per ogni pull request e carica bulk_extractor64.exe nell'artefatto bulk_extractor-windows-x86_64. Il workflow verifica che l'eseguibile PE non importi le DLL runtime di MinGW, RE2, Abseil, Expat, zlib o GNU crypto. Un runner Windows scarica ed esegue esattamente quell'artefatto in una directory con un nome file Unicode. Il workflow usa la toolchain POSIX x86_64 MinGW-w64 e le librerie statiche Expat, RE2 e Abseil da un checkout vcpkg bloccato. L'artefatto CI è attualmente compilato senza libewf, quindi non include il supporto E01, non è firmato e non è un installer di release. Il file del workflow e le relative note di build sono .github/workflows/mingw.yml e doc/mingw_notes.txt.

NOTE DI RILASCIO DI BULK_EXTRACTOR

Versione 2.2.0 (19 luglio 2026)

Integrato l'API be20 e le sue dipendenze sorgente nell'albero dei sorgenti di bulk_extractor, eliminando la configurazione ricorsiva dei sottomoduli. La build unificata ora valida insieme bulk_extractor, be20 e DFXML e corregge i difetti di arresto del thread-pool trovati dai test su immagini complete e da AddressSanitizer.

Versione 2.1.1 (26 aprile 2024)

Rinominato il feature recorder jpeg_carved in jpeg, così la modalità di carve JPEG può essere impostata con -S jpeg_carve_mode=2, invece di -S jpeg_carved_carve_mode=2, che era fonte di confusione.

Versione 2.0

bulk_extractor 2.0 (BE2) è ora operativo. Sebbene funzioni con il visualizzatore basato su Java, al momento non abbiamo un programma di installazione che funzioni su Windows.

BE2 richiede C++17 per la compilazione. I sorgenti dell'API scanner be20, di dfxml_cpp, utfcpp e dello schema DFXML sono mantenuti direttamente in questo repository; non è richiesto un checkout ricorsivo dei sottomoduli.

Il progetto ha richiesto più tempo del previsto. Oltre all'aggiornamento a C++17, è stato usato come occasione per un massiccio refactoring del codice e un aumento generale di qualità, testabilità e affidabilità del codice. Un articolo sull'esperimento apparirà in un prossimo numero di ACM Queue.

Categorie