
Esta é a árvore de desenvolvimento. Downloads de produção estão em:
bulk_extractor é uma ferramenta de exploração forense digital de alto desempenho. É um botão de "obter evidências" que examina rapidamente qualquer tipo de entrada (imagens de disco, arquivos, diretórios de arquivos, etc.) e extrai informações estruturadas, como endereços de e-mail, números de cartão de crédito, JPEGs e trechos de JSON, sem analisar o sistema de arquivos ou as estruturas do sistema de arquivos. Os resultados são armazenados em arquivos de texto que podem ser facilmente inspecionados, pesquisados ou usados como entradas para outros processamentos forenses. O bulk_extractor também cria histogramas de certos tipos de características que encontra, como termos de busca do Google e endereços de e-mail, pois pesquisas anteriores mostraram que tais histogramas são especialmente úteis em aplicações investigativas e de aplicação da lei.
Ao contrário de outras ferramentas de forense digital, o bulk_extractor sonda cada byte de dados para verificar se é o início de uma sequência que pode ser descompactada ou de outra forma decodificada. Se for, os dados decodificados são reexaminados recursivamente. Como resultado, o bulk_extractor consegue encontrar coisas como JPEGs codificados em BASE64 e objetos JSON compactados que ferramentas tradicionais de carving deixam passar.
Esta árvore de código-fonte compila o bulk_extractor 2.2.0. Para uso em produção, prefira uma versão testada de https://github.com/simsong/bulk_extractor/releases.
bulk_extractorRecomendamos compilar a partir do código-fonte. Fornecemos vários scripts bash no diretório etc/ que configurarão uma máquina virtual limpa:
git clone https://github.com/simsong/bulk_extractor.git
./bootstrap.sh
./configure
make
make check
make install
Para obter instruções detalhadas sobre como instalar pacotes e compilar o bulk_extractor, leia a página da wiki aqui: https://github.com/simsong/bulk_extractor/wiki/Installing-bulk_extractor
Para mais informações sobre o bulk_extractor, visite: https://forensics.wiki/bulk_extractor
Os manuais em PDF gerados são publicados em
https://simsong.github.io/bulk_extractor/ após as alterações serem mescladas em main.
Ele contém os manuais de operação e de desenvolvedor da versão 2.2. Os pull requests recebem os
mesmos PDFs como um artefato de workflow.
Esta versão do bulk_extractor requer C++17. A validação atual abrange:
make distcheck, 2026-07-19)Os scripts mais antigos de preparação de plataformas em etc/ não são equivalentes ao suporte
atual de CI e podem exigir manutenção.
Se você estiver escrevendo um artigo científico e usando o bulk_extractor, cite-o com:
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}
}
As seguintes variáveis de ambiente podem ser definidas para alterar o funcionamento do bulk_extractor:
| Variável | Comportamento |
|---|---|
DEBUG_BENCHMARK | Inclui informações de benchmark de CPU no arquivo report.xml |
DEBUG_NO_SCANNER_BYPASS | Desativa a lógica de bypass de scanner que ignora alguns scanners se um sbuf contiver ngrams ou não tiver uma alta contagem de caracteres distintos. |
DEBUG_HISTOGRAMS | Imprime informações de depuração sobre histogramas baseados em arquivos. |
DEBUG_HISTOGRAMS_NO_INCREMENTAL | Não usa histogramas incrementais baseados em memória. |
DEBUG_PRINT_STEPS | Imprime em stdout quando cada scanner é chamado para cada sbuf |
DEBUG_SCANNER_DUMP_DATA | Faz hex-dump de cada sbuf que será escaneado. |
DEBUG_SCANNERS_IGNORE | Uma substring usada para identificar scanners a serem ignorados. Útil para depurar testes unitários. |
Outras dicas para depuração:
O bulk_extractor carrega módulos de scanner chamados scan_.so (ou scan_.dylib no macOS e scan_*.dll no Windows) a partir dos diretórios fornecidos com -P ou em BE_PATH. Um módulo exporta esta factory com linkage C:
extern "C" scanner_t *bulk_extractor_scanner_v1();
A factory retorna uma função scanner_t normal. Compile os módulos com a mesma versão do código-fonte do bulk_extractor que o executável; o handler PHASE_INIT do scanner deve chamar sp.check_version(). Os módulos permanecem carregados até que a limpeza do scanner seja concluída.
Compilações nativas do bulk_extractor para Windows não são atualmente suportadas.
O workflow do GitHub Actions Windows MinGW build faz cross-compile do executável
no Ubuntu para cada pull request e envia bulk_extractor64.exe no
artefato bulk_extractor-windows-x86_64. O workflow verifica que o executável
PE não importa as DLLs de runtime do MinGW, RE2, Abseil, Expat, zlib ou GNU crypto.
Um runner Windows baixa e executa esse artefato exato contra
um diretório com um nome de arquivo Unicode. O workflow usa a toolchain x86_64 MinGW-w64
POSIX e Expat, RE2 e Abseil estáticos de um checkout vcpkg fixado.
O artefato de CI é atualmente compilado sem libewf, portanto não inclui suporte
a E01, não é assinado e não é um instalador de release. O arquivo do workflow e
suas notas de compilação mantidas são .github/workflows/mingw.yml e
doc/mingw_notes.txt.
Integrou a API be20 e suas dependências de código-fonte à árvore de código-fonte do bulk_extractor, eliminando a configuração recursiva de submódulos. A compilação unificada agora valida bulk_extractor, be20 e DFXML em conjunto e corrige defeitos de encerramento do thread-pool encontrados por testes de imagem completa e AddressSanitizer.
Renomeou o gravador de features jpeg_carved para jpeg, para que o modo de carve jpeg possa ser definido com -S jpeg_carve_mode=2, em vez de -S jpeg_carved_carve_mode=2, o que era confuso.
O bulk_extractor 2.0 (BE2) agora está operacional. Embora funcione com o visualizador
baseado em Java, atualmente não temos um instalador que rode no Windows.