
SentinelNav: 종속성 없는 순수 Python 바이너리 시각화 및 포렌식 도구.
SentinelNav는 의존성이 없는 순수 Python 바이너리 시각화 및 포렌식 도구입니다. 바이너리 데이터를 대화형 스펙트럼 맵으로 변환하여 분석가가 파일 구조, 엔트로피 이상, 코드 섹션 및 잠재적인 암호화 블롭을 시각적으로 식별할 수 있도록 합니다.
다중 처리 백엔드를 사용하여 파일을 빠르게 스캔하고, 로컬 웹 기반 프론트엔드를 통해 대화형 탐색, 16진수 검사 및 아키텍처 핑거프린팅을 제공합니다.

SentinelNav는 Python 표준 라이브러리만 사용하므로 외부 패키지 설치가 필요하지 않습니다.
sentinelnav.py로 저장합니다.python3 sentinelnav.py
http://localhost:8000을 엽니다.pip install 없이 모든 표준 Python 3 설치에서 실행 가능.0x0A)를 기준으로 파일을 분할.concurrent.futures.ProcessPoolExecutor를 사용하여 모든 CPU 코어 활용.SentinelNav는 생산자-소비자 아키텍처와 클라이언트-서버 인터페이스를 따릅니다.
N바이트를 반복적으로 읽음.Processor는 CPU 수에 따라 작업자 풀을 생성.sqlite3 데이터베이스가 바이너리 파일의 구조화된 인덱스를 생성.http.server.ThreadingMixIn 구현./data: 청크 데이터(색상 + 엔트로피)의 JSON 페이지 반환./read: 검사 패널용 특정 16진수 덤프./search: 물리 파일에서 16진수 시퀀스 검색./download: 원시 바이너리 블롭 추출 또는 BMP 시각화 생성.이 도구는 특정 RGB 알고리즘을 사용하여 바이너리 데이터 유형을 나타냅니다.
| 색상 | 구성 요소 | 의미 |
|---|---|---|
| 빨강 | High Bit | 바이트 0x80 - 0xFF. 컴파일된 기계어 코드, 압축 데이터, 암호화된 블롭 또는 이미지 데이터를 나타냄. |
| 초록 | ASCII | 바이트 0x20 - 0x7E. 일반 텍스트, 소스 코드, JSON, XML 또는 로그를 나타냄. |
| 파랑 | 제어 | 바이트 0x00 - 0x1F. 널 패딩, 헤더 또는 프로토콜 제어 문자를 나타냄. |
일반적인 패턴:
설치할 라이브러리가 없습니다. 파일을 다운로드하기만 하면 됩니다.
# 스크립트 복제 또는 다운로드
wget https://raw.githubusercontent.com/smolfiddle/SentinelNav/main/sentinelnav.py
도구는 대화형으로 실행하거나 명령줄 인수를 사용하여 실행할 수 있습니다.
인수 없이 실행하면 마법사가 시작됩니다.
python3 sentinelnav.py
자동화 또는 고급 사용자를 위해 플래그를 사용하여 마법사를 건너뜁니다.
python3 sentinelnav.py <대상_파일> [옵션]
| 인수 | 설명 | 기본값 |
|---|---|---|
--mode | 스캔 모드: fixed 또는 sentinel. | fixed |
--size | 고정 모드의 블록 크기(바이트) 또는 센티넬의 최대 버퍼. | 1024 |
--hex | 센티넬 모드의 구분자 바이트(예: 개행의 경우 0A). | 00 |
--port | 웹 서버 포트. | 8000 |
--window | 이상 탐지 계산을 위한 슬라이딩 윈도우 크기. | 5 |
예제: 펌웨어 이미지를 256바이트 해상도로 포트 8080에서 스캔:
python3 sentinelnav.py firmware.bin --size 256 --port 8080
웹 인터페이스가 로드된 후 다음 제어가 가능합니다.
| 키 | 동작 |
|---|---|
| W / A / S / D | 선택 커서 이동 (위/왼쪽/아래/오른쪽). |
| 왼쪽 화살표 | 이전 페이지. |
| 오른쪽 화살표 | 다음 페이지. |
| Shift + WASD | 블록 범위 선택 (다중 선택). |
| Shift + 클릭 | 이전 앵커에서 클릭한 블록까지의 범위 선택. |