
이것은 개발 트리입니다. 프로덕션 다운로드는 다음에서 가능합니다:
bulk_extractor는 고성능 디지털 포렌식 활용 도구입니다. 이는 "증거 확보" 버튼으로, 파일 시스템이나 파일 시스템 구조를 파싱하지 않고도 모든 종류의 입력(디스크 이미지, 파일, 파일 디렉터리 등)을 신속하게 스캔하여 이메일 주소, 신용카드 번호, JPEG, JSON 스니펫과 같은 구조화된 정보를 추출합니다. 결과는 쉽게 검사하거나 검색하거나 다른 포렌식 처리의 입력으로 사용할 수 있는 텍스트 파일에 저장됩니다. bulk_extractor는 또한 Google 검색어 및 이메일 주소와 같이 발견하는 특정 종류의 특징에 대한 히스토그램을 생성하는데, 이는 이전 연구에서 그러한 히스토그램이 수사 및 법 집행 애플리케이션에서 특히 유용하다는 것이 입증되었기 때문입니다.
다른 디지털 포렌식 도구와 달리, bulk_extractor는 데이터의 모든 바이트를 조사하여 압축 해제되거나 다른 방식으로 디코딩될 수 있는 시퀀스의 시작인지 확인합니다. 그렇다면 디코딩된 데이터를 재귀적으로 재검사합니다. 결과적으로 bulk_extractor는 전통적인 카빙 도구가 놓치는 BASE64로 인코딩된 JPEG 및 압축된 JSON 객체와 같은 것들을 찾을 수 있습니다.
이 소스 트리는 bulk_extractor 2.2.0을 빌드합니다. 프로덕션 용도로는 https://github.com/simsong/bulk_extractor/releases 에서 테스트된 릴리스를 선호하십시오.
bulk_extractor 빌드하기소스에서 빌드할 것을 권장합니다. etc/ 디렉터리에 깨끗한 가상 머신을 구성하는 여러 bash 스크립트를 제공합니다:
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 매뉴얼은 변경 사항이 main에 병합된 후
https://simsong.github.io/bulk_extractor/ 에 게시됩니다.
여기에는 2.2 운영 및 개발자 매뉴얼이 포함됩니다. 풀 리퀘스트는
워크플로 아티팩트로 동일한 PDF를 받습니다.
이번 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 | report.xml 파일에 CPU 벤치마크 정보를 포함합니다 |
DEBUG_NO_SCANNER_BYPASS | sbuf에 ngram이 포함되어 있거나 고유 문자 수가 높지 않은 경우 일부 스캐너를 우회하는 스캐너 우회 로직을 비활성화합니다. |
DEBUG_HISTOGRAMS | 파일 기반 히스토그램에 대한 디버깅 정보를 출력합니다. |
DEBUG_HISTOGRAMS_NO_INCREMENTAL | 증분형 메모리 기반 히스토그램을 사용하지 않습니다. |
DEBUG_PRINT_STEPS | 각 sbuf에 대해 각 스캐너가 호출될 때 stdout에 출력합니다 |
DEBUG_SCANNER_DUMP_DATA | 스캔할 각 sbuf를 16진수로 덤프합니다. |
DEBUG_SCANNERS_IGNORE | 무시할 스캐너를 식별하는 데 사용되는 부분 문자열입니다. 단위 테스트 디버깅에 유용합니다. |
디버깅을 위한 기타 힌트:
bulk_extractor는 -P로 제공된 디렉터리 또는 BE_PATH에서 scan_.so(macOS에서는 scan_.dylib, Windows에서는 scan_*.dll)라는 이름의 스캐너 모듈을 로드합니다. 모듈은 다음 C 링키지 팩토리를 내보냅니다:
extern "C" scanner_t *bulk_extractor_scanner_v1();
팩토리는 일반적인 scanner_t 함수를 반환합니다. 모듈은 실행 파일과 동일한 bulk_extractor 소스 버전에 대해 빌드하십시오. 스캐너의 PHASE_INIT 핸들러는 sp.check_version()을 호출해야 합니다. 모듈은 스캐너 정리가 완료될 때까지 로드된 상태로 유지됩니다.
bulk_extractor의 네이티브 Windows 빌드는 현재 지원되지 않습니다.
Windows MinGW build GitHub Actions 워크플로는 모든 풀 리퀘스트에 대해 Ubuntu에서 실행 파일을 크로스 컴파일하고 bulk_extractor-windows-x86_64 아티팩트에 bulk_extractor64.exe를 업로드합니다. 워크플로는 PE 실행 파일이 MinGW, RE2, Abseil, Expat, zlib 또는 GNU crypto 런타임 DLL을 가져오지 않는지 확인합니다. Windows 러너는 해당 아티팩트를 정확히 다운로드하여 유니코드 파일 이름이 있는 디렉터리에 대해 실행합니다. 워크플로는 x86_64 MinGW-w64 POSIX 툴체인과 고정된 vcpkg 체크아웃의 정적 Expat, RE2, Abseil을 사용합니다. CI 아티팩트는 현재 libewf 없이 빌드되므로 E01 지원이 포함되지 않고, 서명되지 않으며, 릴리스 설치 프로그램이 아닙니다. 워크플로 파일과 유지 관리되는 빌드 노트는 .github/workflows/mingw.yml 및 doc/mingw_notes.txt입니다.
be20 API와 그 소스 종속성을 bulk_extractor 소스 트리에 통합하여 재귀적 서브모듈 설정을 제거했습니다. 통합 빌드는 이제 bulk_extractor, be20, DFXML을 함께 검증하며 전체 이미지 테스트와 AddressSanitizer에서 발견된 스레드 풀 종료 결함을 수정합니다.
jpeg_carved 기능 레코더의 이름을 jpeg로 변경하여, 혼란스러웠던 -S jpeg_carved_carve_mode=2 대신 -S jpeg_carve_mode=2로 jpeg carve 모드를 설정할 수 있게 되었습니다.
bulk_extractor 2.0(BE2)이 이제 작동합니다. Java 기반 뷰어와 함께 작동하지만, 현재 Windows에서 실행되는 설치 프로그램은 없습니다.
BE2는 컴파일하려면 C++17이 필요합니다. be20 스캐너 API, dfxml_cpp, utfcpp 및 DFXML 스키마 소스는 이 저장소에서 직접 유지 관리되며, 재귀적 서브모듈 체크아웃이 필요하지 않습니다.
프로젝트는 예상보다 오래 걸렸습니다. C++17로 업데이트하는 것 외에도 대규모 코드 리팩터링과 코드 품질, 테스트 가능성 및 신뢰성의 전반적인 향상을 위한 기회로 활용되었습니다. 이 실험에 관한 기사는 향후 ACM Queue 호에 게재될 예정입니다