
Это дерево разработки. Производственные загрузки доступны по адресу:
[](https://codecov.io/gh/simsong/bulk_extractor)
<a href="https://scan.coverity.com/projects/simsong-bulk_extractor">
<img alt="Coverity Scan Build Status" src="https://scan.coverity.com/projects/29726/badge.svg"/></a>
`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. Текущая проверка охватывает:
* Apple Silicon macOS (локальная сборка и `make distcheck`, 2026-07-19)
* Ubuntu 22.04 и текущие GitHub Actions раннеры macOS
Старые скрипты подготовки платформ в `etc/` не эквивалентны текущей
поддержке CI и могут потребовать обслуживания.
Проверенные конфигурации, на которых bulk_extractor не работает
========================================================
* Debian 10 (не поддерживается для нативных сборок)
РЕКОМЕНДУЕМОЕ ЦИТИРОВАНИЕ
====================
Если вы пишете научную статью и используете bulk_extractor, пожалуйста, цитируйте его следующим образом:
Garfinkel, Simson, Digital media triage with bulk data analysis and bulk_extractor. Computers and Security 32: 56-72 (2013)
* [Science Direct](https://www.sciencedirect.com/science/article/pii/S0167404812001472)
* [Bibliometrics](https://plu.mx/plum/a/?doi=10.1016/j.cose.2012.09.011&theme=plum-sciencedirect-theme&hideUsage=true)
* [Сайт автора](https://simson.net/clips/academic/2013.COSE.bulk_extractor.pdf)
```
@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`|Подстрока, используемая для определения сканеров, которые следует игнорировать. Полезна для отладки модульных тестов.|
Другие советы по отладке:
* Запустите -xall, чтобы запустить без каких-либо сканеров.
* Запустите со случайной выборкой 0.001% для отладки чтения размера образа и нескольких быстрых поисков.
ЗАГРУЖАЕМЫЕ СКАНЕРЫ
=================
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(). Модули остаются загруженными до завершения
очистки сканера.
СБОРКА В WINDOWS
===================
Нативные сборки 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`.
ПРИМЕЧАНИЯ К ВЫПУСКУ BULK_EXTRACTOR
============================
## Релиз 2.2.0 (19 июля 2026)
Интегрированы API be20 и его исходные зависимости в дерево исходников
bulk_extractor, что устраняет рекурсивную настройку подмодулей. Единая сборка теперь
проверяет bulk_extractor, be20 и DFXML вместе и исправляет дефекты завершения
пула потоков, обнаруженные при тестировании полных образов и с помощью AddressSanitizer.
## Релиз 2.1.1 (26 апреля 2024)
Переименован регистратор признаков jpeg_carved в jpeg, чтобы режим jpeg carve можно было задавать с помощью -S jpeg_carve_mode=2, а не -S jpeg_carved_carve_mode=2, что было запутанно.
## Релиз 2.0
`bulk_extractor` 2.0 (BE2) теперь работает. Хотя он работает с просмотрщиком на основе Java, в настоящее время у нас нет установщика, работающего в Windows.
Для компиляции BE2 требуется C++17. Исходники API сканеров be20, dfxml_cpp, utfcpp и схемы DFXML поддерживаются непосредственно в этом репозитории; рекурсивное оформление подмодулей не требуется.
Проект занял больше времени, чем ожидалось. Помимо перехода на C++17, он был использован как возможность для масштабного рефакторинга кода и общего повышения качества, тестируемости и надёжности кода. Статья об этом эксперименте появится в одном из ближайших выпусков [ACM Queue](https://queue.acm.org/).