来自 unix.stackexchange.com 的 X-POST
我目前正在尝试修改路由器固件:Swisscom Centro Grande - 又名 Pirelli Vx226N1,固件版本:60200。
我已经用FMK v0.99成功地反编译了它,并得到了header.img、rootfs.img和footer.img图像部分。
这是 rootfs.img 的 binwalk:
Squashfs 文件系统,小端,非标准签名,4.0 版,压缩:gzip,大小:2764423 字节,1145 个 inode,块大小:65536 字节,创建时间:2013 年 3 月 15 日星期五 00:33:08
我成功地用 unsquashfs 反编译了 rootfs.img 并获得了系统文件夹。我进行了一些更改(在 telnet 上启用了 shell)并尝试使用提供的工具(./build-firmware.sh命令)重新打包所有内容。
最终的固件大小比原来的要大。试图falsh,什么也没发生。我分析了固件,尤其是升级方法,以了解如何正确构建固件。
我找到了update.sh处理升级过程的文件(分析用户提供的文件,只有在一切正确时才闪烁,以防止砖块)
我很确定原始固件文件是通过该parse_yaps_image()函数解析的,因此我尝试自行调整以检查文件,但我注意到有一个名为的二进制文件的外部检查sig_verify
如果文件不存在调用另一个函数,问题是提供的函数不正确(wrong validation token即使使用原始固件也会返回错误!)
我的目标是分析sig_verify文件并寻找算法,以了解组合方法并以正确的方式刷新我的路由器并最终获得root shell(并对我想要的所有内容进行修改)
我将所有文件都上传到了Mega 文件夹中,因此想要帮助我的感兴趣的人可以访问所需的任何文件。
我将用于检查文件的两个脚本包含在文件夹 60208 中。
我写的脚本的结果(只是对路由器中脚本的适配)是这样的:
denys@denys-pc:~/Documents/router/Vx226N1/images/modified/60208$ ./check_upgrade_yaps.sh
Parsing YAPS format...
16+0 records in
16+0 records out
16 bytes (16 B) copied, 0.000843843 s, 19.0 kB/s
Error: wrong validation token (5b445d3b251d59753031c9d7a94ba4ab, 7d98668859855f1b9459256257fc3262)
这是sig_verify文件的binwalk 。
denys@denys-pc:~/Documents/router/Vx226N1/images/modified/60208$ binwalk sig_verify
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------
0 0x0 ELF 32-bit MSB executable, MIPS, version 1
1921 0x781 LZMA compressed data, properties: 0x01, dictionary size: 16777216 bytes, uncompressed size: 16777472 bytes
正如您所注意到的,它是一个MIPS可执行文件。我试图在 MIPS 环境(虚拟机qemu-system-mips)下运行它,但没有成功。
qemu-system-mips -M mips -kernel ./vmlinux-2.6.18-6-qemu -initrd ./initrd.gz -hda hda.img -append "root=/dev/ram console=ttyS0" -nographic
内核和 initrd 由http://archive.debian.org/debian/dists/etch/main/installer-mips/current/images/qemu/netboot/下载
任何帮助,将不胜感激。如果有些不清楚,请告诉我:)
- - 编辑 - -
反编译... 谁能将机器语言翻译成人类可以理解的代码?
