Volver a actualizaciones
Nuevo releaseAug 13, 2026

bulk_extractor v2.2.0beta2

Este es el árbol de desarrollo. Las descargas de producción están en:

Compartir

codecov Coverity Scan Build Status

bulk_extractor es una herramienta de explotación forense digital de alto rendimiento. Es un botón de "obtener evidencia" que escanea rápidamente cualquier tipo de entrada (imágenes de disco, archivos, directorios de archivos, etc.) y extrae información estructurada como direcciones de correo electrónico, números de tarjetas de crédito, JPEG y fragmentos JSON sin analizar el sistema de archivos ni sus estructuras. Los resultados se almacenan en archivos de texto que se pueden inspeccionar, buscar o utilizar fácilmente como entradas para otros procesos forenses. bulk_extractor también crea histogramas de ciertos tipos de características que encuentra, como términos de búsqueda de Google y direcciones de correo electrónico, ya que investigaciones anteriores han demostrado que dichos histogramas son especialmente útiles en aplicaciones de investigación y aplicación de la ley.

A diferencia de otras herramientas de forensia digital, bulk_extractor examina cada byte de datos para determinar si es el inicio de una secuencia que puede descomprimirse o decodificarse de alguna otra forma. Si es así, los datos decodificados se vuelven a examinar recursivamente. Como resultado, bulk_extractor puede encontrar elementos como JPEG codificados en BASE64 y objetos JSON comprimidos que las herramientas de carving tradicionales pasan por alto.

Este árbol de fuentes compila bulk_extractor 2.2.0. Para uso en producción, prefiera una versión probada de https://github.com/simsong/bulk_extractor/releases.

Compilación de bulk_extractor

Recomendamos compilar desde las fuentes. Proporcionamos varios scripts bash en el directorio etc/ que configurarán una máquina virtual limpia:

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

Para obtener instrucciones detalladas sobre cómo instalar los paquetes y compilar bulk_extractor, lea la página wiki aquí: https://github.com/simsong/bulk_extractor/wiki/Installing-bulk_extractor

Para más información sobre bulk_extractor, visite: https://forensics.wiki/bulk_extractor

Documentación

Los manuales PDF generados se publican en https://simsong.github.io/bulk_extractor/ después de que los cambios se fusionen en main. Contiene los manuales de operación y de desarrollador de la 2.2. Las solicitudes de incorporación de cambios (pull requests) reciben los mismos PDF como artefacto del flujo de trabajo.

Configuraciones probadas

Esta versión de bulk_extractor requiere C++17. La validación actual cubre:

  • Apple Silicon macOS (compilación local y make distcheck, 2026-07-19)
  • Ubuntu 22.04 y los runners actuales de macOS en GitHub Actions

Los scripts de preparación de plataformas más antiguos en etc/ no son equivalentes al soporte actual de CI y pueden requerir mantenimiento.

Configuraciones probadas en las que bulk_extractor no funciona

  • Debian 10 (no compatible con compilaciones nativas)

CITACIÓN RECOMENDADA

Si está escribiendo un artículo científico y utiliza bulk_extractor, cícelo 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}
}

VARIABLES DE ENTORNO

Las siguientes variables de entorno se pueden configurar para cambiar el funcionamiento de bulk_extractor:

VariableComportamiento
DEBUG_BENCHMARKIncluye información de referencia de CPU en el archivo report.xml
DEBUG_NO_SCANNER_BYPASSDesactiva la lógica de omisión de escáneres que evita algunos escáneres si un sbuf contiene n-gramas o no tiene un recuento alto de caracteres distintos.
DEBUG_HISTOGRAMSImprime información de depuración sobre histogramas basados en archivos.
DEBUG_HISTOGRAMS_NO_INCREMENTALNo utiliza histogramas incrementales basados en memoria.
DEBUG_PRINT_STEPSImprime en stdout cuando se llama a cada escáner para cada sbuf
DEBUG_SCANNER_DUMP_DATAVuelca en hexadecimal cada sbuf que se va a escanear.
DEBUG_SCANNERS_IGNOREUna subcadena utilizada para identificar escáneres que se deben ignorar. Útil para depurar pruebas unitarias.

Otras sugerencias para la depuración:

  • Ejecute -xall para ejecutar sin ningún escáner.
  • Ejecute con un muestreo aleatorio del 0.001% para depurar la lectura del tamaño de la imagen y algunas búsquedas rápidas.

ESCÁNERES CARGABLES

bulk_extractor carga módulos de escáner llamados scan_.so (o scan_.dylib en macOS y scan_*.dll en Windows) desde los directorios proporcionados con -P o en BE_PATH. Un módulo exporta esta fábrica de enlazado C:

extern "C" scanner_t *bulk_extractor_scanner_v1();

La fábrica devuelve una función scanner_t normal. Compile los módulos contra la misma versión del código fuente de bulk_extractor que el ejecutable; el manejador PHASE_INIT del escáner debe llamar a sp.check_version(). Los módulos permanecen cargados hasta que se complete la limpieza del escáner.

COMPILACIÓN EN WINDOWS

Las compilaciones nativas de bulk_extractor para Windows no son compatibles actualmente.

El flujo de trabajo de GitHub Actions Windows MinGW build compila de forma cruzada el ejecutable en Ubuntu para cada solicitud de incorporación de cambios y sube bulk_extractor64.exe en el artefacto bulk_extractor-windows-x86_64. El flujo de trabajo verifica que el ejecutable PE no importe las DLL de tiempo de ejecución de MinGW, RE2, Abseil, Expat, zlib o GNU crypto. Un runner de Windows descarga y ejecuta ese mismo artefacto contra un directorio con un nombre de archivo Unicode. El flujo de trabajo utiliza la cadena de herramientas POSIX x86_64 MinGW-w64 y Expat, RE2 y Abseil estáticos de un checkout de vcpkg fijado. El artefacto de CI se compila actualmente sin libewf, por lo que no incluye soporte para E01, no está firmado y no es un instalador de versión final. El archivo del flujo de trabajo y sus notas de compilación mantenidas son .github/workflows/mingw.yml y doc/mingw_notes.txt.

NOTAS DE LA VERSIÓN DE BULK_EXTRACTOR

Versión 2.2.0 (19 de julio de 2026)

Se integró la API be20 y sus dependencias de código fuente en el árbol de fuentes de bulk_extractor, eliminando la configuración recursiva de submódulos. La compilación unificada ahora valida bulk_extractor, be20 y DFXML conjuntamente y corrige defectos de cierre del grupo de subprocesos encontrados mediante pruebas de imagen completa y AddressSanitizer.

Versión 2.1.1 (26 de abril de 2024)

Se renombró el registrador de características jpeg_carved a jpeg, de modo que el modo de carving jpeg se pueda establecer con -S jpeg_carve_mode=2, en lugar de -S jpeg_carved_carve_mode=2, que resultaba confuso.

Versión 2.0

bulk_extractor 2.0 (BE2) ya está operativo. Aunque funciona con el visor basado en Java, actualmente no disponemos de un instalador que funcione en Windows.

BE2 requiere C++17 para compilar. Las fuentes de la API de escáner be20, dfxml_cpp, utfcpp y el esquema DFXML se mantienen directamente en este repositorio; no se requiere una descarga recursiva de submódulos.

El proyecto tomó más tiempo de lo previsto. Además de la actualización a C++17, se aprovechó como una oportunidad para una refactorización masiva del código y un aumento general de la calidad, la capacidad de prueba y la fiabilidad del código. Un artículo sobre el experimento aparecerá en un próximo número de ACM Queue

Categorías