Binwalk使用
安装
$ wget https://github.com/ReFirmLabs/binwalk/archive/master.zip
$ unzip master.zip


用法:binwalk [OPTIONS] [FILE1] [FILE2] [FILE3] ...
反汇编扫描选项:
-Y, --disasm 使用 Capstone 反汇编器识别文件的 CPU 架构
-T, --minsn=<int> 指定有效连续指令的最小数量(默认值:500)
-k, --continue 不停止于第一个匹配项
签名扫描选项:
-B, --signature 扫描目标文件中的通用文件签名
-R, --raw=<str> 扫描目标文件中的指定字节序列
-A, --opcodes 扫描目标文件中的通用可执行操作码签名
-m, --magic=<file> 指定要使用的自定义魔法文件
-b, --dumb 禁用智能签名关键字
-I, --invalid 显示已标记的结果无效
-x, --exclude=<str> 排除匹配 <str> 的结果
-y, --include=<str> 仅显示匹配 <str> 的结果
提取选项:
-e, --extract 自动提取已知文件类型
-D, --dd=<type[:ext[:cmd]]> 提取 <type> 类型的签名(正则表达式),将文件扩展名为 <ext>,并执行 <cmd>
-M, --matryoshka 递归扫描提取的文件
-d, --depth=<int> 限制 matryoshka 递归深度(默认值:8 级深度)
-C, --directory=<str> 将文件/文件夹提取到自定义目录(默认值:当前工作目录)
-j, --size=<int> 限制每个提取文件的大小
-n, --count=<int> 限制提取文件的数量
-0, --run-as=<str> 以指定用户的权限执行外部提取实用程序
-1, --preserve-symlinks 不清理指向解压目录之外的已提取符号链接(危险)
-r, --rm 解压后删除已提取的文件
-z, --carve 从文件中提取数据,但不执行解压工具
-V, --subdirs 解压到以偏移量命名的子目录中
熵选项:
-E, --entropy 计算文件熵
-F, --fast 使用更快但更不详细的熵分析
-J, --save 将图保存为 PNG 格式
-Q, --nlegend 忽略熵图的图例
-N, --nplot 不生成熵图
-H, --high=<float> 设置上升沿熵触发阈值(默认值:0.95)
-L, --low=<float> 设置下降沿熵触发阈值(默认值:0.85)
二进制差异选项:
-W, --hexdump 执行文件的十六进制转储/差异
-G, --green 仅显示所有文件中包含相同字节的行
-i, --red 仅显示所有文件中包含不同字节的行
-U, --blue 仅显示部分文件中包含不同字节的行
-u, --similar 仅显示所有文件之间相同的行
-w, --terse 比较所有文件的差异,但仅显示第一个文件的十六进制转储
原始压缩选项:
-X, --deflate 扫描原始的 deflate 压缩流
-Z, --lzma 扫描原始的 LZMA 压缩流
-P, --partial 执行粗略但更快的扫描
-S, --stop 在第一个结果后停止
常规选项:
-l, --length=<int> 扫描的字节数
-o, --offset=<int> 从该文件偏移量开始扫描
-O, --base=<int> 为所有打印的偏移量添加基址
-K, --block=<int> 设置文件块大小
-g, --swap=<int> 扫描前每 n 个字节反转一次
-f, --log=<file> 将结果记录到文件
-c, --csv 将结果以 CSV 格式记录到文件
-t, --term 将输出格式化以适应终端窗口
-q, --quiet 禁止输出到标准输出
-v, --verbose 启用详细输出
-h, --help 显示帮助输出
-a, --finclude=<str> 仅扫描名称与此正则表达式匹配的文件
-p, --fexclude=<str> 不扫描名称与此正则表达式匹配的文件
-s, --status=<int> 在指定端口启用状态服务器
:::info
[注意] Binwalk v2.x 将于 2025 年 12 月 12 日停止服务。请迁移到 binwalk v3.x
:::
固件扫描
Binwalk 主要特征,签名扫描,它可以扫描固件映像以查找许多不同的嵌入式文件类型和文件系统,只需要给它一个要扫描的文件列表

-y用于对提供的二进制文件执行基于签名的扫描。它扫描已知的文件类型、页眉和页脚
文件熵分析
如果 Binwalk 没有报告任何签名,会发生什么?或者,你怎么知道 Binwalk 没有错过任何有趣的东西?熵分析可以帮助识别固件映像中有趣的数据部分
-E触发对给定二进制文件的熵分析。它计算不同数据区域的熵,以识别潜在的压缩或加密部分。

当您怀疑二进制文件的某些部分可能被压缩或加密,并且您想定位这些区域时。
您可以将其他扫描与熵扫描相结合。例如,您可以将签名扫描与熵扫描相结合:
binwalk -B -E firmware.bin
文件提取
-e 选项提取固件映像中找到的文件
-M Binwalk会在提取文件时递归扫描文件
-r 选项 任何无法提取的文件签名或导致文件大小为 0 的文件签名都将被自动删除
提取一个特定的签名类型,请指定一个或多个 -D 类型选项
固件分析
Binwalk可帮助您识别固件映像中使用的架构、文件系统和压缩方法
需要深入了解固件映像的内部结构和组件时
-I标志提供有关固件二进制文件中的体系结构、文件系统和压缩方法的信息
自定义扫描
处理默认签名未涵盖的专有文件格式或二进制文件中的特定模式时
可以定义自定义签名和规则来检测二进制数据中的特定模式
binwalk -D="signature:description" firmware.bin
结果可视化
想获得二进制文件组织的高级概述并识别潜在的嵌入式文件时
Binwalk可以创建它所找到的数据的可视化,从而更容易理解二进制文件的结构
binwalk -G firmware.bin
组件扫描
分析固件结构
首先使用 <font style="color:rgb(77, 77, 77);">binwalk</font> 分析固件的整体结构,找到可能包含第三方组件的文件系统或压缩包
binwalk 462AFK0C0.bin
提取文件系统和嵌套内容
binwalk -Me 462AFK0C0.bin
更新: 2025-05-12 17:48:18
原文: https://www.yuque.com/yuhui.net/network/vag9i4fo8xuffp7t

评论(0)
暂无评论