binwalk在Windows10和kali_Linux下的安装及使用教程
(一)binwalk简介
binwalk 是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具。
具体来说,binwalk是一个固件的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程用处。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,还重要一点的是可以轻松地扩展。
(二)Windows下安装教程
首先下载binwalk的安装包
链接:https://github.com/ReFirmLabs/binwalk
你还需要在你的电脑上安装python环境。
笔者这里安装的是 python3.8 ~
下载后解压~
然后,在binwalk的解压文件夹下,左手按住shift,右手在空白处鼠标右键选择在此处打开powershell窗口(cmd)。
ps:当然,要是你左右手互换或者不用手也可以,哈哈哈(手动狗头)
安装命令: python setup.py install
安装结束就是这个样子~
接下来,你找到你自己安装 python目录的Scripts 文件夹里,里面有一个名字为binwalk的文件~
打开Powershell后~
命令: python binwalk xxxx
但是!
怎样才能才命令提示符窗口下直接调用binwalk呢?
ps:来自笔者“血的教训”......这种方法.....千万不要用powershell打开!!!!记住..............
以下bat和py文件代码参考pcat大佬的文章~
步骤:
1.新建一个文件夹(任意目录),并把文件夹的路径加入到系统变量path里
2.在文件夹里新建一个binwalk.bat文件
1 @echo off 2 echo * suggest: you'd better to input the parameters enclosed in double quotes.echo * made by pcat 3 python "%~dp0\p_binwalk.py" %1 %2 %3 %4 %5 %6 %7 %8 %9
3. 再新建一个p_binwalk.py文件
# -*- coding:utf-8 -*- import sys import binwalk if __name__ == "__main__": lst=sys.argv if len(lst)<2: print("No files.") exit() try: if lst[1][0]=='-': binwalk.scan(*lst[2:],signature=lst[1]) elif lst[1][0]!='-': binwalk.scan(*lst[1:],signature=True) except: pass
保存~
图示操作:
1.新建文件夹,添加环境变量:
2.新建文件夹的两个文件:
3.在你想分析的文件所在目录打开cmd:
再次友情提示:这种方法.....千万不要用powershell打开!!!!
在 kali_Linux 里面就方便很多啦~
不需要安装,直接使用就可以啦~
但是必须也在你想要分析的文件当前目录下打开终端写命令哦~
(三)功能简述
binwalk主要有过滤功能、提取文件功能、比较功能、字符串分析功能、插件功能。
1.过滤功能
包含过滤器(-y)用于只显示包括指定搜索文本匹配的结果,其中-y选项可以指定多个:$ binwalk –y filename firmware.bin;
排除过滤器(-x)用于只显示排除指定搜索文本匹配的结果,-x选项也可以多次指定:$ binwalk –x filename firmware.bin;
包含过滤器和排除过滤器两个功能可以结合使用。
2.提取文件
Binwalk提供多种方法从固件中提取文件系统,用户可使用-dd选项指定提取规则,手动提取文件;
-e选项用来自动化提取固件文件系统;提取后的数据需要进一步Binwalk分析时,-Me选项用于递归扫描提取数据。
3.比较功能
Binwalk可以生成一个或多个文件的十六进制转储和差异分析。
文件中相同字节绿色显示,不同字节红色显示,蓝色表示一些文件中的不同部分:$ binwalk –W firmware1.bin firmware2.bin firmware3.bin
4.字符串分析
Binwalk还可以对目标文件进行一个智能字符串分析,通过应用一些简单的验证规则,排除”垃圾”字符串,忽略无顺序的数据块,最终显示出最有用的信息:$ binwalk –S firmware.bin
5.插件功能
Binwalk最基础的用法中只是简单基于就签名匹配,会导致一些文件无法识别,针对这种问题Binwalk支持不同功能的插件,用于识别特定固件。
注:
常见应用场景:
1.隐写术文件分析
2.流量包内含压缩文件包分析
3.信息收集固件分析
(四)常用命令详解
1.扫描选项:
-B,-- signature 扫描目标文件的常见文件签名
-R,--raw = <str>扫描目标文件的指定字符序列
-A,--opcodes扫描目标文件中常见可执行代码
-m,--magic = <file> 指定要使用的自定义魔数签名文件
-b,--dumb 禁用智能签名关键字
-I,--invalid显示结果标记为无效
-x,--exclude = <str>排除与<str>匹配的结果
-y,--include = <str>只显示匹配<str>的结果
2.提取选项:
-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>限制提取文件的数量
-r,--rm 提取后删除刻录文件
-z,--carve从文件中读取数据,但不执行提取实用程序
3.熵分析选项:
-E,--entropy 计算文件熵
-F,--fast计算更快,但不太详细的熵分析
-J,--save将熵图保存为PNG图像
-Q,--nlegend 从熵图图中省略图例
-N,--nplot 不生成熵图
-H,--high = <float>设置上升沿熵触发阈值(默认值:0.95)
-L,--low = <float> 设置下降沿熵触发阈值(默认值:0.85)
4.原始压缩选项:
-X, --deflate扫描原始deflate压缩流
-Z, --lzma 扫描原始LZMA压缩流
-P, --partial浅度扫描,速度更快
-S, --stop 找到第一个结果后停止扫描
5.二进制差异选项:
-W,--hexdump 执行文件或文件的hexdump/diff
-G,--green 只显示包含所有文件中相同字节的行
-i,--red 仅显示包含所有文件中不同字节的行
-U,--blue只显示一些文件中包含不同字节的行
-w,--terse 只显示第一个文件的十六进制转储
6.一般选项:
-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>启用指定端口上的状态服务器
参考资料:
https://www.cnblogs.com/2f28/p/9736902.html
https://www.cnblogs.com/zaqzzz/p/9460264.html#4411602
https://www.cnblogs.com/pcat/p/5256288.html
--------------------- ┑( ̄Д  ̄)┍ --------------------------
作者:0yst3r[一只在安全领域努力奋斗的小菜鸡]
来源:博客园[ https://www.cnblogs.com/0yst3r-2046/ ] 引用时请注明来源哦~
(๑•̀ㅂ•́)و✧ヽ(✿゚▽゚)ノ(*^▽^*) φ(≧ω≦*)♪
如果本文对你有用,本人不胜欢喜。
The world is your oyster.