#!/bin/bash
##########################################################################
##
## LG Spectrum ICS root and unlocked bootloader
## Linux/OSX version
##
## ICS root by jcase
##
## One-Click & CWM by PlayfulGod
##
## bootloader by Neph, jcase, death2all110
##
## kernel by tdm
##
## Copyright (c) 2012 Spectrumhackers
##
##########################################################################
echo off
clear
platform=`uname`
if [ $(uname -p) = 'powerpc' ]; then
echo "[-] PowerPC is not supported."
exit 1
fi
if [ "$platform" = 'Darwin' ]; then
adb="Files/./adb.osx"
version="OSX"
else
adb="Files/./adb"
version="Linux"
fi
chmod +x $adb
which adb > /dev/null 2>&1
if [ $? -eq 0 ]; then
adb="Files/./adb"
fi
echo "[*] Unlocked Bootloader, root, and CWM"
echo "[*] for the LG Spectrum 4G ($version version)"
echo "[*] One click and CWM by PlayfulGod"
echo "[*] Exploit found by jcase"
echo "[*] Unlock method discovered by Neph,"
echo "[*] jcase, and death2all110"
echo "[*]"
echo "[*] Before continuing, ensure USB debugging is enabled,"
echo "[*] that your phone is connected via USB,"
echo "[*] and in Internet Connection mode."
echo "[*]"
echo "[*] Press enter to begin..."
read -n 1 -s
echo "[*]"
echo "[*] Waiting for device..."
$adb kill-server
$adb wait-for-device
echo "[*] Device found"
$adb shell "rm /data/vpnch/vpnc_starter_lock && ln -s /data/local.prop /data/vpnch/vpnc_starter_lock"
echo "[*] Rebooting..."
$adb reboot
echo "[*] Waiting for reboot..."
$adb wait-for-device
$adb shell "rm /data/vpnch/vpnc_starter_lock"
$adb shell "echo 'ro.kernel.qemu=1' > /data/local.prop"
echo "[*] Rebooting again..."
$adb reboot
echo "[*] Waiting for reboot..."
$adb wait-for-device
# Install the goods
echo "[*] Installing root tools... "
$adb shell "mount -o remount,rw /system"
$adb push Files/su /system/xbin/su
$adb shell "chmod 6755 /system/xbin/su"
$adb shell "ln -s /system/xbin/su /system/bin/su"
$adb push Files/Superuser.apk /system/app/Superuser.apk
$adb push Files/busybox /system/xbin/busybox
$adb shell "chmod 755 /system/xbin/busybox"
$adb shell "/system/xbin/busybox --install /system/xbin"
# Push files
echo "[*] Installing Bootloader and CWM"
$adb push images/cwmrecovery.img /data/local/tmp/cwmrecovery.img
$adb push images/mmcblk0p2.img /data/local/tmp/mmcblk0p2.img
$adb push images/mmcblk0p3.img /data/local/tmp/mmcblk0p3.img
$adb push images/mmcblk0p5.img /data/local/tmp/mmcblk0p5.img
$adb push images/mmcblk0p6.img /data/local/tmp/mmcblk0p6.img
$adb push images/mmcblk0p7.img /data/local/tmp/mmcblk0p7.img
$adb push images/mmcblk0p9.img /data/local/tmp/mmcblk0p9.img
$adb push images/boot_nowallpaper.img /data/local/tmp/boot_nowallpaper.img
## Flash boot chain
# p7
# check md5sum
if [ `$adb shell busybox md5sum /data/local/tmp/mmcblk0p7.img | busybox cut -d ' ' -f 1` != 528f925fcc6cb66d16260a6ac5410dc2 ]
then
echo "PROBLEM! MD5SUM of download and actual file do not match! Danger!"
exit 3
fi
$adb shell "dd if=/data/local/tmp/mmcblk0p7.img of=/dev/block/mmcblk0p7 bs=4096"
# CWM Recovery
# check md5sum
if [ `$adb shell busybox md5sum /data/local/tmp/cwmrecovery.img | busybox cut -d ' ' -f 1` != 44a7e770d4decd7a44e6c3c23f1b928d ]
then
echo "PROBLEM! MD5SUM of download and actual file do not match! Danger!"
exit 3
fi
$adb shell "dd if=/data/local/tmp/cwmrecovery.img of=/dev/block/mmcblk0p13 bs=4096"
# p2
# check md5sum
if [ `$adb shell busybox md5sum /data/local/tmp/mmcblk0p2.img | busybox cut -d ' ' -f 1` != 8d4575aebfd32c599ef505d9c2d518fb ]
then
echo "PROBLEM! MD5SUM of download and actual file do not match! Danger!"
exit 3
fi
$adb shell "dd if=/data/local/tmp/mmcblk0p2.img of=/dev/block/mmcblk0p2 bs=4096"
# p3
# check md5sum
if [ `$adb shell busybox md5sum /data/local/tmp/mmcblk0p3.img | busybox cut -d ' ' -f 1` != db6c453eb6c69d9273daa97ff02a29a2 ]
then
echo "PROBLEM! MD5SUM of download and actual file do not match! Danger!"
exit 3
fi
$adb shell "dd if=/data/local/tmp/mmcblk0p3.img of=/dev/block/mmcblk0p3 bs=4096"
# p5
# check md5sum
if [ `$adb shell busybox md5sum /data/local/tmp/mmcblk0p5.img | busybox cut -d ' ' -f 1` != 9b99629290e183c627e46795d352ec87 ]
then
echo "PROBLEM! MD5SUM of download and actual file do not match! Danger!"
exit 3
fi
$adb shell "dd if=/data/local/tmp/mmcblk0p5.img of=/dev/block/mmcblk0p5 bs=4096"
# p6
# check md5sum
if [ `$adb shell busybox md5sum /data/local/tmp/mmcblk0p6.img | busybox cut -d ' ' -f 1` != 664cbefd609c8866b35f51f93a5e2d25 ]
then
echo "PROBLEM! MD5SUM of download and actual file do not match! Danger!"
exit 3
fi
$adb shell "dd if=/data/local/tmp/mmcblk0p6.img of=/dev/block/mmcblk0p6 bs=4096"
# p9
# check md5sum
if [ `$adb shell busybox md5sum /data/local/tmp/mmcblk0p9.img | busybox cut -d ' ' -f 1` != b508eda5aa1eb658b2cf75587276dfda ]
then
echo "PROBLEM! MD5SUM of download and actual file do not match! Danger!"
exit 3
fi
$adb shell "dd if=/data/local/tmp/mmcblk0p9.img of=/dev/block/mmcblk0p9 bs=4096"
# boot_nowallpaper
# check md5sum
if [ `$adb shell busybox md5sum /data/local/tmp/boot_nowallpaper.img | busybox cut -d ' ' -f 1` != 5e47b4574a752bfcc497bac660098cf6 ]
then
echo "PROBLEM! MD5SUM of download and actual file do not match! Danger!"
exit 3
fi
$adb shell "dd if=/data/local/tmp/boot_nowallpaper.img of=/dev/block/mmcblk0p8 bs=4096"
echo "[*] Removing Trash"
$adb shell "rm /data/local/tmp/cwmrecovery.img"
$adb shell "rm /data/local/tmp/mmcblk0p2.img"
$adb shell "rm /data/local/tmp/mmcblk0p3.img"
$adb shell "rm /data/local/tmp/mmcblk0p5.img"
$adb shell "rm /data/local/tmp/mmcblk0p6.img"
$adb shell "rm /data/local/tmp/mmcblk0p7.img"
$adb shell "rm /data/local/tmp/mmcblk0p9.img"
$adb shell "rm /data/local/tmp/boot_nowallpaper.img"
$adb shell "rm /system/etc/install-recovery.sh"
$adb shell "rm /system/etc/recovery-from-boot.p"
$adb shell "rm /system/etc/fota_post_boot_up.sh"
$adb shell "rm /data/local.prop"
$adb shell "rm /data/gpscfg/*"
$adb shell "chmod 771 /data/"
echo "[*] Finished!!"
echo
echo "[*] Rebooting!!"
$adb reboot
$adb wait-for-device
$adb kill-server
echo "[*] Press any key to exit."
read -n1 -r
exit