固件提取方法总结与手动解压

0x01简述
总结提取固件的方法并且手动提取固件的方法。
这段时间一直遇到的问题就是想分析一个固件的时候下载下来发解binwalk -Me xxx.bin j解压之后找不到想要的文件查了一些文档,整理了一下。
0x02固件提取
在这里插入图片描述
在这里插入图片描述
ftp协议或者是http协议的get请求

在这里插入图片描述
不过一般情况下使用的是下面这种烧录器在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200401161758194.png在这里插入图片描述
补充小技巧
在这里插入图片描述
截图来自https://book.yunzhan365.com/tkgd/lzkp/mobile/index.html


0x03固件映像文件解压
测试文件下载地址
https://www.linksys.com/us/support-article?articleNum=208638
文件名:WAG120N-EU-ANNEXB-ETSI-1.00.16code.bin
step1:对其运行Linux文件实用程序,以确保它不是标准的存档或压缩文件
file xxxx.bin
step2:分析字符串收集信息
查看字符串strings -n 10 xxx.bin
查看十六进制文件hexdump -C xxx.bin >hex.out
-n 设置要输出的字符串含有的最少的字符数
-C 输出规范的十六进制和ASCII码
在这里插入图片描述
可以看到对U-boot引导加载程序还有对内核的引用
step3:binwalk分析文件信息
在这里插入图片描述
uImage是uboot使用的标头格式,后面是LZMA压缩文件,有两个lzma压缩文件,一个是uboot的压缩文件,一个是kernel的压缩文件,下面需要对其解压
step4:运行dd提取lzma文件,然后用lzma工具解压,查看镜像类型
运行dd时不必担心指定大小限制;在解压缩期间,lzma将忽略任何结尾的无用字符(低版本的高版本的lzma不能,参考下文错误部分):
dd if=WAG120N-EU-ANNEXB-ETSI-1.00.16code.bin bs=1 skip=11076 of=uboot.lzma
if=文件名:输入文件名
of=文件名:输出文件名
skip=blocks:从输入文件开头跳过blocks个块后再开始复制
bs=bytes:同时设置读入/输出的块大小为bytes个字节

lzma -d uboot.lzma解压
查看两个解压的文件可以看出来它们是U-Boot和linux内核的映像
在这里插入图片描述
step5:确定文件系统以及文件系统的开始
binwalk可能给出来文件系统类型如果没有给出就手动找。
确定使用的文件系统
在这里插入图片描述
SquashFS是一个非常常见的嵌入式文件系统

接下来需要找到sqsh 字符串的变体(这个这个magic将会是SqushFS映像的开始),因此,需要查找sqsh类似的字串
这个字符串一般在整白整千字节的偏移上面所以可以查找以 * 开头的行(vim里面用^* )
也可以用hexdump -C xxx.bin > xxx
然后用vim搜索或者用 |grep 搜索
类似这种(这里我下载到的固件里面没有这个字符串,应该是已经更新了)
在这里插入图片描述
step6:搜索得到地址之后使用dd命令拷贝,再用lzma解压(如果magic不是标准的sqsh需要改成sqsh再解压)


0x03错误


tower@ubuntu:~/Desktop/work$ lzma -d uboot.lzma 
lzma: uboot.lzma: 压缩数据已损坏

http://tukaani.org/lzma/'LZMA下载lzma-4.32.7.tar.gz

./configure  
make install

参考自
http://www.devttys0.com/2011/05/reverse-engineering-firmware-linksys-wag120n/

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: jlinkv9固件提取工具是一款非常实用的工具,它可以用来提取J-Link V9的固件。J-Link V9是Segger公司推出的一种非常实用的Debug工具,它可以让开发者通过串行线或者SWD线,连接到目标板或者仿真器,从而进行调试以及Flash编程等操作。 然而,在使用J-Link V9时,开发者很可能遇到固件升级的问题,而固件升级需要用到新的固件文件。而仅有的放置新的J-Link V9固件文件的方法是通过官方提供的GUI界面,但这样操作非常不直观。因此,jlinkv9固件提取工具的出现解决了这个问题。 使用jlinkv9固件提取工具,开发者可以很方便地从J-Link V9中提取固件文件。只需要将J-Link V9通过USB线连接到电脑上,然后打开jlinkv9固件提取工具,就可以将固件文件提取出来并保存到硬盘中。这样一来,开发者就可以很方便地管理、更新和备份J-Link V9固件文件了。 总之,jlinkv9固件提取工具是一个非常实用的工具,它让开发者可以更加方便地管理J-Link V9固件文件,提高了开发效率和开发质量。 ### 回答2: jlinkv9固件提取工具是一种先进的工具,可用于提取和处理J-Link V9的固件。它的主要目的是使用户能够更轻松地管理和维护他们的J-Link V9设备。 使用jlinkv9固件提取工具,用户可以方便地复制和备份J-Link V9设备上的固件,以备将来使用或恢复。当需要在多个J-Link V9设备之间进行升级或调试时,这非常有用。 此外,jlinkv9固件提取工具还可以帮助用户诊断和解决J-Link V9设备的问题。通过提取固件,用户可以更轻松地分析设备的工作状态,并确定是否存在任何错误或故障。 总之,jlinkv9固件提取工具是一项非常有用的工具,可帮助用户更轻松地管理和维护他们的J-Link V9设备,同时帮助他们诊断和解决设备问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值