
Это дерево разработки. Производственные загрузки доступны по адресу:
bulk_extractor — это высокопроизводительный инструмент цифровой криминалистики для
извлечения данных. Это кнопка «получить улики», которая быстро сканирует любые
входные данные (образы дисков, файлы, каталоги файлов и т. д.) и извлекает
структурированную информацию, такую как адреса электронной почты, номера кредитных карт,
JPEG и фрагменты JSON, без разбора файловой системы или её
структур. Результаты сохраняются в текстовых файлах, которые легко
просматривать, искать или использовать в качестве входных данных для дальнейшей
обработки. bulk_extractor также создаёт гистограммы определённых типов
обнаруживаемых признаков, таких как поисковые запросы Google и адреса
электронной почты, поскольку предыдущие исследования показали, что такие гистограммы
особенно полезны в расследованиях и правоохранительной практике.
В отличие от других инструментов цифровой криминалистики, bulk_extractor проверяет каждый байт данных, чтобы определить, не является ли он началом
последовательности, которую можно распаковать или иным образом декодировать. Если да, то
декодированные данные рекурсивно пересматриваются. В результате bulk_extractor может находить такие объекты, как JPEG в кодировке BASE64 и
сжатые JSON-объекты, которые традиционные инструменты карвинга упускают.
Это дерево исходников собирает bulk_extractor 2.2.0. Для производственного использования предпочтите протестированный релиз с https://github.com/simsong/bulk_extractor/releases.
bulk_extractorМы рекомендуем собирать из исходников. Мы предоставляем несколько bash-скриптов в каталоге etc/, которые настроят чистую виртуальную машину:
git clone https://github.com/simsong/bulk_extractor.git
./bootstrap.sh
./configure
make
make check
make install
Подробные инструкции по установке пакетов и сборке bulk_extractor читайте на странице вики: https://github.com/simsong/bulk_extractor/wiki/Installing-bulk_extractor
Дополнительную информацию о bulk_extractor см. на сайте: https://forensics.wiki/bulk_extractor
Сгенерированные PDF-руководства публикуются по адресу
https://simsong.github.io/bulk_extractor/ после объединения изменений в main.
Они содержат руководства по эксплуатации и для разработчиков версии 2.2. Pull request'ы получают
те же PDF-файлы в качестве артефакта workflow.
Этот выпуск bulk_extractor требует C++17. Текущая проверка охватывает:
make distcheck, 2026-07-19)Старые скрипты подготовки платформ в etc/ не эквивалентны текущей
поддержке CI и могут потребовать обслуживания.
Если вы пишете научную статью и используете bulk_extractor, пожалуйста, цитируйте его следующим образом:
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}
}
Следующие переменные среды могут быть установлены для изменения работы bulk_extractor:
| Переменная | Поведение |
|---|---|
DEBUG_BENCHMARK | Включает информацию о бенчмарке CPU в файл report.xml |
DEBUG_NO_SCANNER_BYPASS | Отключает логику обхода сканеров, которая пропускает некоторые сканеры, если sbuf содержит n-граммы или не имеет высокого количества уникальных символов. |
DEBUG_HISTOGRAMS | Выводит отладочную информацию о файловых гистограммах. |
DEBUG_HISTOGRAMS_NO_INCREMENTAL | Не использовать инкрементальные гистограммы, основанные на памяти. |
DEBUG_PRINT_STEPS | Выводит в stdout, когда каждый сканер вызывается для каждого sbuf |
DEBUG_SCANNER_DUMP_DATA | Выполняет hex-дамп каждого sbuf, который должен быть просканирован. |
DEBUG_SCANNERS_IGNORE | Подстрока, используемая для определения сканеров, которые следует игнорировать. Полезна для отладки модульных тестов. |
Другие советы по отладке:
bulk_extractor загружает модули сканеров с именами scan_.so (или scan_.dylib на macOS и scan_*.dll на Windows) из каталогов, указанных с помощью -P или в BE_PATH. Модуль экспортирует эту фабрику с C-линковкой:
extern "C" scanner_t *bulk_extractor_scanner_v1();
Фабрика возвращает обычную функцию scanner_t. Собирайте модули против той же версии исходников bulk_extractor, что и исполняемый файл; обработчик PHASE_INIT сканера должен вызывать sp.check_version(). Модули остаются загруженными до завершения очистки сканера.
Нативные сборки bulk_extractor для Windows в настоящее время не поддерживаются.
Workflow GitHub Actions Windows MinGW build кросс-компилирует исполняемый файл
на Ubuntu для каждого pull request и загружает bulk_extractor64.exe в
артефакт bulk_extractor-windows-x86_64. Workflow проверяет, что PE-исполняемый
файл не импортирует MinGW, RE2, Abseil, Expat, zlib или GNU crypto
runtime DLL. Windows-раннер скачивает и запускает именно этот артефакт в
каталоге с Unicode-именем файла. Workflow использует цепочку инструментов x86_64 MinGW-w64
POSIX и статические Expat, RE2 и Abseil из зафиксированного vcpkg checkout.
CI-артефакт в настоящее время собирается без libewf, поэтому не включает поддержку E01,
не подписан и не является установочным релизом. Файл workflow и
его поддерживаемые заметки по сборке: .github/workflows/mingw.yml и
doc/mingw_notes.txt.
Интегрированы API be20 и его исходные зависимости в дерево исходников bulk_extractor, что устраняет рекурсивную настройку подмодулей. Единая сборка теперь проверяет bulk_extractor, be20 и DFXML вместе и исправляет дефекты завершения пула потоков, обнаруженные при тестировании полных образов и с помощью AddressSanitizer.
Переименован регистратор признаков jpeg_carved в jpeg, чтобы режим jpeg carve можно было задавать с помощью -S jpeg_carve_mode=2, а не -S jpeg_carved_carve_mode=2, что было запутанно.
bulk_extractor 2.0 (BE2) теперь работает. Хотя он работает с просмотрщиком на основе Java, в настоящее время у нас нет установщика, работающего в Windows.
Для компиляции BE2 требуется C++17. Исходники API сканеров be20, dfxml_cpp, utfcpp и схемы DFXML поддерживаются непосредственно в этом репозитории; рекурсивное оформление подмодулей не требуется.
Проект занял больше времени, чем ожидалось. Помимо перехода на C++17, он был использован как возможность для масштабного рефакторинга кода и общего повышения качества, тестируемости и надёжности кода. Статья об этом эксперименте появится в одном из ближайших выпусков ACM Queue.