1

I'm trying to access the filesystem of the EA2750's firmware. Here is a link to download it http://downloads.linksys.com/downloads/firmware/FW_EA2750_1.1.7.172380_prod.img. The problem is it is an img file and I'm not exactly sure how to go about trying to access it.

Here is the binwalk signature scan output:

$ binwalk FW_EA2750_1.1.7.172380_prod.img 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             uImage header, header size: 64 bytes, header CRC: 0x143599, created: 2016-05-04 16:53:12, image size: 1935492 bytes, Data Address: 0x80000000, Entry Point: 0x8000C2F0, data CRC: 0x57C547E2, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "Linksys EA2750 Router"
64            0x40            LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 5956532 bytes
1966080       0x1E0000        JFFS2 filesystem, little endian
  • I also ran file against it. FW_EA2750_1.1.7.172380_prod.img: u-boot legacy uImage, Linksys EA2750 Router, Linux/MIPS, OS Kernel Image (lzma), 1935492 bytes, Wed May 4 12:53:12 2016, Load Address: 0x80000000, Entry Point: 0x8000C2F0, Header CRC: 0x00143599, Data CRC: 0x57C547E2 – John Doe Jun 27 '17 at 1:41
  • I tried running the img file against a programm called jefferson (github.com/sviehb/jefferson.git) but when I ran it it gave me this error. Edit: couldn't fit it into one comment. – John Doe Jun 27 '17 at 15:00
  • File "/usr/local/bin/jefferson", line 498, in <module> main() File "/usr/local/bin/jefferson", line 470, in main fs_list = scan_fs(content, cstruct.BIG_ENDIAN, verbose=args.verbose) File "/usr/local/bin/jefferson", line 290, in scan_fs unknown_node = Jffs2_unknown_node() File "/usr/local/lib/python2.7/dist-packages/cstruct/__init__.py", line 298, in init self.unpack(string) File "/usr/local/bin/jefferson", line 71, in unpack cstruct.CStruct.unpack(self, data[:self.size]) TypeError: 'NoneType' object has no attribute 'getitem' – John Doe Jun 27 '17 at 15:01
  • When file is run against 1E0000.jffs2 it is recognized as a little-endian jffs2 filesystem. This means that even though jefferson fails to extract it you can mount the jffs2 filesystem, as discussed in both links in my previous comment. To install the mtd tools: sudo apt-get install mtd-utils – julian Jun 27 '17 at 15:06
2

Use the command binwalk -Me FW_EA2750_1.1.7.172380_prod.img

This will recursively extract all files and even extract the JFFS2 filesystem into the folder _FW_EA2750_1.1.7.172380_prod.img.extracted/jffs2-root/fs_1

Edit: As to your jefferson issue, I believe you need to install cstruct 1.0. So.. https://github.com/sviehb/jefferson/issues/9

  • jffs2-root didn't have anything in it but the _40.extracted directory had a file in it called 517834.xz. When I tried to uncompress the xz file it said xz: 517834.xz: Compressed data is corrupt. – John Doe Jun 27 '17 at 15:31
  • can you md5sum the firmware for me? 696a94173857c1a2e10d8e72b5bc301f FW_EA2750_1.1.7.172380_prod.img also I'm using binwalk version Binwalk v2.1.2b . I can host the files for you if need be – Brandon Bryant Jun 27 '17 at 16:05
  • I am using the same version of Binwalk as you (I got it from github yesterday). 696a94173857c1a2e10d8e72b5bc301f FW_EA2750_1.1.7.172380_prod.img – John Doe Jun 27 '17 at 16:08
  • Edit: Did you reinstall cstruct using version 1.0 and then try jefferson again? – Brandon Bryant Jun 27 '17 at 16:13
  • 1
    @JohnDoe if his answer and support were useful to you, return the favor by upvoting and accepting his answer – julian Jun 27 '17 at 17:50

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.