Showing posts with label pure. Show all posts
Showing posts with label pure. Show all posts

Monday, February 21, 2011

Pure Siesta Flow #17

I've coded a small program to display the information found in the header of Pure firmware files. The sources are available in my github repository.

And here's what it displays for the Siesta Flow firmware version 1.6:

$ pure Siesta_Flow_v1.6.dfu
Firmware file size : 3906160 bytes

----------------------------------------
         NAME       OFFSET        LENGTH
----------------------------------------
[0x00]   NVS1   0x00001080        266112
[0x10]   LDRS   0x00042000        148896
[0x20]   LDLK   0x00066620          9184
[0x30]   LDLZ   0x00068AC0        527070
[0x40]   LKGZ   0x000E9730        657523
[0x50]   SQFS   0x0018A110       2560000
[0x60]   FREE   0x003FB110        151280
----------------------------------------

Thursday, February 17, 2011

Pure Siesta Flow #16

In conclusion, we have this:

+---------+---------+---------+
| PART    |  OFFSET |  LENGTH |
|---------|---------|---------+
| HEADER  |       0 |     128 |
| LDLK    |     128 |    9184 |
| LDLZ    |    9504 |  527070 |
| LKGZ    |  536976 |  657523 |
| SQFS    | 1194864 | 2560000 |
| FREE    | 3754864 |  151280 |
| DFUSIG  | 3906144 |      16 |
+---------+---------+---------+

And we can obtain the different parts with the following commands:

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.hdr ibs=1 count=128
128+0 records in
0+1 records out
128 bytes (128 B) copied, 0.0154025 s, 8.3 kB/s

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.ldlk ibs=1 skip=128 count=9184
9184+0 records in
17+1 records out
9184 bytes (9.2 kB) copied, 0.0287792 s, 319 kB/s

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.ldlz ibs=1 skip=9504 count=527070
527070+0 records in
1029+1 records out
527070 bytes (527 kB) copied, 0.197052 s, 2.7 MB/s

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.lkgz ibs=1 skip=536976 count=657523
657523+0 records in
1284+1 records out
657523 bytes (658 kB) copied, 0.266691 s, 2.5 MB/s

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.sqfs ibs=1 skip=1194864 count=2560000
2560000+0 records in
5000+0 records out
2560000 bytes (2.6 MB) copied, 0.922127 s, 2.8 MB/s

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.free ibs=1 skip=3754864 count=151280
151280+0 records in
295+1 records out
151280 bytes (151 kB) copied, 0.0832786 s, 1.8 MB/s

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.dfusig ibs=1 skip=3906144 count=16
16+0 records in
0+1 records out
16 bytes (16 B) copied, 0.0273217 s, 0.6 kB/s

Tuesday, February 15, 2011

Pure Siesta Flow #15

$ hd -n 112 Siesta_Flow_v1.6.dfu
00000000 4e 56 53 31 80 10 00 00 80 0f 04 00 00 00 00 00 |NVS1............|
00000010 4c 44 52 53 00 20 04 00 a0 45 02 00 00 00 00 00 |LDRS. .. E......|
00000020 4c 44 4c 4b 20 66 06 00 e0 23 00 00 00 00 00 00 |LDLK f..à#......|
00000030 4c 44 4c 5a c0 8a 06 00 de 0a 08 00 00 00 00 00 |LDLZÀ...Þ.......|
00000040 4c 4b 47 5a 30 97 0e 00 73 08 0a 00 00 00 00 00 |LKGZ0...s.......|
00000050 53 51 46 53 10 a1 18 00 00 10 27 00 00 00 00 00 |SQFS.¡....'.....|
00000060 46 52 45 45 10 b1 3f 00 f0 4e 02 00 00 00 00 00 |FREE.±?.ðN......|
00000070

$ NVS1_START=$((0x1080)) && echo $NVS1_START
4224

$ NVS1_LENGTH=$((0x040f80)) && echo $NVS1_LENGTH
266112

$ NVS1_END=$(($NVS1_START + $NVS1_LENGTH)) && echo $NVS1_END
270336

$ LDRS_START=$((0x042000)) && echo $LDRS_START
270336

$ LDRS_LENGTH=$((0x0245a0)) && echo $LDRS_LENGTH
148896

$ LDRS_END=$(($LDRS_START + $LDRS_LENGTH)) && echo $LDRS_END
419232

$ LDLK_START=$((0x066620)) && echo $LDLK_START
419360

$ LDLK_LENGTH=$((0x23e0)) && echo $LDLK_LENGTH
9184

$ LDLK_END=$(($LDLK_START + $LDLK_LENGTH)) && echo $LDLK_END
428544

$ LDLZ_START=$((0x068ac0)) && echo $LDLZ_START
428736

$ LDLZ_LENGTH=$((0x080ade)) && echo $LDLZ_LENGTH
527070

$ LDLZ_END=$(($LDLZ_START + $LDLZ_LENGTH)) && echo $LDLZ_END
955806

$ LKGZ_START=$((0x0e9730)) && echo $LKGZ_START
956208

$ LKGZ_LENGTH=$((0x0a0873)) && echo $LKGZ_LENGTH
657523

$ LKGZ_END=$(($LKGZ_START + $LKGZ_LENGTH)) && echo $LKGZ_END
1613731

$ SQFS_START=$((0x18a110)) && echo $SQFS_START
1614096

$ SQFS_LENGTH=$((0x271000)) && echo $SQFS_LENGTH
2560000

$ SQFS_END=$(($SQFS_START + $SQFS_LENGTH)) && echo $SQFS_END
4174096

$ FREE_START=$((0x3fb110)) && echo $FREE_START
4174096

$ FREE_LENGTH=$((0x024ef0)) && echo $FREE_LENGTH
151280

$ FREE_END=$(($FREE_START + $FREE_LENGTH)) && echo $FREE_END
4325376

$ FILE_LENGTH=$(du -b Siesta_Flow_v1.6.dfu | cut -f1) && echo $FILE_LENGTH
3906160

$ DFUSIG_LENGTH=16 && echo $DFUSIG_LENGTH
16

$ hd Siesta_Flow_v1.6.dfu | awk '/hsqs/ {print $1}'
00123b70

$ SQFS_START_REAL=$((0x123b70)) && echo $SQFS_START_REAL
1194864

$ echo $(($SQFS_START - $SQFS_START_REAL))
419232

$ echo $(($FREE_END - $FILE_LENGTH + $DFUSIG_LENGTH))
419232

$ echo $LDRS_END
419232

$ OFFSET=419232 && echo $OFFSET
419232

$ LDLK_START_REAL=$(($LDLK_START - $OFFSET)) && echo $LDLK_START_REAL
128

$ LDLZ_START_REAL=$(($LDLZ_START - $OFFSET)) && echo $LDLZ_START_REAL
9504

$ LKGZ_START_REAL=$(($LKGZ_START - $OFFSET)) && echo $LKGZ_START_REAL
536976

$ FREE_START_REAL=$(($FREE_START - $OFFSET)) && echo $FREE_START_REAL
3754864

$ dd if=Siesta_Flow_v1.6.dfu ibs=1 skip=$LDLK_START_REAL count=32 2> /dev/null | file -
/dev/stdin: Hitachi SH big-endian COFF object, not stripped

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.ldlk ibs=1 skip=$LDLK_START_REAL count=$LDLK_LENGTH
9184+0 records in
17+1 records out
9184 bytes (9.2 kB) copied, 0.0031439 s, 2.9 MB/s

$ dd if=Siesta_Flow_v1.6.dfu ibs=1 skip=$LDLZ_START_REAL count=32 2> /dev/null | file -
/dev/stdin: data

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.ldlz ibs=1 skip=$LDLZ_START_REAL count=$LDLZ_LENGTH
527070+0 records in
1029+1 records out
527070 bytes (527 kB) copied, 0.192992 s, 2.7 MB/s

$ dd if=Siesta_Flow_v1.6.dfu ibs=1 skip=$LKGZ_START_REAL count=32 2> /dev/null | file -/dev/stdin: data

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.lkgz ibs=1 skip=$LKGZ_START_REAL count=$LKGZ_LENGTH
657523+0 records in
1284+1 records out
657523 bytes (658 kB) copied, 0.246891 s, 2.7 MB/s

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.dfusig ibs=1 skip=$(($FILE_LENGTH - $DFUSIG_LENGTH)) count=$DFUSIG_LENGTH
16+0 records in
0+1 records out
16 bytes (16 B) copied, 5.7253e-05 s, 279 kB/s

Monday, February 14, 2011

Pure Siesta Flow #14

Siesta Flow Owner's Manual (PDF)

Acknowledgement of License Agreements
Portions of the code used in Siesta Flow are subject to the following GPL and LPGL licenses and copyright:
GNU General Public License Version 2 (GPLv2). For the full text of the license agreement go to:
http://www.gnu.org/licenses/gpl-2.0.txt
GNU Lesser General Public License Version 2.1 (LGPLv2.1). For the full text of the license agreement go to:
http://www.gnu.org/licenses/lgpl-2.1.txt


PURE Open Source Code Download: http://www.pure.com/gpl/

Pure Siesta Flow #13

Interesting strings from conwy.app.elf:

$ strings Siesta_Flow_v1.6/bin/conwy.app.elf

NSPlayer/4.1.0.3856
ShazamID_v1.0.42
QHsm 2.6
QF/Linux version 2.1.0;

../source/nvs_dynamic_areas.c
../source/ui/conwy_ui.c
../netwireless.c
../contentwrapper.c
../engmode.c
../navigate.c
../dab.c
../priv_dab_cbk_handler.c
../slm_content.c
../slm.c
../dmd_module.c
../backend_mux.c
../hashtree.c
../album_art.c
../dns_resolver.c
../download.c
../http_client.c
../http_client_ilib.c
../http_client_worker.c
../ipConfLogic_module.c
../http/http.c
../chain/libchainmodule.c
../lifetime/lifetime.c
../photo_viewer.c
../portal.c
../xdmduserinfo.c
../xdmdtrackprice.c
../xdmdpurchase.c
../xdmdtopup.c
../xinstallapplet.c
../xgetappletprefs.c
../xsetappletprefs.c
../portal_invoke_data.c
../portal_cmd_timeouts.c
../portal_namelist.c
../cstrings.c
../cpacket.c
../xregisterdevice.c
../xlogin.c
../xregisteruser.c
../xfav.c
../xtime.c
../xgetfilter.c
../xgetinfo.c
../xdeviceattributechanged.c
../xstatus.c
../xsoftwareupgrade.c
../xbrowsebyletter.c
../upnpbrowse.c
../upnpsearch.c
../portal_upgradeinfo.c
../portal_encryption.c
../filter_content.c
../filter_searchcriteria.c
../filter_content_state.c
../filter_parse.c
../stream_gs.c
../track_queue.c
../net_upgrade_check.c
../upnp_browser_stack.c
../media_browser.c
../media_browser_states.c
../portal_browser.c
../portal_browser_states.c
../mscp_content.c
../mscp_content_state.c
../mscp_content_cmd_queue.c
../upnp_search_criteria.c
../mscp_parse.c
../mscp_device.c
../mscp_http_soap.c
../ilibssdpclient.c
../mscp_state.c
../ilibwebclient.c
../wifiConfLogic_module.c
../../keydecode.c
../dummy_battery.c
../pure_sounds.c
../shazam_module.c
../shazam_webservice.c
../shazam_computation_thread2.c
../audio_ak4370.c
../i2c_module.c
../kpdmatrix.c
../non_volatile_store.c
../qt2160.c
../sequencer_driver.c
../system.c
../systemmode.c
../clock.c
../language_content.c
../setupmenu.c
../nav_string_builder.c
../../widget_display.c
../../widgets/widget_vscroll_internal.c
../../widgets/widget_icon.c
../engmode_basic_control.c
../engmode_list.c
../engmode_render.c
../preset.c
../preset_sort.c
../rolling_ball.c
../shaft_encoder.c
../key_encoder.c
../request_encoder.c
../ilibblowfish.c
../ice.c
../filedb.c
../linkedlist.c
../uri.c
../str_cnvlong.c
../fragment.c
../ilibasyncsocket.c
../portal_search_criteria.c
../linux/localip.c
../mscp_content_resource_filters.c
../mscp_service.c
../mscp_contentdir.c
../platform_generic.c
../event_queue.c
../stack.c

Pure Siesta Flow #12

$ find Siesta_Flow_v1.6/lib/modules/
Siesta_Flow_v1.6/lib/modules/
Siesta_Flow_v1.6/lib/modules/2.4.34.5
Siesta_Flow_v1.6/lib/modules/2.4.34.5/metag-linux-c2-gpio.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/metag-linux-i2c-algo.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/metag-linux-gpio-intr.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/metag-ctreg.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/metag-linux-c2-lcd.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/metag-sm.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/metag-linux-i2c-chorus2-adap.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/gspi-vivaldi.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/metag-linux-rotaryencoder.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/gspi8686.o
Siesta_Flow_v1.6/lib/modules/2.4.34.5/metag-itc.o

$ cd Siesta_Flow_v1.6/lib/modules/2.4.34.5/

$ find -exec strings -f {} \; | grep -E "author|description"
./metag-linux-c2-gpio.o: author=Imagination Technologies Ltd.
./metag-linux-c2-gpio.o: description=Chorus2 GPIO controller
./metag-linux-i2c-algo.o: author=Imagination Technologies Ltd.
./metag-linux-i2c-algo.o: description=META I2C Bus algorithm
./metag-linux-gpio-intr.o: author=Imagination Technologies Ltd.
./metag-linux-gpio-intr.o: description=Chorus2 GPIO controller
./metag-ctreg.o: author=Imagination Technologies Ltd.
./metag-ctreg.o: description=META Inter-Thread Shared Memory Driver
./metag-linux-c2-lcd.o: author=Imagination Technologies Ltd.
./metag-linux-c2-lcd.o: description=META Chorus2 byte LCD controller
./metag-sm.o: author=Imagination Technologies Ltd.
./metag-sm.o: description=META Inter-Thread Shared Memory Driver
./metag-linux-i2c-chorus2-adap.o: author=Imagination Technologies Ltd.
./metag-linux-i2c-chorus2-adap.o: description=META Chorus2 SCB Adatper
./metag-linux-rotaryencoder.o: author=Imagination Technologies Ltd.
./metag-linux-rotaryencoder.o: description=Rotary Encoder Module
./gspi8686.o: description=M-WLAN Driver
./gspi8686.o: author=Marvell International Ltd.
./metag-itc.o: author=Imagination Technologies Ltd.
./metag-itc.o: description=META CCB Inter-Thread Communication Driver

Chorus 2 FS1020 (PDF)

Pure Siesta Flow #11

$ find Siesta_Flow_v1.6/lib/firmware/
Siesta_Flow_v1.6/lib/firmware/
Siesta_Flow_v1.6/lib/firmware/gspi8686.bin
Siesta_Flow_v1.6/lib/firmware/helper_gspi.bin

http://cozybit.com/projects/gspi8686/

Pure Siesta Flow #10

$ find Siesta_Flow_v1.6/etc/
Siesta_Flow_v1.6/etc/
Siesta_Flow_v1.6/etc/mtab
Siesta_Flow_v1.6/etc/resolv.conf
Siesta_Flow_v1.6/etc/init.d
Siesta_Flow_v1.6/etc/init.d/S11computereal
Siesta_Flow_v1.6/etc/init.d/_syslogdfile_S00syslogd
Siesta_Flow_v1.6/etc/init.d/_S1restart
Siesta_Flow_v1.6/etc/init.d/_syslogdrs232_S00syslogd
Siesta_Flow_v1.6/etc/init.d/rcS
Siesta_Flow_v1.6/etc/init.d/S10modules.sh
Siesta_Flow_v1.6/etc/init.d/S90conwy.sh
Siesta_Flow_v1.6/etc/init.d/_conwy_S10modules
Siesta_Flow_v1.6/etc/network
Siesta_Flow_v1.6/etc/network/interfaces
Siesta_Flow_v1.6/etc/network/if-down.d
Siesta_Flow_v1.6/etc/network/if-pre-up.d
Siesta_Flow_v1.6/etc/network/if-up.d
Siesta_Flow_v1.6/etc/network/if-post-down.d
Siesta_Flow_v1.6/etc/securetty
Siesta_Flow_v1.6/etc/inittab
Siesta_Flow_v1.6/etc/fstab
Siesta_Flow_v1.6/etc/group
Siesta_Flow_v1.6/etc/hostname
Siesta_Flow_v1.6/etc/foobar.conf
Siesta_Flow_v1.6/etc/ld.so.cache
Siesta_Flow_v1.6/etc/passwd
Siesta_Flow_v1.6/etc/shadow
Siesta_Flow_v1.6/etc/inittab.reflash

$ cat Siesta_Flow_v1.6/etc/fstab
# /etc/fstab: static file system information.
#
#
#/dev/root / ext2 ro,noauto 0 1
#proc /proc proc defaults 0 0
devpts /dev/pts devpts defaults,gid=5,mode=620 0 0
tmpfs /tmp tmpfs defaults 0 0
ramfs /tmpramfs tmpfs defaults 0 0
etcfs /tmpnewetc tmpfs defaults 0 0

$ cat Siesta_Flow_v1.6/etc/hostname
conwy

Pure Siesta Flow #9

$ find Siesta_Flow_v1.6/usr/lib/ -maxdepth 1 -not -type l -not -type d
Siesta_Flow_v1.6/usr/lib/libglib-2.0.so.0.1200.12
Siesta_Flow_v1.6/usr/lib/libgmodule-2.0.so.0.1200.12
Siesta_Flow_v1.6/usr/lib/libitc_audio_chorus2_0175_shazam.so
Siesta_Flow_v1.6/usr/lib/libaaf_audio_chorus2_0175_shazam.so
Siesta_Flow_v1.6/usr/lib/libgstreamer-0.10.so.0.13.0
Siesta_Flow_v1.6/usr/lib/libgsttag-0.10.so.0.10.0
Siesta_Flow_v1.6/usr/lib/libgthread-2.0.so.0.1200.12
Siesta_Flow_v1.6/usr/lib/libasmrules.so
Siesta_Flow_v1.6/usr/lib/libneon.so.26.0.2
Siesta_Flow_v1.6/usr/lib/libintl.so.8.0.0
Siesta_Flow_v1.6/usr/lib/libgobject-2.0.so.0.1200.12
Siesta_Flow_v1.6/usr/lib/libgstbase-0.10.so.0.13.0

$ strings Siesta_Flow_v1.6/usr/lib/libneon.so.26.0.2 | grep -E "neon [0-9]\.[0-9]{2}\.[0-9]"
neon 0.26.2: Library build, IPv6, zlib 1.2.3.

neon 0.26.2
http://www.webdav.org/neon/neon-0.26.2.tar.gz

$ strings Siesta_Flow_v1.6/usr/lib/libgstreamer-0.10.so.0.13.0 | grep -E "[0-9]\.[0-9]{2}\.[0-9]{2}"
0.10.14

gstreamer 0.10.14
http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.14.tar.bz2

Pure Siesta Flow #8

$ find Siesta_Flow_v1.6/usr/bin/ -not -type l -not -type d
Siesta_Flow_v1.6/usr/bin/dmalloc

$ strings Siesta_Flow_v1.6/usr/bin/dmalloc | grep -E "[0-9]\.[0-9]\.[0-9]"
5.5.2

dmalloc 5.5.2
http://dmalloc.com/releases/dmalloc-5.5.2.tgz

Pure Siesta Flow #7 bis

$ find Siesta_Flow_v1.6/sbin/ -maxdepth 1 -not -type l -not -type d
Siesta_Flow_v1.6/sbin/wpa_supplicant
Siesta_Flow_v1.6/sbin/wpa_cli
Siesta_Flow_v1.6/sbin/iwconfig

$ strings Siesta_Flow_v1.6/sbin/wpa_supplicant | grep -E "wpa_supplicant v[0-9]\.[0-9]\.[0-9]"
wpa_supplicant v0.5.7-MSI-1

wpa_supplicant 0.5.7
http://hostap.epitest.fi/releases/wpa_supplicant-0.5.7.tar.gz

http://www.daimi.au.dk/~spider/gumstix/gumstix-buildroot/build_arm_nofpu/wpa_supplicant-0.5.7/ChangeLog
http://www.daimi.au.dk/~spider/gumstix/gumstix-buildroot/package/wpa_supplicant/patch_wpa_supplicant-0.5.7-MSI-1-GUM

Pure Siesta Flow #7

$ find Siesta_Flow_v1.6/lib/ -maxdepth 1 -not -type l -not -type d
Siesta_Flow_v1.6/lib/libcrypt-0.9.28.so
Siesta_Flow_v1.6/lib/libutil-0.9.28.so
Siesta_Flow_v1.6/lib/librt-0.9.28.so
Siesta_Flow_v1.6/lib/ld-uClibc-0.9.28.so
Siesta_Flow_v1.6/lib/libz.so.1.2.3
Siesta_Flow_v1.6/lib/libdl-0.9.28.so
Siesta_Flow_v1.6/lib/libresolv-0.9.28.so
Siesta_Flow_v1.6/lib/libpthread-0.9.28.so
Siesta_Flow_v1.6/lib/libuClibc-0.9.28.so
Siesta_Flow_v1.6/lib/libm-0.9.28.so
Siesta_Flow_v1.6/lib/libnsl-0.9.28.so

Pure Siesta Flow #6

$ find Siesta_Flow_v1.6/bin/ -not -type l -not -type d
Siesta_Flow_v1.6/bin/busybox
Siesta_Flow_v1.6/bin/gpio_intr_setup.sh
Siesta_Flow_v1.6/bin/conwy.app.elf
Siesta_Flow_v1.6/bin/reflash_setup.sh
Siesta_Flow_v1.6/bin/wifi_remove.sh
Siesta_Flow_v1.6/bin/systemd
Siesta_Flow_v1.6/bin/eth_setup.sh
Siesta_Flow_v1.6/bin/vivaldi_flash.app.elf
Siesta_Flow_v1.6/bin/rotaryencoder_setup.sh
Siesta_Flow_v1.6/bin/wifi_setup.sh
Siesta_Flow_v1.6/bin/recho
Siesta_Flow_v1.6/bin/eth_remove.sh
Siesta_Flow_v1.6/bin/vivaldi_wifiupgrade.app.elf
Siesta_Flow_v1.6/bin/computereal

$ strings Siesta_Flow_v1.6/bin/busybox | grep -E "BusyBox v[0-9]\.[0-9]{1,2}\.[0-9]"
BusyBox v1.2.1 (00:00) multi-call binary
BusyBox v1.2.1 (00:00)

BusyBox 1.2.1
http://www.busybox.net/downloads/busybox-1.2.1.tar.bz2

Wednesday, February 9, 2011

Pure Siesta Flow #5

$ hd Siesta_Flow_v1.6.dfu | grep hsqs
00123b70 68 73 71 73 a2 01 00 00 00 00 00 00 00 00 00 00 |hsqs¢...........|

$ hexdump -s $((0x00123b70+62)) -n 4 -e '1/1 "%02X"' Siesta_Flow_v1.6.dfu; echo
00460727

$ echo $((0x270746))
2557766

$ dd if=Siesta_Flow_v1.6.dfu bs=1 skip=$((0x00123b70)) count=66 2> /dev/null | file -
/dev/stdin: Squashfs filesystem, little endian, version 3.0, 2557766 bytes, 418 inodes, blocksize: 65536 bytes, created: Mon Jan 1 01:00:00 2001

$ echo "2557766 / 65536" | bc -l
39.02841186523437500000

$ echo $((65536 * 40))
2621440

$ dd if=Siesta_Flow_v1.6.dfu of=Siesta_Flow_v1.6.sqsh ibs=1 skip=$((0x00123b70)) count=2621440
2621440+0 records in
5120+0 records out
2621440 bytes (2.6 MB) copied, 0.907937 s, 2.9 MB/s

$ unsquashfs -s Siesta_Flow_v1.6.sqsh
Found a valid little endian SQUASHFS 3:0 superblock on Siesta_Flow_v1.6.sqsh.
Creation or last append time Mon Jan 1 01:00:00 2001
Filesystem size 2497.82 Kbytes (2.44 Mbytes)
Block size 65536
Filesystem is not exportable via NFS
Inodes are compressed
Data is compressed
Fragments are compressed
Check data is not present in the filesystem
Fragments are present in the filesystem
Always_use_fragments option is not specified
Duplicates are removed
Number of fragments 13
Number of inodes 418
Number of uids 2
Number of gids 1

$ sudo unsquashfs -d Siesta_Flow_v1.6 Siesta_Flow_v1.6.sqsh
Parallel unsquashfs: Using 4 processors
380 inodes (461 blocks) to write

[=============================================================================================================|] 461/461 100%
created 85 files
created 38 directories
created 94 symlinks
created 201 devices
created 0 fifos

Tuesday, February 8, 2011

Pure Siesta Flow #4

$ du -b Siesta_Flow_v1.6.dfu
3906160 Siesta_Flow_v1.6.dfu

$ du -b Siesta_Flow_v2.6.dfu
3906160 Siesta_Flow_v2.6.dfu

$ hd -s $((3906160-256)) Siesta_Flow_v1.6.dfu > end-1.6.txt
$ hd -s $((3906160-256)) Siesta_Flow_v2.6.dfu > end-2.6.txt

$ diff -s end-1.6.txt end-2.6.txt
3c3
< 003b9a60 00 00 41 01 9a 14 00 01 55 46 44 10 66 fb 84 a7 |..A.....UFD.fû.§|
---
> 003b9a60 00 00 58 01 9a 14 00 01 55 46 44 10 43 03 d9 42 |..X.....UFD.C.ÙB|

Pure Siesta Flow #3

$ hd -n 256 Siesta_Flow_v1.6.dfu > start-1.6.txt
$ hd -n 256 Siesta_Flow_v2.6.dfu > start-2.6.txt

$ diff -s start-1.6.txt start-2.6.txt
Files start-1.6.txt and start-2.6.txt are identical

$ cat start-1.6.txt
00000000 4e 56 53 31 80 10 00 00 80 0f 04 00 00 00 00 00 |NVS1............|
00000010 4c 44 52 53 00 20 04 00 a0 45 02 00 00 00 00 00 |LDRS. .. E......|
00000020 4c 44 4c 4b 20 66 06 00 e0 23 00 00 00 00 00 00 |LDLK f..à#......|
00000030 4c 44 4c 5a c0 8a 06 00 de 0a 08 00 00 00 00 00 |LDLZÀ...Þ.......|
00000040 4c 4b 47 5a 30 97 0e 00 73 08 0a 00 00 00 00 00 |LKGZ0...s.......|
00000050 53 51 46 53 10 a1 18 00 00 10 27 00 00 00 00 00 |SQFS.¡....'.....|
00000060 46 52 45 45 10 b1 3f 00 f0 4e 02 00 00 00 00 00 |FREE.±?.ðN......|
00000070 ff ff ff ff 00 00 00 00 00 00 00 00 80 00 67 e7 |ÿÿÿÿ..........gç|
00000080 05 00 10 00 00 6c 0c 00 90 68 0c 00 6e 01 19 e0 |.....l...h..n..à|
00000090 05 80 6e 01 02 00 00 00 bc 00 00 02 01 00 00 00 |..n.....Œ.......|
000000a0 02 00 00 00 28 80 02 02 02 00 00 00 02 00 00 00 |....(...........|
000000b0 0c 80 02 02 d9 ce 00 00 02 00 00 00 64 00 00 02 |....ÙÎ......d...|
000000c0 16 44 03 00 00 00 00 00 c8 00 00 00 02 00 00 00 |.D......È.......|
000000d0 64 00 00 02 16 44 04 00 00 00 00 00 c8 00 00 00 |d....D......È...|
000000e0 02 00 00 00 64 00 00 02 16 44 04 80 02 00 00 00 |....d....D......|
000000f0 10 80 02 02 92 33 06 00 02 00 00 00 14 80 02 02 |.....3..........|
00000100

Pure Siesta Flow #2

$ strace -e trace=open wine ./Siesta_Flow_v1.6.exe
...
open("/home/fwhacking/.wine/dosdevices/c:/windows/temp/pft303.tmp", O_RDONLY|O_LARGEFILE|O_DIRECTORY) = 16
...

$ cp /home/fwhacking/.wine/dosdevices/c:/windows/temp/pft303.tmp/Siesta_Flow_v1.6.dfu /home/fwhacking/siesta_flow/

$ strace -e trace=open wine ./Siesta_Flow_v2.6.exe
...
open("/home/fwhacking/.wine/dosdevices/c:/windows/temp/pft2e7.tmp", O_RDONLY|O_LARGEFILE|O_DIRECTORY) = 15
...

$ cp /home/fwhacking/.wine/dosdevices/c\:/windows/temp/pft2e7.tmp/Siesta_Flow_v2.6.dfu /home/fwhacking/siesta_flow/

Pure Siesta Flow #1