sondt99/firmvisor
GitHub: sondt99/firmvisor
一款用于 IoT 固件静态分析的 Python 工具,支持文件系统和 RTOS 固件的多维度信息提取与结构化报告生成。
Stars: 19 | Forks: 0
# firmvisor
**firmvisor** 是一个基于 Python 的静态分析工具,用于检查 IoT 固件镜像。
它支持**基于文件系统**和**基于 RTOS**(例如 FreeRTOS、Zephyr)的固件,提供模块化分析功能,例如:
- 二进制文件类型和头部解析
- 中断向量表分析
- 用于检测加密/压缩的熵扫描
- 字符串提取(ASCII、Unicode)
- 编译器和架构推断
- 集成 Binwalk 用于提取嵌入式文件系统
## 功能
| 功能 | 描述 |
|----------------------------|---------------------------------------------------------------|
| 文件类型检测 | 检测 ELF、PE、原始二进制、squashfs、压缩归档文件 |
| 头部分析 | 解析 ELF/PE 头部:入口点、节、架构、字节序 |
| 中断向量分析 | 提取并识别裸机固件中的向量表 |
| 字符串提取 | 转储 ASCII 和 Unicode 字符串,支持过滤选项 |
| 熵扫描 | 计算滑动窗口上的熵以检测加壳节区 |
| 编译器信息 | 从头部、节区、元数据推断所使用的工具链 |
| Binwalk 集成 | 利用 Binwalk 解包固件文件系统 |
| JSON 输出 | 将分析结果导出为结构化 JSON 报告 |
## 安装
### 🔹 1. 克隆仓库
```
git clone https://github.com/sondt99/firmvisor.git
cd firmvisor
```
### 🔹 2. 创建虚拟环境(推荐)
```
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
### 🔹 3. 安装依赖包
```
pip install -r requirements.txt
```
### 🔹 4. (可选)安装 `binwalk` 用于文件系统提取
```
sudo apt install binwalk
```
### 🔹 5. 为 `python-magic` 安装 libmagic
```
# 在 Debian/Ubuntu 上:
sudo apt install libmagic1
```
## 使用方法
### 🔹 帮助:
```
python3 firmvisor.py -h
```
### 🔹 基本用法:
```
python3 firmvisor.py firmware/firmware.bin
```
### 🔹 运行特定模块:
```
python3 firmvisor.py firmware/firmware.bin --strings --entropy --arch --filetype
```
### 🔹 完整分析并导出 JSON:
```
python3 firmvisor.py firmware/firmware.bin --all
```
## 输出示例
```
{
"filetype": "ELF 32-bit LSB executable, ARM",
"entry_point": "0x8000",
"architecture": "ARM 32-bit",
"endianness": "Little Endian",
"entropy": [
{"offset": 0, "value": 7.91},
{"offset": 1024, "value": 3.20}
],
"strings": [
"/etc/init.d/rcS",
"admin:1234",
"Firmware v1.2"
]
...
}
```
## 项目结构
```
firmvisor/
├── firmvisor.py
├── requirements.txt
├── modules/
│ ├── __init__.py
│ ├── analysis.py
| ├── binwalk_analysis.py
│ ├── compiler.py
│ ├── entropy.py
│ ├── filetype.py
│ ├── header.py
│ ├── reporter.py
│ ├── sections.py
│ └── strings.py
├── report.json
```
## 许可证
本项目基于 **MIT 许可证**授权。
有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:Binwalk, DNS枚举, ELF解析, FreeRTOS, IoT安全, PE解析, Python, RTOS, Zephyr, 中断向量表, 二进制分析, 二进制头解析, 云安全监控, 云安全运维, 云资产清单, 固件分析, 固件安全, 固件解包, 字符串提取, 嵌入式系统, 工具链推断, 文件系统提取, 无后门, 架构识别, 熵分析, 网络安全工具, 逆向工具, 逆向工程, 静态分析