我正在尝试为无线路由器固件安装img文件,但似乎无法成功完成。

当我在.img上执行file命令时,它将返回以下内容:

$ file file.img 
file.img: data


当我尝试在其上使用安装架时,得到以下信息:

$ sudo mount file.img test/
mount: you must specify the filesystem type


当我尝试告诉使用“ -t自动”,我得到相同的输出:

$ sudo mount -t auto file.img test
mount: you must specify the filesystem type



$ xxd -a N150R-V1.0.0.5_1.0.1.img | head
0000000: 6465 7669 6365 3a4e 3135 3052 0a76 6572  device:N150R.ver
0000010: 7369 6f6e 3a56 312e 302e 302e 355f 312e  sion:V1.0.0.5_1.
0000020: 302e 310a 7265 6769 6f6e 3a0a 0000 0000  0.1.region:.....
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
*
0000070: 0000 0000 0000 0000 0000 0000 0000 1232  ...............2
0000080: 3036 3132 d9cf 3fc1 5297 2c87 0033 eed0  0612..?.R.,..3..
0000090: 9f05 0000 9f05 0000 9b63 9e62 0505 0700  .........c.b....
00000a0: 4e31 3530 522d 5631 2e30 2e30 2e35 5f31  N150R-V1.0.0.5_1
00000b0: 2e30 2e31 0000 0000 0000 0000 0000 0000  .0.1............


binwalk提供以下信息:

$ binwalk N150R-V1.0.0.5_1.0.1.img 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
192           0xC0            Squashfs filesystem, big endian, version 3.0, size: 3403472 bytes, 1024 inodes, blocksize: 65536 bytes, created: 2013-11-28 11:44:07


fdisk(在OS X上)返回:

$ fdisk N150R-V1.0.0.5_1.0.1.img 
Disk: N150R-V1.0.0.5_1.0.1.img  geometry: 26/4/63 [6656 sectors]
Signature: 0x95EB
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: 02  648  41  48 -  107 220  28 [ 275573942 - 2530152094] XENIX /     
 2: C9  165 158   8 -  311  15  40 [1825336399 - 3160300718] <Unknown ID>
 3: 12  606 153  51 -  988 164  42 [3547124620 - 4171149652] Compaq Diag.
 4: BD  479 182  60 -  173 155  40 [2642289636 - 1573814809] <Unknown ID>


可以我得到一些有关如何从img中提取文件的指导?我可以访问OS X和Ubuntu。

链接到固件

编辑1:
sasquatch的结果:

$ sasquatch N150R-V1.0.0.5_1.0.1.img 
SquashFS version [24373.11825] / inode count [1312449891] suggests a SquashFS image of a different endianess
Non-standard SquashFS Magic: devi
Reading a different endian SQUASHFS filesystem on N150R-V1.0.0.5_1.0.1.img
Filesystem on N150R-V1.0.0.5_1.0.1.img is (13663:12590), which is a later filesystem version than I support!


#1 楼

SquashFS映像是具有LZMA压缩的3.0版; LZMA压缩直到4.0版才正式添加到SquashFS中,因此标准的SquashFS工具将无法识别它。

但是,sasquatch提取它对我来说还不错。实际上,如果您安装了sasquatch,则使用-e选项运行binwalk时,最新版本的binwalk将使用它自动提取文件系统。

UPDATE:

您需要给sasquatch SquashFS映像,而不是原始固件映像。首先,使用dd解压缩它,然后对解压缩的文件运行sasquash

$ dd if=N150R-V1.0.0.5_1.0.1.img bs=192 skip=1 of=fs.squashfs
$ sasquatch fs.squashfs


最新版本的binwalk使用-e选项自动为您完成此操作:

$ binwalk -e N150R-V1.0.0.5_1.0.1.img


您也可以强制旧版本的binwalk也使用sasquatch

$ binwalk --dd='squashfs:squashfs:sasquatch %e' N150R-V1.0.0.5_1.0.1.img


评论


我已经用sasquatch的输出更新了主要帖子。这没用= /

– RNikoopour
2014年11月28日在22:44

您需要提供sasquatch SquashFS映像,而不是原始固件映像。我已经详细更新了上面的答案。

–devttys0
2014年11月29日23:29

非常感谢。非常感谢您的帮助!您能解释一下dd命令如何提取文件图像吗?

– RNikoopour
2014年11月30日在18:44



上面的dd命令只是将数据从输入文件('if = N150R-V1.0.0.5_1.0.1.img')复制到您选择的某些输出文件('of = fs.squashfs')。根据binwalk的说法,您想开始从偏移量192(这是squashfs映像的起始位置)开始复制字节。因此,只需将复制块大小设置为192字节('bs = 192'),并告诉dd跳过第一个块,即跳过前192个字节('skip = 1')。

–devttys0
2014年11月30日19:43

这种解释是完美的。非常感谢你的帮助!

– RNikoopour
2014年11月30日19:58

#2 楼

如果您不想安装其他工具,则如果您剥去标题(binwalk谈到的前192个字节),它可能会安装:

dd if=file.img of=file.squashfs bs=192 skip=1
sudo mount file.squashfs test/


编辑:

由于路由器似乎有一个大端Mips处理器,所以安装对我也不起作用。但是以下内容适用于Ubuntu 14.04:

apt-get install liblzo2-dev 
git clone https://github.com/devttyS0/sasquatch
make
sasquatch /path/to/file.squashfs


(显然,您还需要安装gitmakegccliblzo2-dev是我之前未安装的唯一依赖项。我不得不使用上面显示的与dd一起准备的文件,而不是原始的.img)。

如果无法正常工作,请使用以下提取的文件:

https://mega.co.nz/#!xFoQkZRB!lcdUdDVGKsgEeu8Q5HnL3BSBXJKCHe0jZkGwOyTSxlQ

评论


这对我不起作用。不过谢谢你

– RNikoopour
2014年11月28日在22:41

即使映像的字节序很小,但不幸的是由于非标准压缩,它仍可能无法挂载。不幸的是,嵌入式SquashFS映像往往是PITA。

–devttys0
2014年11月29日23:31