简单方法提取OpenWrt的bin文件中的内容

    有同学可能会有这样的经历,论坛有同学发布了某机型OpenWrt固件,自己又很喜欢固件里的某项功能,可是自己的机型是其他的,同时发布固件的人又不提供源码!这怎么办呢?即使想自己动手编译加入也没有源码啊?这可怎么办呢?源码人家不提供啊,可是功能却又很想要!更悲剧的是机型不符刷不了。
    如果以上的抱怨说出了你的心声,那就往下看吧。
    虽然没有提供源码,但是手上有固件啊,如果路由刷上固件,就可以看到源码,scp下来就可以见到大部分源码了。问题是没有相应的机型,总不能随便找一台就刷吧。
    猛然想起Ubuntu的LiveCD是squashfs压缩的,OpenWrt的也是。于是想到把固件给解包,网上也有不少解包固件的工具,一个一个试吧,试了这个https://code.google.com/p/firmware-mod-kit/,论坛已经有同学试过了,说是不行。我也试了一下,果然不能解出来。解压DD的方法也试了,就是不行。难道就这样放弃了!
    抱着最后一丝侥幸心理,用英文关键词“modify  OpenWrt  bin”  Google了一下
得到这一帖:
http://www.minipwner.com/index.p ... t-squashfs-bin-file
    照着做,终于成功解压出了固件里的文件。

有兴趣的同学接着往下看吧。
举个例子(当然每个固件的偏移位置是不同的):
1.有一个十六进制编辑器(以下用WinHex),当然在Linux下用dd命令;
2.WinHex打开bin文件,搜索“hsqs”,找到偏移地址。对这个文件http://www.baidupcs.com/file/3f1 ... expires=8h&sh=1
“hsqs” 开始地址(即squashfs文件系统)为0xDFE00

3.定义选块从0xDFE00到内容为FF的地址比如0x7115AE(如果只是要解压查看的话,后面的FF全部复制也没问题的,解压照样正常),复制选定的块,然后WinHex新建一个空文件(我的叫做new.squashfs),把复制下来的内容粘贴进去,保存。然后用7-zip解压即可得到完整的固件文件系统的内容。


最终得到固件中的所有文件:


这个方法对factory和sysupgrade都有效。而且只要是从出现“hsqs”的偏移地址处复制的,直接复制到结尾也可以正确解压。

本文章由作者:佐须之男 整理编辑,原文地址: 简单方法提取OpenWrt的bin文件中的内容
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐