3 ######################################################################
5 # Open \______ \ ____ ____ | | _\_ |__ _______ ___
6 # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
7 # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
8 # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
11 # * Script to unpack a Samsung YP-R0 firmware file (R0.ROM) */
12 ######################################################################
14 # The file was originally called MuonDecrypt.sh
16 # I'm not sure about the original author of this file, as it wasn't included in Samsung package.
17 # But I guess it was done by JeanLouis, an Italian user of the Hardware Upgrade Forum. If needed, we should search throug old posts for that...
25 if [ $# -lt 1 ] ||
[ $# -gt 2 ]; then
26 echo "Usage $0 <rom file> [out dir]"
34 MBOOT
="$DIR/MBoot.bin"
35 MBOOT_TMP
="${TMP_DIR:-$DIR}/MBoot.tmp"
37 CRAMFS
="$DIR/cramfs-fsl.rom"
38 SYSDATA
="$DIR/SYSDATA.bin"
39 MD5SUMS
="$DIR/MD5SUMS"
40 TMP
="${TMP_DIR:-$DIR}/_$$.tmp"
43 if [ ! -f .
/extract_section
]; then
44 echo "Couldn't find extract_section binary (try 'make')"
48 if [ ! -f .
/MuonEncrypt
]; then
49 echo "Couldn't find MuonEncrypt binary (try 'make')"
55 if [ ! -w $DIR ]; then
56 echo "Target dir not writable"
61 START
=$
(expr $START - $2)
62 echo "Extracting $1..."
63 .
/extract_section
$ROM $TMP $START $2
65 .
/MuonEncrypt
$TMP > $1
68 size
=( `head -n 9 $ROM | tail -n 4 | while read LINE; do echo $LINE | cut -d\( -f 2 | cut -d\) -f 1; done`)
69 checksum
=( `head -n 9 $ROM | tail -n 4 | while read LINE; do echo $LINE | cut -d\( -f 3 | cut -d\) -f 1; done`)
71 echo "${checksum[0]} $MBOOT" > $MD5SUMS
72 echo "${checksum[1]} $LINUX" >> $MD5SUMS
73 echo "${checksum[2]} $CRAMFS" >> $MD5SUMS
74 echo "${checksum[3]} $SYSDATA" >> $MD5SUMS
76 START
=`stat -c%s $ROM`
78 ExtractAndDecrypt
$SYSDATA ${size[3]}
79 ExtractAndDecrypt
$CRAMFS ${size[2]}
80 ExtractAndDecrypt
$LINUX ${size[1]}
81 ExtractAndDecrypt
$MBOOT_TMP ${size[0]}
84 echo "Create $MBOOT..."
85 dd if=$MBOOT_TMP of
=$MBOOT bs
=96 count
=1 2>/dev
/null
86 dd if=$MBOOT_TMP of
=$MBOOT bs
=1088 skip
=1 seek
=1 2>/dev
/null
89 echo "Check integrity:"