Fork me on GitHub

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
 
 
 
 
 
posted @ 2020-01-20 17:26  0yst3r  阅读(17879)  评论(2编辑  收藏  举报
返回顶部