MoriartyPuth/Sestina
GitHub: MoriartyPuth/Sestina
Sestina 是一款赛博朋克风格的二进制可视化平台,将编译后的机器码和原始二进制文件映射为颜色编码像素网格并配合熵热力图,帮助逆向工程师快速分析文件结构和定位加密片段。
Stars: 0 | Forks: 0
# Sestina — 二进制像素可视化工具
Sestina 是一个精致的、低亮度的赛博朋克风格二进制可视化平台,采用了 **Nocturne Dusk** 主题。它可以将编译后的文件和原始二进制 payload(例如 ELF 二进制文件、APK 归档文件以及自定义 VM 字节码)转换为结构化的坐标矩阵。
通过将原始字节流映射到可视化坐标像素,Sestina 允许逆向工程师和安全分析师检查结构布局模式,高亮人类可读的字符串区域,定位 NOP sled,并实时测量局部字节熵分布。
## 🌌 用途
* **可视化结构分析**:基于颜色编码的字节类别,即时分离二进制头、`.text` 代码段、`.rodata` 只读表以及数据段。
* **恶意软件与加壳检测**:使用集成的动态滑动熵热力图定位 UPX 头部、结构异常以及高密度加壳/加密片段。
* **ASCII 字符串提取**:使用高对比度高亮偏移量来突出显示可读的元数据键值、默认扫描器凭据以及 C2 URL。
* **取证审计**:审计二进制文件中的越权访问逻辑、112 字节的堆栈映射以及模拟的 hypervisor 布局。
## ⚡ 核心功能
1. **模拟终端启动画面(`SestinaBootScreen`)**:
一个动态诊断闪屏,在挂载主工作区之前会执行渐进式启动检查(内存映射、Bakong API 握手以及访问控制扫描)。
2. **字节到像素分类引擎**:
将原始文件缓冲区映射为颜色编码矩阵:
* **NULL_PAD (`0x00`)**:静谧的板岩灰(`#262626`),代表空白空间。
* **OPCODE(默认)**:钛白色(`#E5E5E5`),代表编译后的指令流。
* **ASCII_RD (`0x20-0x7E`)**:深琥珀色/金色(`#D97706`),高亮人类可读的字符串。
* **NOP_BRK (`0xFF`/`0x90`)**:绯红色(`#DC2626`),映射断点和 NOP sled 填充。
3. **优化的 $O(N)$ 熵热力图**:
一个高效且使用预计算查找表的滑动窗口计算器,用于计算局部信息熵。它可以在不导致主线程 UI 卡顿的情况下,瞬间识别加密边界。
4. **交互式放大镜**:
一个悬停式的十字准星放大镜,当您滚动浏览可视化区域时,它会投射出一个放大版的十六进制字节定义网格。
5. **经典十六进制转储视口**:
一个虚拟化且滚动同步的十六进制查看器,并排显示内存地址、原始字节单元以及 ASCII 字符转换。
## 🚀 在本地运行 Sestina
Sestina 分为静态的 React + Vite **前端**和 Node.js Express **后端**。
### 前置条件
请确保您已安装 [Node.js](https://nodejs.org/)。
### 第一步:运行后端
后端提供预设的元数据列表并传输二进制文件变体。
```
cd backend
npm install
npm run dev
```
*后端 Express 服务器将在 `http://localhost:3001` 上运行。*
### 第二步:运行前端
前端执行所有的 canvas 渲染和坐标计算。
```
cd ../frontend
npm install
npm run dev
```
*前端开发服务器将在 `http://localhost:5173` 上启动。*
## 🛡️ 使用指南
1. **选择预设或导入自定义 Payload**:
* 使用右侧边栏的 **二进制预设实验室** 来传输预配置的文件(例如 Mirai ELF 变体或 Dalvik classes.dex APK)。
* 或者直接将您自己的原始编译二进制文件拖放到可视化的 **导入放置区**。
2. **探索坐标**:
* 将鼠标悬停在可视矩阵画布上,可在实时的 **HUD 遥测** 框中跟踪精确的 `MEM_OFFSET` 坐标和值。
* 点击引导式导览播放按钮,可直接滚动到兴趣点(例如 C2 域名、头部、NOP slides)。
3. **切换可视化模式**:
* 切换到 **字节类型** 以审计类别段。
* 切换到 **熵热力图** 以可视化高复杂性的区域(例如加壳片段)。
标签:DAST, MITM代理, 信息熵, 恶意软件分析, 自定义脚本, 逆向分析