在 VMware 上加载 ARM (MIPS-MIPS32) Linux 文件系统?
Load ARM (MIPS-MIPS32) Linux filesystem on VMware?
我有一个 Linux MIPS 架构的固件。是否可以在 VMWare 中加载这样的固件映像?
我正在尝试进行逆向工程,但碰壁了。
这是 binwalk 输出:
8212 0x2014 uImage header, header size: 64 bytes, header CRC: 0xD384760C, created: 2021-12-01 11:10:32, image size: 1975811 bytes, Data Address: 0x81001000, Entry Point: 0x813E4860, data CRC: 0xE74BA6F, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "Linux Kernel Image"
8276 0x2054 LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 5748736 bytes
1984088 0x1E4658 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 10883970 bytes, 2239 inodes, blocksize: 131072 bytes, created: 2021-12-02 11:17:54
我已经设法从 .bin 文件中提取了原始文件系统,但无法进一步提取。我将如何在 VMware 中加载这样的东西?由于架构差异,它甚至可能吗?
它有一个 squashfs-root 文件,还有一些二进制文件。我自己在 windows(通过 WSL 做所有事情),但并不害羞 Linux。这是二进制文件的一些 LS 输出:
如前所述,我能够使用 7zip 从二进制文件中提取文件。但这会删除其他 1E4658.squashfs
文件、2054
文件和 2054.7z
,并且只会从 squashfs-root
.
中解压缩 linux 文件系统
1E4658.squashfs
文件,似乎是整个文件系统的副本。 (我想也许是为了验证?我不知道。)
它是我的 TP-link deco 的固件。如果有人有进一步逆向工程的任何技巧,请分享!! :)
How would I go about loading something like this in VMware?
Would it even be possible due to architecture differences?
VMware 模拟 x86 桌面 PC。
您可以将软盘、CD-ROM 或 DVD 映像附加到 VMware 以模拟此类媒体。
如果您在包含可以提取固件映像文件的工具(类似于 7z
)的虚拟机(在 VMware 中运行)中安装了一些操作系统,则复制固件映像是有意义的到虚拟机 - 在这种情况下,该文件只是 VMware 的“常规”文件(就像文本文档或 PNG 图像一样)。
但是,VMware 本身无法对 ARM 或 MIPS 的固件映像做任何事情。
I am able to extract the files with 7zip from the binary, as stated. But this removes the ... files ...
看了你的截图,我怀疑我是否理解正确。
如果我正确理解“binwalk”输出,第一个文件从偏移量 8212(十六进制 0x2014)开始,第二个文件从偏移量 8276 开始,SquashFS 图像从偏移量开始。
因此,如果您想要文件 2014
,您可以使用 dd
工具从固件映像中提取该文件:
dd if=firmware_image of=output_filename bs=1 count=64 skip=8212
(将 firmware_image
替换为固件映像的文件名,并将 output_filename
替换为文件 2014
所需的文件名;示例:2014.bin
)
对于第二个文件使用:count=1975812
(因为文件的大小是:1984088-8276=1975812)和skip=8276
。对于 SquashFS 映像,使用 skip=1984088
并省略 count=
参数(这意味着:解压到文件末尾)。
然而:
2014
文件的内容已经被“binwalk”显示:
uImage header, header size ... name: "Linux Kernel Image"
该文件除此行信息外不再包含任何数据。
2054
文件是操作系统内核映像。这样的图像不包含任何可以读取的“有用”信息。
并且内核映像将仅在其预期的设备上工作 - 它不会在“MIPS-based 路由器”上工作,但它只会在MIPS-based 路由器“Example Industries Inc, ABC-1234-D”。
我有一个 Linux MIPS 架构的固件。是否可以在 VMWare 中加载这样的固件映像? 我正在尝试进行逆向工程,但碰壁了。 这是 binwalk 输出:
8212 0x2014 uImage header, header size: 64 bytes, header CRC: 0xD384760C, created: 2021-12-01 11:10:32, image size: 1975811 bytes, Data Address: 0x81001000, Entry Point: 0x813E4860, data CRC: 0xE74BA6F, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "Linux Kernel Image"
8276 0x2054 LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 5748736 bytes
1984088 0x1E4658 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 10883970 bytes, 2239 inodes, blocksize: 131072 bytes, created: 2021-12-02 11:17:54
我已经设法从 .bin 文件中提取了原始文件系统,但无法进一步提取。我将如何在 VMware 中加载这样的东西?由于架构差异,它甚至可能吗?
它有一个 squashfs-root 文件,还有一些二进制文件。我自己在 windows(通过 WSL 做所有事情),但并不害羞 Linux。这是二进制文件的一些 LS 输出:
如前所述,我能够使用 7zip 从二进制文件中提取文件。但这会删除其他 1E4658.squashfs
文件、2054
文件和 2054.7z
,并且只会从 squashfs-root
.
1E4658.squashfs
文件,似乎是整个文件系统的副本。 (我想也许是为了验证?我不知道。)
它是我的 TP-link deco 的固件。如果有人有进一步逆向工程的任何技巧,请分享!! :)
How would I go about loading something like this in VMware?
Would it even be possible due to architecture differences?
VMware 模拟 x86 桌面 PC。
您可以将软盘、CD-ROM 或 DVD 映像附加到 VMware 以模拟此类媒体。
如果您在包含可以提取固件映像文件的工具(类似于 7z
)的虚拟机(在 VMware 中运行)中安装了一些操作系统,则复制固件映像是有意义的到虚拟机 - 在这种情况下,该文件只是 VMware 的“常规”文件(就像文本文档或 PNG 图像一样)。
但是,VMware 本身无法对 ARM 或 MIPS 的固件映像做任何事情。
I am able to extract the files with 7zip from the binary, as stated. But this removes the ... files ...
看了你的截图,我怀疑我是否理解正确。
如果我正确理解“binwalk”输出,第一个文件从偏移量 8212(十六进制 0x2014)开始,第二个文件从偏移量 8276 开始,SquashFS 图像从偏移量开始。
因此,如果您想要文件 2014
,您可以使用 dd
工具从固件映像中提取该文件:
dd if=firmware_image of=output_filename bs=1 count=64 skip=8212
(将 firmware_image
替换为固件映像的文件名,并将 output_filename
替换为文件 2014
所需的文件名;示例:2014.bin
)
对于第二个文件使用:count=1975812
(因为文件的大小是:1984088-8276=1975812)和skip=8276
。对于 SquashFS 映像,使用 skip=1984088
并省略 count=
参数(这意味着:解压到文件末尾)。
然而:
2014
文件的内容已经被“binwalk”显示:
uImage header, header size ... name: "Linux Kernel Image"
该文件除此行信息外不再包含任何数据。
2054
文件是操作系统内核映像。这样的图像不包含任何可以读取的“有用”信息。
并且内核映像将仅在其预期的设备上工作 - 它不会在“MIPS-based 路由器”上工作,但它只会在MIPS-based 路由器“Example Industries Inc, ABC-1234-D”。