FirmwareComparison
Your IP: 38.107.179.212
View number: 9674
The details shown here are from the February, 2010, ASUS firmware release.
The procedure should be the same or similar for any release.
Table of contents
- 1. Download the archives.
- 2. Make a workspace directory.
- 3. Make copies of the downloads.
- 4. Test the integrity of the archives.
- 5. Expand archives with included pathnames.
- 6. Make some progress checks.
- 7. Extract all four images in-place.
- 8. Identify common files.
- 9. Files to be examined.
- 10. Check for early userspace scripting.
- 10.1. Change to package2 directory.
- 10.2. Locate start of Early Userspace archive.
- 10.3. Copy the archive off kernel image.
- 10.4. Check for appended data.
- 10.5. Uncompress the archive.
- 10.6. Extract archive to file system.
- 10.7. Check what was added to the file system tree.
- 10.8. Create a eus workspace directory and move the archive contents.
- 10.9. Drop "root" user level and return to top workspace.
- 11. Comparing configuration.xml files
- 12. Extract yaffs2 file system images.
- 13. Extract the usr/local/etc archives
- 14. Customizing the image.
1. Download the archives.
Download copies of the archives to your usual location for downloaded files.
Be certain that the download tool you use does a binary transfer.
The archives used in this example where:
ftp://ftp.asus.com.tw/pub/asus/Digital_Media_Player/HDP-R1/Firmware/HDP_R1_FW_V121NTSC.zip
ftp://ftp.asus.com.tw/pub/asus/Digital_Media_Player/HDP-R1/Firmware/HDP_R1_FW_V121PAL.zip
ftp://ftp.asus.com.tw/pub/asus/Digital_Media_Player/HDP-R3/Firmware/HDP_R3_FW_109PAL.zip
ftp://ftp.asus.com.tw/pub/asus/Digital_Media_Player/HDP-R3/Firmware/HDP_R3_FW_109NTSC.zip
2. Make a workspace directory.
The name and location are not significant.
Create a new directory and make it the current directory.
mszick@deb2core:/Builds$ mkdir ASUS mszick@deb2core:/Builds$ cd ASUS
3. Make copies of the downloads.
The source path should match wherever you downloaded them too.
The trailing '.' means: "destination here".
mszick@deb2core:/Builds/ASUS$ cp -a /Builds/SRCS/ftp.asus.com.tw/pub/asus/Digital_Media_Player/HDP-R1/Firmware/HDP_R1_FW_V121NTSC.zip . mszick@deb2core:/Builds/ASUS$ cp -a /Builds/SRCS/ftp.asus.com.tw/pub/asus/Digital_Media_Player/HDP-R1/Firmware/HDP_R1_FW_V121PAL.zip . mszick@deb2core:/Builds/ASUS$ cp -a /Builds/SRCS/ftp.asus.com.tw/pub/asus/Digital_Media_Player/HDP-R3/Firmware/HDP_R3_FW_109PAL.zip . mszick@deb2core:/Builds/ASUS$ cp -a /Builds/SRCS/ftp.asus.com.tw/pub/asus/Digital_Media_Player/HDP-R3/Firmware/HDP_R3_FW_109NTSC.zip .
4. Test the integrity of the archives.
ASUS does not provide checksums for their posted files but the archive format used does have checksums that should be sufficient to detect the results of a non-binary transfer.
mszick@deb2core:/Builds/ASUS$ for f in `ls *.zip` ; do echo $f ; unzip -t $f ; done
HDP_R1_FW_V121NTSC.zip
Archive: HDP_R1_FW_V121NTSC.zip
testing: HDP_R1_FW_V121NTSC/ OK
testing: HDP_R1_FW_V121NTSC/install.img OK
No errors detected in compressed data of HDP_R1_FW_V121NTSC.zip.
HDP_R1_FW_V121PAL.zip
Archive: HDP_R1_FW_V121PAL.zip
testing: HDP_R1_FW_V121PAL/ OK
testing: HDP_R1_FW_V121PAL/install.img OK
No errors detected in compressed data of HDP_R1_FW_V121PAL.zip.
HDP_R3_FW_109NTSC.zip
Archive: HDP_R3_FW_109NTSC.zip
testing: HDP_R3_FW_109NTSC/ OK
testing: HDP_R3_FW_109NTSC/install.img OK
No errors detected in compressed data of HDP_R3_FW_109NTSC.zip.
HDP_R3_FW_109PAL.zip
Archive: HDP_R3_FW_109PAL.zip
testing: HDP_R3_FW_109PAL/ OK
testing: HDP_R3_FW_109PAL/install.img OK
No errors detected in compressed data of HDP_R3_FW_109PAL.zip.
5. Expand archives with included pathnames.
We can see in the above step that each archive includes a different pathname.
So all four can be unpacked in-place without overwriting each other.
mszick@deb2core:/Builds/ASUS$ for f in `ls *.zip` ; do echo $f ; unzip $f ; done HDP_R1_FW_V121NTSC.zip Archive: HDP_R1_FW_V121NTSC.zip creating: HDP_R1_FW_V121NTSC/ inflating: HDP_R1_FW_V121NTSC/install.img HDP_R1_FW_V121PAL.zip Archive: HDP_R1_FW_V121PAL.zip creating: HDP_R1_FW_V121PAL/ inflating: HDP_R1_FW_V121PAL/install.img HDP_R3_FW_109NTSC.zip Archive: HDP_R3_FW_109NTSC.zip creating: HDP_R3_FW_109NTSC/ inflating: HDP_R3_FW_109NTSC/install.img HDP_R3_FW_109PAL.zip Archive: HDP_R3_FW_109PAL.zip creating: HDP_R3_FW_109PAL/ inflating: HDP_R3_FW_109PAL/install.img
6. Make some progress checks.
Just to get an idea of what our results are at this point.
The sha1deep tool is part of the md5deep set of tools.
Not included in all linux distributions, but available here:
http://md5deep.sourceforge.net/
6.1. View the size, sha1sum and full names.
Expect that each file now present will have different checksums.
mszick@deb2core:/Builds/ASUS$ sha1deep -r -z * 104622096 3149b76c903ecfda4816d9f8cbf6959cecb1f896 /Builds/ASUS/HDP_R1_FW_V121NTSC/install.img 29027177 44e37279748ccf7fdbf4a7ab7b7c6ac5f526f840 /Builds/ASUS/HDP_R1_FW_V121NTSC.zip 102481936 c420a47e11b79dcd09964bd11d2e117d658079e0 /Builds/ASUS/HDP_R1_FW_V121PAL/install.img 28362748 ebde85abd1e0fc8c53857b350f4ade302f2450fe /Builds/ASUS/HDP_R1_FW_V121PAL.zip 104622096 75f474d5134d6823af0f8274f98e3b4c10002cef /Builds/ASUS/HDP_R3_FW_109NTSC/install.img 29026517 bbe1e4b41cea30acb730155779cd822cbda13992 /Builds/ASUS/HDP_R3_FW_109NTSC.zip 104622096 22aa51bf803950f5b7bd67d4d2ec7b5b2e988808 /Builds/ASUS/HDP_R3_FW_109PAL/install.img 29027611 3ca461b591d0b8181c30246b8b69293d8afbe2eb /Builds/ASUS/HDP_R3_FW_109PAL.zip
6.2. Check the file types.
Expect that each image file is the same type of file.
mszick@deb2core:/Builds/ASUS$ for f in `find . -name "*.img" ` ; do file $f ; done ./HDP_R3_FW_109NTSC/install.img: POSIX tar archive (GNU) ./HDP_R3_FW_109PAL/install.img: POSIX tar archive (GNU) ./HDP_R1_FW_V121PAL/install.img: POSIX tar archive (GNU) ./HDP_R1_FW_V121NTSC/install.img: POSIX tar archive (GNU)
7. Extract all four images in-place.
Each will be extracted into their corresponding part of our workspace tree.
mszick@deb2core:/Builds/ASUS$ for d in `find . -type d -a ! -wholename '.'` ; do cd $d ; tar --extract --file=install.img ; cd .. ; done
8. Identify common files.
Our primary interest is in the files of the four packages that differ.
Start with a list of all files, grouped by common content checksums.
I have added in comments and blank lines to the output of the following command.
mszick@deb2core:/Builds/ASUS$ sha1deep -r * | sort -n - - Common yaffs2 image utility a0bf7c2d6bf69dfaf531dc10a0fb3e2341cfb787 /Builds/ASUS/HDP_R1_FW_V121NTSC/mkyaffs2image a0bf7c2d6bf69dfaf531dc10a0fb3e2341cfb787 /Builds/ASUS/HDP_R1_FW_V121PAL/mkyaffs2image a0bf7c2d6bf69dfaf531dc10a0fb3e2341cfb787 /Builds/ASUS/HDP_R3_FW_109NTSC/mkyaffs2image a0bf7c2d6bf69dfaf531dc10a0fb3e2341cfb787 /Builds/ASUS/HDP_R3_FW_109PAL/mkyaffs2image a17245e575d1f6c434ee9ffefad735a25bef72d6 /Builds/ASUS/HDP_R1_FW_V121PAL/package2/yaffs2_1.img a5d3b96daaa70e462b6005119d105e866b8301b1 /Builds/ASUS/HDP_R3_FW_109NTSC/package2/usr.local.etc.tar.bz2 - - Common audio binary blob b6e4f539ac353b756941713c3f659609b41bfa52 /Builds/ASUS/HDP_R1_FW_V121NTSC/package2/bluecore.audio b6e4f539ac353b756941713c3f659609b41bfa52 /Builds/ASUS/HDP_R1_FW_V121PAL/package2/bluecore.audio b6e4f539ac353b756941713c3f659609b41bfa52 /Builds/ASUS/HDP_R3_FW_109NTSC/package2/bluecore.audio b6e4f539ac353b756941713c3f659609b41bfa52 /Builds/ASUS/HDP_R3_FW_109PAL/package2/bluecore.audio - - One of the download copies bbe1e4b41cea30acb730155779cd822cbda13992 /Builds/ASUS/HDP_R3_FW_109NTSC.zip c420a47e11b79dcd09964bd11d2e117d658079e0 /Builds/ASUS/HDP_R1_FW_V121PAL/install.img c4fdb53b6352a7a688b4322658d52b450be48f1b /Builds/ASUS/HDP_R1_FW_V121PAL/package2/usr.local.etc.tar.bz2 - - Common Linux kernel d2e9f62d0a2d962e769d9678e6caab8837be95ad /Builds/ASUS/HDP_R1_FW_V121NTSC/package2/vmlinux.develop.avhdd.mars.nand.bin d2e9f62d0a2d962e769d9678e6caab8837be95ad /Builds/ASUS/HDP_R1_FW_V121PAL/package2/vmlinux.develop.avhdd.mars.nand.bin d2e9f62d0a2d962e769d9678e6caab8837be95ad /Builds/ASUS/HDP_R3_FW_109NTSC/package2/vmlinux.develop.avhdd.mars.nand.bin d2e9f62d0a2d962e769d9678e6caab8837be95ad /Builds/ASUS/HDP_R3_FW_109PAL/package2/vmlinux.develop.avhdd.mars.nand.bin d3cffd6bc087e44e050b923ff180ded8a3c0854b /Builds/ASUS/HDP_R3_FW_109PAL/package2/yaffs2_1.img e0365012fa758cb0e7d2c128ea0c4b96a8f76829 /Builds/ASUS/HDP_R3_FW_109PAL/configuration.xml e45d0ba92d2eeb06b64b3e5344228434669e289c /Builds/ASUS/HDP_R1_FW_V121PAL/configuration.xml - - Common video binary blob e8c9a7acc3ed16b4251d752c9c22f06497fb4888 /Builds/ASUS/HDP_R1_FW_V121NTSC/package2/video_firmware.bin e8c9a7acc3ed16b4251d752c9c22f06497fb4888 /Builds/ASUS/HDP_R1_FW_V121PAL/package2/video_firmware.bin e8c9a7acc3ed16b4251d752c9c22f06497fb4888 /Builds/ASUS/HDP_R3_FW_109NTSC/package2/video_firmware.bin e8c9a7acc3ed16b4251d752c9c22f06497fb4888 /Builds/ASUS/HDP_R3_FW_109PAL/package2/video_firmware.bin - - One of the download copies ebde85abd1e0fc8c53857b350f4ade302f2450fe /Builds/ASUS/HDP_R1_FW_V121PAL.zip - - Common video binary installer f3a5270e8a57633b5916db29bfc191587666730d /Builds/ASUS/HDP_R1_FW_V121NTSC/video_firmware.install.bin f3a5270e8a57633b5916db29bfc191587666730d /Builds/ASUS/HDP_R1_FW_V121PAL/video_firmware.install.bin f3a5270e8a57633b5916db29bfc191587666730d /Builds/ASUS/HDP_R3_FW_109NTSC/video_firmware.install.bin f3a5270e8a57633b5916db29bfc191587666730d /Builds/ASUS/HDP_R3_FW_109PAL/video_firmware.install.bin - - Common flash erase tool fc904efae0e7099886169e5f5bd5389b5f0780d5 /Builds/ASUS/HDP_R1_FW_V121NTSC/flash_erase fc904efae0e7099886169e5f5bd5389b5f0780d5 /Builds/ASUS/HDP_R1_FW_V121PAL/flash_erase fc904efae0e7099886169e5f5bd5389b5f0780d5 /Builds/ASUS/HDP_R3_FW_109NTSC/flash_erase fc904efae0e7099886169e5f5bd5389b5f0780d5 /Builds/ASUS/HDP_R3_FW_109PAL/flash_erase - - Common font file 2ba93371b9ad827d33b3f4f77bc823bcc601ad39 /Builds/ASUS/HDP_R1_FW_V121NTSC/arial.ttf 2ba93371b9ad827d33b3f4f77bc823bcc601ad39 /Builds/ASUS/HDP_R1_FW_V121PAL/arial.ttf 2ba93371b9ad827d33b3f4f77bc823bcc601ad39 /Builds/ASUS/HDP_R3_FW_109NTSC/arial.ttf 2ba93371b9ad827d33b3f4f77bc823bcc601ad39 /Builds/ASUS/HDP_R3_FW_109PAL/arial.ttf - - One of the download copies 3ca461b591d0b8181c30246b8b69293d8afbe2eb /Builds/ASUS/HDP_R3_FW_109PAL.zip 4ea2688acd316dc4cfd8d60ae6060da480c90397 /Builds/ASUS/HDP_R1_FW_V121NTSC/package2/yaffs2_1.img - - Common file system creation tool 5b43f0ec31c23ed511b2a5a0f571eafaf4a9a48f /Builds/ASUS/HDP_R1_FW_V121NTSC/mkfs.jffs2 5b43f0ec31c23ed511b2a5a0f571eafaf4a9a48f /Builds/ASUS/HDP_R1_FW_V121PAL/mkfs.jffs2 5b43f0ec31c23ed511b2a5a0f571eafaf4a9a48f /Builds/ASUS/HDP_R3_FW_109NTSC/mkfs.jffs2 5b43f0ec31c23ed511b2a5a0f571eafaf4a9a48f /Builds/ASUS/HDP_R3_FW_109PAL/mkfs.jffs2 7ca277599d757dbf30cdc0cbac4f74f80ac7a4af /Builds/ASUS/HDP_R1_FW_V121NTSC/configuration.xml 22aa51bf803950f5b7bd67d4d2ec7b5b2e988808 /Builds/ASUS/HDP_R3_FW_109PAL/install.img - - One of the download copies 44e37279748ccf7fdbf4a7ab7b7c6ac5f526f840 /Builds/ASUS/HDP_R1_FW_V121NTSC.zip 73e8f5023ec852cca082faa82ca678ae94d820f7 /Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2_1.img 75f474d5134d6823af0f8274f98e3b4c10002cef /Builds/ASUS/HDP_R3_FW_109NTSC/install.img - - Common audio binary installer 83a967ba97ceedeef8da332acad1e2744507c8ab /Builds/ASUS/HDP_R1_FW_V121NTSC/audio_firmware.install.bin 83a967ba97ceedeef8da332acad1e2744507c8ab /Builds/ASUS/HDP_R1_FW_V121PAL/audio_firmware.install.bin 83a967ba97ceedeef8da332acad1e2744507c8ab /Builds/ASUS/HDP_R3_FW_109NTSC/audio_firmware.install.bin 83a967ba97ceedeef8da332acad1e2744507c8ab /Builds/ASUS/HDP_R3_FW_109PAL/audio_firmware.install.bin 2492a82e5dfe6a004893e9f6d5092750a21fc999 /Builds/ASUS/HDP_R3_FW_109PAL/package2/usr.local.etc.tar.bz2 3149b76c903ecfda4816d9f8cbf6959cecb1f896 /Builds/ASUS/HDP_R1_FW_V121NTSC/install.img 5576f2745f14d20ff60b7a71ab05e1af45fdd616 /Builds/ASUS/HDP_R3_FW_109NTSC/configuration.xml - - Common installation binary 8250be031d5c9e02f544f95636b5e4edceb92339 /Builds/ASUS/HDP_R1_FW_V121NTSC/install_a 8250be031d5c9e02f544f95636b5e4edceb92339 /Builds/ASUS/HDP_R1_FW_V121PAL/install_a 8250be031d5c9e02f544f95636b5e4edceb92339 /Builds/ASUS/HDP_R3_FW_109NTSC/install_a 8250be031d5c9e02f544f95636b5e4edceb92339 /Builds/ASUS/HDP_R3_FW_109PAL/install_a 47693b80310dfdacf90c78a890c4156d27be99ce /Builds/ASUS/HDP_R1_FW_V121NTSC/package2/usr.local.etc.tar.bz2 - - Common flash write tool 866925e2c4727d65a4305a2ad06fced58f832908 /Builds/ASUS/HDP_R1_FW_V121NTSC/nandwrite 866925e2c4727d65a4305a2ad06fced58f832908 /Builds/ASUS/HDP_R1_FW_V121PAL/nandwrite 866925e2c4727d65a4305a2ad06fced58f832908 /Builds/ASUS/HDP_R3_FW_109NTSC/nandwrite 866925e2c4727d65a4305a2ad06fced58f832908 /Builds/ASUS/HDP_R3_FW_109PAL/nandwrite
Identification of the items common in all four files is a step towards identifying what is different.
Also note that the "package1" and "squashFS" stuff has been removed from the firmware archives since Firmware R1 1.21 / R3 1.09.
9. Files to be examined.
The four firmware images have three files that differ between them and the common Linux kernel binary.
The kernel binary is on our list of things to be examined because it can contain an early userspace file system which can contain scripting.
d2e9f62d0a2d962e769d9678e6caab8837be95ad /Builds/ASUS/HDP_R1_FW_V121NTSC/package2/vmlinux.develop.avhdd.mars.nand.bin 7ca277599d757dbf30cdc0cbac4f74f80ac7a4af /Builds/ASUS/HDP_R1_FW_V121NTSC/configuration.xml 5576f2745f14d20ff60b7a71ab05e1af45fdd616 /Builds/ASUS/HDP_R3_FW_109NTSC/configuration.xml e45d0ba92d2eeb06b64b3e5344228434669e289c /Builds/ASUS/HDP_R1_FW_V121PAL/configuration.xml e0365012fa758cb0e7d2c128ea0c4b96a8f76829 /Builds/ASUS/HDP_R3_FW_109PAL/configuration.xml 4ea2688acd316dc4cfd8d60ae6060da480c90397 /Builds/ASUS/HDP_R1_FW_V121NTSC/package2/yaffs2_1.img 73e8f5023ec852cca082faa82ca678ae94d820f7 /Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2_1.img a17245e575d1f6c434ee9ffefad735a25bef72d6 /Builds/ASUS/HDP_R1_FW_V121PAL/package2/yaffs2_1.img d3cffd6bc087e44e050b923ff180ded8a3c0854b /Builds/ASUS/HDP_R3_FW_109PAL/package2/yaffs2_1.img 47693b80310dfdacf90c78a890c4156d27be99ce /Builds/ASUS/HDP_R1_FW_V121NTSC/package2/usr.local.etc.tar.bz2 a5d3b96daaa70e462b6005119d105e866b8301b1 /Builds/ASUS/HDP_R3_FW_109NTSC/package2/usr.local.etc.tar.bz2 c4fdb53b6352a7a688b4322658d52b450be48f1b /Builds/ASUS/HDP_R1_FW_V121PAL/package2/usr.local.etc.tar.bz2 2492a82e5dfe6a004893e9f6d5092750a21fc999 /Builds/ASUS/HDP_R3_FW_109PAL/package2/usr.local.etc.tar.bz2
10. Check for early userspace scripting.
10.1. Change to package2 directory.
mszick@deb2core:/Builds/ASUS$ cd HDP_R1_FW_V121PAL/package2/ mszick@deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2$ ls bluecore.audio usr.local.etc.tar.bz2 video_firmware.bin vmlinux.develop.avhdd.mars.nand.bin yaffs2_1.img
10.2. Locate start of Early Userspace archive.
mszick@deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2$ od -A d -t x1 vmlinux.develop.avhdd.mars.nand.bin | grep "1f 8b 08 00" 4161536 1f 8b 08 00 77 c5 57 4b 02 03 33 30 37 30 37 30
| Data | Translation |
|---|---|
| 0x1F 0x8B | 31, 139 - gzip magic number |
| 0x08 | compression method (deflate) |
| 0x00 | flags (none) |
| 0x77 0xC5 0x57 0x4B | modification time |
| 0x02 | extra flags (maximum compression) |
| 0x03 | operating system (Unix) |
For all the gory details see section 2.3 of: http://tools.ietf.org/html/rfc1952
10.3. Copy the archive off kernel image.
mszick@deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2$ dd if=vmlinux.develop.avhdd.mars.nand.bin bs=1 skip=4161536 of=vmlinux.develop.avhdd.mars.nand.cpio.gz 134+0 records in 134+0 records out 134 bytes (134 B) copied, 0.000408345 s, 328 kB/s
10.4. Check for appended data.
A gzip compressed file may have additional data appended to it.
For instance, some Linux distributions like to append their graphic logo file to this early userspace archive.
A gzip compressed file may also have executable code appended to it (a rarely used feature of gzip).
For an example see the investigation of the kernel in the yaffs2 image below.
10.5. Uncompress the archive.
mszick@deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2$ gunzip vmlinux.develop.avhdd.mars.nand.cpio.gz
10.6. Extract archive to file system.
You must be "root" to properly extract the special files and permissions.
Either switch user (su) or use the sudo command for the extraction.
Be certain to include the --no-absolute-filenames option!
mszick@deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2$ su Password: deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2# cpio --extract --make-directories --no-absolute-filenames -I vmlinux.develop.avhdd.mars.nand.cpio cpio: Removing leading `/' from member names 1 block
If you want to check the file format for a valid cpio format, see: http://people.freebsd.org/~kientzle/libarchive/man/cpio.5.txt
10.7. Check what was added to the file system tree.
deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2# ls -l total 94712 -rw-r--r-- 1 mszick mszick 1787432 2009-12-01 23:23 bluecore.audio drwxr-xr-x 2 root root 4096 2010-02-13 11:23 dev drwx------ 2 root root 4096 2010-02-13 11:23 root -rw-r--r-- 1 mszick mszick 5258 2010-02-11 04:54 usr.local.etc.tar.bz2 -rwxr-xr-x 1 mszick mszick 2267176 2010-02-05 04:54 video_firmware.bin -rwxr-xr-x 1 mszick mszick 4161670 2010-01-20 21:13 vmlinux.develop.avhdd.mars.nand.bin -rw-r--r-- 1 mszick mszick 512 2010-02-13 11:21 vmlinux.develop.avhdd.mars.nand.cpio -rw-r--r-- 1 mszick mszick 88630080 2010-02-11 04:54 yaffs2_1.img deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2# ls -l dev root dev: total 0 crw------- 1 root root 5, 1 2010-02-13 11:23 console root: total 0
Translation: No Early Userspace scripting present.
10.8. Create a eus workspace directory and move the archive contents.
deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2# mkdir eus deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2# mv dev root eus deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2# ls -l eus total 8 drwxr-xr-x 2 root root 4096 2010-02-13 11:23 dev drwx------ 2 root root 4096 2010-02-13 11:23 root
10.9. Drop "root" user level and return to top workspace.
deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2# exit exit mszick@deb2core:/Builds/ASUS/HDP_R1_FW_V121PAL/package2$ cd - /Builds/ASUS mszick@deb2core:/Builds/ASUS$
11. Comparing configuration.xml files
This is the flash burner's configuration file.
11.1. R3 to R1 for NTSC
mszick@deb2core:/Builds/ASUS$ diff -u ./HDP_R3_FW_109NTSC/configuration.xml ./HDP_R1_FW_V121NTSC/configuration.xml
--- ./HDP_R3_FW_109NTSC/configuration.xml 2010-02-11 04:15:32.000000000 -0600
+++ ./HDP_R1_FW_V121NTSC/configuration.xml 2010-02-11 04:43:17.000000000 -0600
@@ -2,9 +2,9 @@
<packageFile>
<info>
<company>Realtek Semiconductor Corp.</company>
- <description>HDP-R3</description>
- <version>01.09N</version>
- <releaseDate>02/11/10 18:15</releaseDate>
+ <description>HDP-R1</description>
+ <version>01.21N</version>
+ <releaseDate>02/11/10 18:43</releaseDate>
<signature>MARS AVHDD on NOR or NAND</signature>
</info>
<installerAP>
Differs only by release version and date. Not functionally significant.
11.2. R3 to R1 for PAL
mszick@deb2core:/Builds/ASUS$ diff -u ./HDP_R3_FW_109PAL/configuration.xml ./HDP_R1_FW_V121NTSC/configuration.xml
--- ./HDP_R3_FW_109PAL/configuration.xml 2010-02-11 04:07:10.000000000 -0600
+++ ./HDP_R1_FW_V121NTSC/configuration.xml 2010-02-11 04:43:17.000000000 -0600
@@ -2,9 +2,9 @@
<packageFile>
<info>
<company>Realtek Semiconductor Corp.</company>
- <description>HDP-R3</description>
- <version>01.09P</version>
- <releaseDate>02/11/10 18:07</releaseDate>
+ <description>HDP-R1</description>
+ <version>01.21N</version>
+ <releaseDate>02/11/10 18:43</releaseDate>
<signature>MARS AVHDD on NOR or NAND</signature>
</info>
<installerAP>
Differs only by release version and date. Not functionally significant.
11.3. R1 NTSC to R1 PAL
mszick@deb2core:/Builds/ASUS$ diff -u ./HDP_R1_FW_V121NTSC/configuration.xml ./HDP_R1_FW_V121PAL/configuration.xml
--- ./HDP_R1_FW_V121NTSC/configuration.xml 2010-02-11 04:43:17.000000000 -0600
+++ ./HDP_R1_FW_V121PAL/configuration.xml 2010-02-11 04:54:28.000000000 -0600
@@ -3,8 +3,8 @@
<info>
<company>Realtek Semiconductor Corp.</company>
<description>HDP-R1</description>
- <version>01.21N</version>
- <releaseDate>02/11/10 18:43</releaseDate>
+ <version>01.21P</version>
+ <releaseDate>02/11/10 18:54</releaseDate>
<signature>MARS AVHDD on NOR or NAND</signature>
</info>
<installerAP>
Differs only by release version and date. Not functionally significant.
11.4. R3 NTSC to R3 PAL
mszick@deb2core:/Builds/ASUS$ diff -u ./HDP_R3_FW_109NTSC/configuration.xml ./HDP_R3_FW_109PAL/configuration.xml
--- ./HDP_R3_FW_109NTSC/configuration.xml 2010-02-11 04:15:32.000000000 -0600
+++ ./HDP_R3_FW_109PAL/configuration.xml 2010-02-11 04:07:10.000000000 -0600
@@ -3,8 +3,8 @@
<info>
<company>Realtek Semiconductor Corp.</company>
<description>HDP-R3</description>
- <version>01.09N</version>
- <releaseDate>02/11/10 18:15</releaseDate>
+ <version>01.09P</version>
+ <releaseDate>02/11/10 18:07</releaseDate>
<signature>MARS AVHDD on NOR or NAND</signature>
</info>
<installerAP>
Differs only by release version and date. Not functionally significant.
12. Extract yaffs2 file system images.
This requires the unyaffs tool which is rarely a part of any Linux distribution.
The archivist of this code is:
http://code.google.com/p/unyaffs/
You can also find archives in our file gallery with both source and pre-compiled binaries of the tool.
Currently both 32 and 64 bit Linux and 32 bit Mac OSx binaries. Somebody want to build us a Windows version?
Extract each image into a sub-directory of the package2 directories.
If you intend to modify and re-create this yaffs2 image, you should be "root" during this extract operation so that all ownership, permissions and special files are preserved.
Modifications here means adding opt, root and home empty directories to the root of the file system or other changes to the image contents.
I did not do that in the following step because I do not intend to put this copy back together later.
mszick@deb2core:/Builds/ASUS$ for d in `find . -name package2 2>/dev/null` ; do mkdir -p $d/yaffs2 ; cd $d/yaffs2 ; unyaffs ../yaffs2_1.img ; cd - ; done end of image /Builds/ASUS end of image /Builds/ASUS end of image /Builds/ASUS end of image /Builds/ASUS mszick@deb2core:/Builds/ASUS$
12.1. Identify common files.
This is a similar process to the one used above. In this case the sha1deep command is restricted to only listing regular files. I.E: Skipping all of the links to the four copies of busybox.
There will be some error messages from this command, caused by broken symbolic links. Usually "normal" for a file system that has not yet been installed and running at the time those links where listed.
The command:
mszick@deb2core:/Builds/ASUS$ sha1deep -r -o f */package2/yaffs2 | sort -n >../pak2files.txt
Results in a text file of the regular files found. In this case, 4,634 of them.
Readers will please excuse me for not listing all of them in-line here.
The sorted text file from the above command is available from our file gallery:
pak2files.txt (614.87 Kb)
A script that will generate the following six reports in a format for loading into a spreadsheet program for study can be found in our file gallery:
file_audit-1.0.tgz (27.21 Kb)
12.2. Isolate the files that differ.
This is one of the things we want to know, which files make the difference between R1 and R3, NTSC and PAL (and howto support ATSC).
Given a 4,600+ record input file, it took the Lua script 1.214 seconds of wall clock time to produce the 41,000+ line report set.
A sneak peak at the firmware audit report for a dozen input records.
The example test package in our file gallery has been updated to the one which does concordance counting.
dae78c320033e00b35cebcd72f55d258d4903797
DvdPlayer HDP_R1_FW_V121PAL /usr/local/bin
8140134587b0f4aa9490ddf02b69191f942ce97d
DvdPlayer HDP_R3_FW_109PAL /usr/local/bin
641f74a59802776d21e2135c4678ba06d2635a4e
DvdPlayer HDP_R1_FW_V121NTSC /usr/local/bin
4108a3042442b792dcf7eec2bf8744f9a5990635
DvdPlayer HDP_R3_FW_109NTSC /usr/local/bin4a5ed49d10ffdd3e99ae4d99b054dc869e965e48
wpa_cli HDP_R1_FW_V121NTSC /usr/local/bin
wpa_cli HDP_R3_FW_109NTSC /usr/local/bin
wpa_cli HDP_R3_FW_109PAL /usr/local/bin
5f68095853428d9d0e0a86cb8a1c1f339db15754
wpa_supplicant HDP_R1_FW_V121NTSC /usr/local/bin
wpa_supplicant HDP_R3_FW_109NTSC /usr/local/bin
wpa_supplicant HDP_R3_FW_109PAL /usr/local/binDvdPlayer 4
dae78c320033e00b35cebcd72f55d258d4903797 HDP_R1_FW_V121PAL /usr/local/bin
641f74a59802776d21e2135c4678ba06d2635a4e HDP_R1_FW_V121NTSC /usr/local/bin
4108a3042442b792dcf7eec2bf8744f9a5990635 HDP_R3_FW_109NTSC /usr/local/bin
8140134587b0f4aa9490ddf02b69191f942ce97d HDP_R3_FW_109PAL /usr/local/binwpa_cli
4a5ed49d10ffdd3e99ae4d99b054dc869e965e48 HDP_R1_FW_V121NTSC /usr/local/bin
4a5ed49d10ffdd3e99ae4d99b054dc869e965e48 HDP_R3_FW_109NTSC /usr/local/bin
4a5ed49d10ffdd3e99ae4d99b054dc869e965e48 HDP_R3_FW_109PAL /usr/local/bin
wpa_supplicant
5f68095853428d9d0e0a86cb8a1c1f339db15754 HDP_R1_FW_V121NTSC /usr/local/bin
5f68095853428d9d0e0a86cb8a1c1f339db15754 HDP_R3_FW_109NTSC /usr/local/bin
5f68095853428d9d0e0a86cb8a1c1f339db15754 HDP_R3_FW_109PAL /usr/local/binInteresting, the R1-PAL firmware doesn't do encrypted Wifi
12.3. Duplicated Content
Files differing in name but having identical content.
Content sums appearing 8 times: a9e21cb419190b4d2b16a246f4cf2d87c3739490 PORTUGAL.str HDP_R1_FW_V121NTSC /usr/local/bin/Resource VIETNAMESE.str HDP_R1_FW_V121NTSC /usr/local/bin/Resource PORTUGAL.str HDP_R1_FW_V121PAL /usr/local/bin/Resource VIETNAMESE.str HDP_R1_FW_V121PAL /usr/local/bin/Resource PORTUGAL.str HDP_R3_FW_109NTSC /usr/local/bin/Resource VIETNAMESE.str HDP_R3_FW_109NTSC /usr/local/bin/Resource PORTUGAL.str HDP_R3_FW_109PAL /usr/local/bin/Resource VIETNAMESE.str HDP_R3_FW_109PAL /usr/local/bin/Resource 5d83bf36113cfa258e5c60e369e6bccd5b061065 Italy.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root Italy.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root Italy.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root Italy.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root Italy.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root Italy.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root Italy.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root Italy.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root 68faf23ae2993eab39f2376f9f068a25a6e947f5 Asia.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root Asia.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root Asia.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root Asia.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root Asia.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root Asia.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root Asia.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root Asia.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root f4396342c1350014a2be48b9fdea4830b53ad078 Germany.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root Germany.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root Germany.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root Germany.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root Germany.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root Germany.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root Germany.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root Germany.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root db8d399560f83238f46efce623be0a54f2580abc myfavorites.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root myfavorites.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root myfavorites.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root myfavorites.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root myfavorites.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root myfavorites.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root myfavorites.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root myfavorites.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root 5261c66f774e3ddc9d80a19c074a123e784bf186 mostlysunny.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather partlycloudy.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather mostlysunny.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather partlycloudy.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather mostlysunny.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather partlycloudy.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather mostlysunny.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather partlycloudy.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather f55e4db891cc556340b0021b277020893d48856b United_Kingdom.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root United_Kingdom.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root United_Kingdom.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root United_Kingdom.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root United_Kingdom.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root United_Kingdom.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root United_Kingdom.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root United_Kingdom.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root 6f189dc59f840a6eab4ce72aec36ae27d80ec36e France.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root France.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root France.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root France.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root France.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root France.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root France.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root France.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root 571ef26da343fa88b8bb9a69f408f9caa1e05b93 Europe.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root Europe.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root Europe.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root Europe.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root Europe.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root Europe.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root Europe.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root Europe.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root 6eee86f890239d1792a716257bf88db322f18efa IMAGE_KEN_BURNS.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SEAMLESS_PLAYBACK.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_KEN_BURNS.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SEAMLESS_PLAYBACK.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_KEN_BURNS.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SEAMLESS_PLAYBACK.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_KEN_BURNS.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_SEAMLESS_PLAYBACK.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp 2a9afde1f4b034dd8f96686319e869a307b12ba8 North_America.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root North_America.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root North_America.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root North_America.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root North_America.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root North_America.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root North_America.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root North_America.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root 30b006caf13354a0b9e3cf9534f3bcab4371bdc2 Africa.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root Africa.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root Africa.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root Africa.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root Africa.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root Africa.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root Africa.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root Africa.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root d4a70f607ba96eeb8e7b39762c87514a6c386a26 IMAGE_SET_PWD_FOCUS2_SMALL.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS3_SMALL.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS2_SMALL.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS3_SMALL.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS2_SMALL.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS3_SMALL.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS2_SMALL.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS3_SMALL.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp f12ecc74657ec0375a173b3c0bee70414d2ed603 South_America.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root South_America.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root South_America.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root South_America.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root South_America.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root South_America.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root South_America.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root South_America.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root f5ec080544156f803f5bdadda6b80cf7fe60464f IMAGE_SET_PWD2_SMALL.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD3_SMALL.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD2_SMALL.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD3_SMALL.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD2_SMALL.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD3_SMALL.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD2_SMALL.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD3_SMALL.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp 90a2ce35aa20883b2012bc334127e3fb81b019a5 Oceania.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root Oceania.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root Oceania.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root Oceania.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root Oceania.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root Oceania.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root Oceania.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root Oceania.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root ff88c5f01ad2f91f48e02d77ac5d6edd9cf2e9d7 IMAGE_KEN_BURNS_FOCUS.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SEAMLESS_PLAYBACK_FOCUS.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_KEN_BURNS_FOCUS.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SEAMLESS_PLAYBACK_FOCUS.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_KEN_BURNS_FOCUS.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SEAMLESS_PLAYBACK_FOCUS.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_KEN_BURNS_FOCUS.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_SEAMLESS_PLAYBACK_FOCUS.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp 1a52471f6e660492a9dcb36af088b264c1bf2630 clear.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather sunny.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather clear.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather sunny.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather clear.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather sunny.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather clear.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather sunny.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather 6642439bdf140322cea4a8d87502eeebe58a7d5e China.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root China.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root China.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root China.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root China.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root China.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root China.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root China.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root 96de05e583e79930c2363db2ba724475cbcffdcd IMAGE_SEL_SLIDESHOW.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SLIDE_SHOW_TIME.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SEL_SLIDESHOW.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SLIDE_SHOW_TIME.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SEL_SLIDESHOW.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SLIDE_SHOW_TIME.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SEL_SLIDESHOW.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_SLIDE_SHOW_TIME.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp b66e7075ecdc0c68a8605017cb91dec02cfabb88 IMAGE_SET_PWD2.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD3.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD2.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD3.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD2.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD3.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD2.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD3.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp 79335881da2ffdb0b0f780472abb623da5d5b9bd cloudy.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather fog.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather cloudy.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather fog.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather cloudy.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather fog.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather cloudy.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather fog.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather 95368824cda062cc88a9ec3bd7edd39152e4faff world.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root world.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root world.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root world.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root world.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root world.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root world.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root world.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root 5af976aee5ca30c811e4aaae97c8ab84cf28d544 IMAGE_SET_PWD_FOCUS2.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS3.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS2.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS3.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS2.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS3.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS2.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_SET_PWD_FOCUS3.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp 6961bc3d3737896e9a825801357c8185b6d11604 Russia.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map_root Russia.rss HDP_R1_FW_V121NTSC /usr/local/bin/scripts/map/root Russia.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map_root Russia.rss HDP_R1_FW_V121PAL /usr/local/bin/scripts/map/root Russia.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map_root Russia.rss HDP_R3_FW_109NTSC /usr/local/bin/scripts/map/root Russia.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map_root Russia.rss HDP_R3_FW_109PAL /usr/local/bin/scripts/map/root d3fb1f1b425b73bc36e3ba5b868f8d1d41d800c8 chancetstorms.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather tstorms.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather chancetstorms.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather tstorms.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather chancetstorms.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather tstorms.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather chancetstorms.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather tstorms.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather 21af4e11f369fe7ace74a75d936124dc08aa55d4 pps.jpg HDP_R1_FW_V121NTSC /usr/local/bin/image pps.jpg HDP_R1_FW_V121NTSC /usr/local/bin/IMS_Modules/PPS/image pps.jpg HDP_R1_FW_V121PAL /usr/local/bin/image pps.jpg HDP_R1_FW_V121PAL /usr/local/bin/IMS_Modules/PPS/image pps.jpg HDP_R3_FW_109NTSC /usr/local/bin/image pps.jpg HDP_R3_FW_109NTSC /usr/local/bin/IMS_Modules/PPS/image pps.jpg HDP_R3_FW_109PAL /usr/local/bin/image pps.jpg HDP_R3_FW_109PAL /usr/local/bin/IMS_Modules/PPS/image 3bf9bfe977db6d6a1065b239167c38085cae6507 chancesnow.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather snow.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather chancesnow.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather snow.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather chancesnow.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather snow.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather chancesnow.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather snow.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather Content sums appearing 12 times: c90640834159d3a016c6f1b586738a26c4fda613 IMAGE_FOCUS.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_GBROWSER_DEVICE_FOCUS.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_GBROWSER_IMAGE_FOCUS.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_FOCUS.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_GBROWSER_DEVICE_FOCUS.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_GBROWSER_IMAGE_FOCUS.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_FOCUS.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_GBROWSER_DEVICE_FOCUS.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_GBROWSER_IMAGE_FOCUS.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_FOCUS.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_GBROWSER_DEVICE_FOCUS.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_GBROWSER_IMAGE_FOCUS.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp d8516e1df391691c054549ea91b06a19112e7807 chancesleet.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather flurries.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather sleet.png HDP_R1_FW_V121NTSC /usr/local/bin/image/asus/weather chancesleet.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather flurries.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather sleet.png HDP_R1_FW_V121PAL /usr/local/bin/image/asus/weather chancesleet.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather flurries.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather sleet.png HDP_R3_FW_109NTSC /usr/local/bin/image/asus/weather chancesleet.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather flurries.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather sleet.png HDP_R3_FW_109PAL /usr/local/bin/image/asus/weather Content sums appearing 16 times: 11a6fcc007b241a548759fbfa419addd313e4246 IMAGE_ANGLE.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_NEWRSS_CHANNEL.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_NEWRSS_SUBSCRIBE.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_NEWRSS_UNSUBSCRIBE.bmp HDP_R1_FW_V121NTSC /usr/local/bin/Resource/bmp IMAGE_ANGLE.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_NEWRSS_CHANNEL.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_NEWRSS_SUBSCRIBE.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_NEWRSS_UNSUBSCRIBE.bmp HDP_R1_FW_V121PAL /usr/local/bin/Resource/bmp IMAGE_ANGLE.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_NEWRSS_CHANNEL.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_NEWRSS_SUBSCRIBE.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_NEWRSS_UNSUBSCRIBE.bmp HDP_R3_FW_109NTSC /usr/local/bin/Resource/bmp IMAGE_ANGLE.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_NEWRSS_CHANNEL.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_NEWRSS_SUBSCRIBE.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp IMAGE_NEWRSS_UNSUBSCRIBE.bmp HDP_R3_FW_109PAL /usr/local/bin/Resource/bmp
12.4. Summary
mszick@deb2core:/Builds/ASUS$ ls */package2/yaffs2 HDP_R1_FW_V121NTSC/package2/yaffs2: bin dev etc lib linuxrc mnt proc sbin sys Test.fat tmp tmp_orig usr var vmlinux HDP_R1_FW_V121PAL/package2/yaffs2: bin dev etc lib linuxrc mnt proc sbin sys Test.fat tmp tmp_orig usr var vmlinux HDP_R3_FW_109NTSC/package2/yaffs2: bin dev etc lib linuxrc mnt proc sbin sys Test.fat tmp tmp_orig usr var vmlinux HDP_R3_FW_109PAL/package2/yaffs2: bin dev etc lib linuxrc mnt proc sbin sys Test.fat tmp tmp_orig usr var vmlinux
The above is obviously the "root" directory of the file system (to be).
Note the lack of the directories root, home, and opt - you probably want to add those at some point.
Note also that the brain-dead, development board, fat filesystem with a swap file on it is still there.
One would almost think that ASUS hasn't yet read our comments on that piece of cr...
No special scripting, linuxrc is a link to busybox (init).
mszick@deb2core:/Builds/ASUS$ ls -l */package2/yaffs2/linuxrc lrwxrwxrwx 1 mszick mszick 11 2010-02-13 13:10 HDP_R1_FW_V121NTSC/package2/yaffs2/linuxrc -> bin/busybox lrwxrwxrwx 1 mszick mszick 11 2010-02-13 13:10 HDP_R1_FW_V121PAL/package2/yaffs2/linuxrc -> bin/busybox lrwxrwxrwx 1 mszick mszick 11 2010-02-13 13:10 HDP_R3_FW_109NTSC/package2/yaffs2/linuxrc -> bin/busybox lrwxrwxrwx 1 mszick mszick 11 2010-02-13 13:10 HDP_R3_FW_109PAL/package2/yaffs2/linuxrc -> bin/busybox
Note that the kernel in the yaffs2 image is not the same kernel as in the install image:
mszick@deb2core:/Builds/ASUS$ ls -l */package2/yaffs2/vmlinux -rwxr-xr-x 1 mszick mszick 4919721 2010-02-13 13:10 HDP_R1_FW_V121NTSC/package2/yaffs2/vmlinux -rwxr-xr-x 1 mszick mszick 4919721 2010-02-13 13:10 HDP_R1_FW_V121PAL/package2/yaffs2/vmlinux -rwxr-xr-x 1 mszick mszick 4919721 2010-02-13 13:10 HDP_R3_FW_109NTSC/package2/yaffs2/vmlinux -rwxr-xr-x 1 mszick mszick 4919721 2010-02-13 13:10 HDP_R3_FW_109PAL/package2/yaffs2/vmlinux mszick@deb2core:/Builds/ASUS$ sha1sum */package2/yaffs2/vmlinux 18bfa238efbe2a46c67080367d8363f9ee596c89 HDP_R1_FW_V121NTSC/package2/yaffs2/vmlinux 18bfa238efbe2a46c67080367d8363f9ee596c89 HDP_R1_FW_V121PAL/package2/yaffs2/vmlinux 18bfa238efbe2a46c67080367d8363f9ee596c89 HDP_R3_FW_109NTSC/package2/yaffs2/vmlinux 18bfa238efbe2a46c67080367d8363f9ee596c89 HDP_R3_FW_109PAL/package2/yaffs2/vmlinux
Just eyeball the sha1 checksum of these vs that listed above.
Better check this kernel for Early Userspace scripting also.
12.5. Check the yaffs2 kernel for Early Userspace archive.
The kernel inside of the yaffs2 image is not the same kernel file as in the install image that was checked above.
Same procedure as above, same cautions apply.
mszick@deb2core:/Builds/ASUS$ cd ./HDP_R3_FW_109NTSC/package2/yaffs2/ mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2$ mkdir linux mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2$ cd linux
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ cp -a ../vmlinux .
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ od -A d -t x1 vmlinux | grep "1f 8b 08 00" 4169728 1f 8b 08 00 77 c5 57 4b 02 03 33 30 37 30 37 30
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ dd if=vmlinux bs=1 skip=4169728 of=vmlinux.cpio.gz 749993+0 records in 749993+0 records out 749993 bytes (750 kB) copied, 2.09401 s, 358 kB/s
Either we have a significant sized early userspace archive here or an archive plus appended data.
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ gunzip -lv vmlinux.cpio.gz method crc date time compressed uncompressed ratio uncompressed_name defla 6e696d5f Feb 14 08:54 749993 7889261 90.5% vmlinux.cpio
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ cp -a vmlinux.cpio.gz vmlinux.data.cgz
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ gunzip -v vmlinux.cpio.gz vmlinux.cpio.gz: gzip: vmlinux.cpio.gz: decompression OK, trailing garbage ignored -6300.0% -- replaced with vmlinux.cpio mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ ls -l vmlinux.cpio -rw-r--r-- 1 mszick mszick 512 2010-02-14 08:54 vmlinux.cpio
Obviously we have data appended to the compressed file.
So we need to figure out where it starts so that we can copy it before gunzip bit buckets it.
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ cp -a vmlinux.cpio vmlinux.cpio-2 mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ gzip -1 vmlinux.cpio-2 mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ ls -l total 5568 -rwxr-xr-x 1 mszick mszick 4919721 2010-02-13 13:10 vmlinux -rw-r--r-- 1 mszick mszick 512 2010-02-14 09:27 vmlinux.cpio -rw-r--r-- 1 mszick mszick 166 2010-02-14 09:27 vmlinux.cpio-2.gz -rw-r--r-- 1 mszick mszick 749993 2010-02-14 09:27 vmlinux.data.cgz
Using the type 1 compression option above results in the largest possible compressed size for the cpio archive.
Then using dd to copy various lengths from the front of the original compressed archive (use binary search trial sizes) we soon discover that 134 bytes is the correct compressed size of the archive.
In other words, 135 bytes gives us the "trailing garbage" message and 133 bytes gives us the "unexpected end" message.
Sorry, folks, the gzip format does not save the "134" number in the file image for us, you have to search for what works.
Somewhere in the world is probably a patched version of gunzip that reports the "used" archive bytes but I haven't found (or made) it yet.
Just enjoy reverse engineering at its roughest for now.
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ dd if=vmlinux.data.cgz bs=1 skip=134 of=vmlinux.data 749859+0 records in 749859+0 records out 749859 bytes (750 kB) copied, 2.19022 s, 342 kB/s
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ file vmlinux.data vmlinux.data: data
Additional examination of that part of the file shows that the "trailing garbage" happens to be the kernel symbol table.
Not used by the kernel, normally only used by the kernel debuggers, but might be used by any of the closed source applications in this firmware image.
If it is possible for the O!Play applications to run without the kernel symbol table, we could get back 6 eraseblocks of flash space by stripping it off the kernel.
mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$ su Password: deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux# cpio --extract --make-directories --no-absolute-filenames -I vmlinux.cpio cpio: Removing leading `/' from member names 1 block deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux# ls -l total 4832 drwxr-xr-x 2 root root 4096 2010-02-13 15:53 dev drwx------ 2 root root 4096 2010-02-13 15:53 root -rwxr-xr-x 1 mszick mszick 4919721 2010-02-13 13:10 vmlinux -rw-r--r-- 1 mszick mszick 512 2010-02-13 15:50 vmlinux.cpio deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux# ls -l dev root dev: total 0 crw------- 1 root root 5, 1 2010-02-13 15:53 console root: total 0 deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux# exit exit mszick@deb2core:/Builds/ASUS/HDP_R3_FW_109NTSC/package2/yaffs2/linux$
No Early Userspace scripting there either.
13. Extract the usr/local/etc archives
Put the contents into a ule sub-directory of each package2 directory.
mszick@deb2core:/Builds/ASUS$ for d in `find . -name package2` ; do mkdir -p $d/ule ; cd $d/ule tar --extract --bzip2 -v --file=../usr.local.etc.tar.bz2 ; cd - ; done /Builds/ASUS /Builds/ASUS /Builds/ASUS /Builds/ASUS mszick@deb2core:/Builds/ASUS$
Note two things:
- the -v in the tar command (which should list each file as it is extracted)
- the lack of anything reported as being extracted.
Yup, further checking confirms, that archive is an empty placeholder.
14. Customizing the image.
The above procedure is 100% reversible.
-- No offense intended, but readers without enough *nix experience to see that for themselves have no business trying. --
It is extremely easy to "brick" your machine by making changes to the firmware image, so be careful and have your serial port cable handy.
Contributors to this page: mikez
and
somerandomhash
.
Page last modified on Thursday 25 of February, 2010 09:18:53 CST by mikez.
