使用 QEMU 模拟 TP-LINK WR740N

逆向工程 固件 奇木 米普
2021-06-11 04:28:43

我正在尝试在 Qemu (MIPS) 中模拟 TP-Link WR740N。我已经rootfs.img从固件中提取了,并vmlinux-2.6.32-5-4kc-malta从这里下载http : //people.debian.org/~aurel32/qemu/mips/

然后,我使用以下参数启动 Qemu:

qemu-system-mips -M malta -kernel 'vmlinux-2.6.32-5-4kc-malta' -hda 'rootfs.img' -append "root=/dev/sda1 console=tty0" -nographic

它卡在了:

[0.000000] console [tty0] enabled, bootconsole disabled

我也试过像这样运行它:

sudo qemu-system-mips -M malta -initrd 'rootfs.img' -kernel 'vmlinux-2.6.32-5-4kc-malta' -nographic -append "console=ttyS0,115200 root=/dev/sda rootfstype=jffs2 init=/sbin/init" -hda 'hda.img' 

我收到这个错误:

[    0.796000]  sda: unknown partition table
[    0.808000] sd 0:0:0:0: [sda] Attached SCSI disk
[    0.812000] RAMDISK: squashfs filesystem found at block 0
[    0.812000] RAMDISK: Loading 2556KiB [1 disk] into ram disk... done.
[    0.928000] VFS: Cannot open root device "sda" or unknown-block(8,0)
[    0.928000] Please append a correct "root=" boot option; here are the available partitions:
[    0.928000] 0800           65536 sda driver: sd
[    0.932000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,0)

来自 6EQUJ5 的回答后的新尝试 [尽管(第二个)我仍然遇到相同的错误]:

这就是我正在尝试的:

sudo qemu-system-mips -M malta -kernel 'vmlinux-2.6.32-5-4kc-malta' -nographic -append "init=/bin/sh" -hda 'myFileSystem.img'

这是下载我创建的文件系统的链接:

http://speedy.sh/vBUEQ/myFileSystem.img

在我的文件系统上运行“文件”:

Linux rev 1.0 ext2 filesystem data (mounted or unclean), UUID=dac7072e-2c8b-408f-a080-57ea60cfd9ea

这些是我用来创建它并将文件移动到其中的命令:

dd if=/dev/zero of=~/myFileSystem.img bs=1024 count=65536
mke2fs myFileSystem.img
mkdir /mnt/virtual
mount -o loop ~/myFileSystem.img /mnt/virtual
1个回答

通过执行以下操作,我能够将该固件发送到 shell:

  1. 解压 squashfs 镜像
  2. 创建一个格式化为 ext2 的文件系统映像,并将解压的 squashfs 内容复制到其中,并将其用作 -hda
  3. 不使用-initrd ...并附init=/bin/sh加到内核命令行的情况下运行

尽管您没有完全模拟 WR740N,因为缺少大部分硬件并且它是不同的内核。因此,在 qemu 中模拟路由器始终是一个部分过程。