SentinelNav 是一款零依赖、纯 Python 实现的二进制可视化与取证工具。它将二进制数据转换为交互式光谱图,使分析人员能够直观识别文件结构、熵异常、代码段以及潜在的加密数据块。
它结合了用于快速文件扫描的多进程后端,以及用于交互式探索、十六进制检查和架构指纹识别的本地 Web 前端。

由于 SentinelNav 仅依赖 Python 标准库,因此无需安装任何外部包。
sentinelnav.py。python3 sentinelnav.py
http://localhost:8000。pip install。0x0A)对文件进行切分。concurrent.futures.ProcessPoolExecutor 在扫描期间利用所有 CPU 核心。SentinelNav 采用生产者-消费者架构,并带有客户端-服务器接口。
N 字节。Processor 根据 CPU 数量生成一个工作进程池。sqlite3 数据库为二进制文件创建结构化索引。http.server.ThreadingMixIn 以并发处理 HTTP 请求。/data:返回块数据的 JSON 分页(颜色 + 熵)。/read:为检查器面板提供特定的十六进制转储。/search:在物理文件中扫描十六进制序列。/download:提取原始二进制数据块或生成 BMP 可视化图像。该工具使用特定的 RGB 算法来表示二进制数据类型。
常见模式:
无需安装任何库,直接下载该文件即可。
# 克隆或下载脚本
wget https://raw.githubusercontent.com/smolfiddle/SentinelNav/main/sentinelnav.py
你可以以交互方式运行该工具,或通过命令行参数运行。
不带参数运行将启动向导:
python3 sentinelnav.py
对于自动化或高级用户,可使用标志跳过向导。
python3 sentinelnav.py <target_file> [options]
示例: 以 256 字节分辨率扫描固件镜像,端口为 8080:
python3 sentinelnav.py firmware.bin --size 256 --port 8080
Web 界面加载后,可使用以下控制:
| 颜色 | 分量 | 含义 |
|---|
| 红色 | 高比特 | 字节 0x80 - 0xFF。表示编译后的机器代码、压缩数据、加密数据块或图像数据。 |
| 绿色 | ASCII | 字节 0x20 - 0x7E。表示纯文本、源代码、JSON、XML 或日志。 |
| 蓝色 | 控制字符 | 字节 0x00 - 0x1F。表示空字节填充、文件头或协议控制字符。 |
| 参数 | 描述 | 默认值 |
|---|
--mode | 扫描模式:fixed 或 sentinel。 | fixed |
--size | 固定模式的块大小(字节),或哨兵模式的最大缓冲区大小。 | 1024 |
--hex | 哨兵模式的分隔符字节(例如,换行符为 0A)。 | 00 |
--port | Web 服务器端口。 | 8000 |
--window | 用于异常检测计算的滑动窗口大小。 | 5 |
| 按键 | 操作 |
|---|
| W / A / S / D | 移动选择光标(上/左/下/右)。 |
| 向左箭头 | 上一页。 |
| 向右箭头 | 下一页。 |
| Shift + WASD | 选择一系列块(多选)。 |
| Shift + 单击 | 从上一个锚点选择范围到当前单击的块。 |