<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.theiphonewiki.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jan0</id>
	<title>The iPhone Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.theiphonewiki.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jan0"/>
	<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/wiki/Special:Contributions/Jan0"/>
	<updated>2026-05-17T15:59:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=AES_Keys&amp;diff=24708</id>
		<title>AES Keys</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=AES_Keys&amp;diff=24708"/>
		<updated>2012-03-02T09:28:57Z</updated>

		<summary type="html">&lt;p&gt;Jan0: derived keys&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{wp|System-on-a-chip|SoC}} in each device have an {{wp|Advanced_Encryption_Standard|AES}} coprocessor with the [[GID-key]] and [[UID-key]] built in.&lt;br /&gt;
&lt;br /&gt;
==Running The Engine==&lt;br /&gt;
Currently, there are several ways to run the hardware AES engine:&lt;br /&gt;
* Patch [[iBoot (Bootloader)|iBoot]] to jump to aes_decrypt.&lt;br /&gt;
* Use [http://github.com/planetbeing/iphonelinux/tree/master OpenIBoot].&lt;br /&gt;
* Use the crypto bundle provided in [[XPwn]] to utilize it via userland. This method requires a kernel patch.&lt;br /&gt;
* Use [[Greenpois0n (toolkit)|Greenpois0n]] console. &lt;br /&gt;
&lt;br /&gt;
If you want to decrypt [[IMG3 File Format|IMG3]] files you need to use this. The [[GID-key]] currently has not been extracted from the phone, so the only way to use it is on the phone itself.&lt;br /&gt;
&lt;br /&gt;
See [[Grabbing IMG3 Keys]] for an [[iBoot (Bootloader)|iBoot]] patch.&lt;br /&gt;
&lt;br /&gt;
==Derived keys==&lt;br /&gt;
&lt;br /&gt;
Some derived keys are computed by the IOAESAccelerator kernel service at boot. These keys are generated by encrypting static values either with the UID key (0x7D0 identifier) or the GID key (0x3E8 identifier). The values defined in the iPhone 4 5.0 kernel are :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__text:807E3000 keys_to_compute DCD 0x835,0x7D0,0x1010101,0x1010101,0x1010101,0x1010101&lt;br /&gt;
__text:807E3018                 DCD 0x899,0x7D0,0xB5FCE8D1,0x8DBF3739,0xD14CC7EF,0xB0D4F1D0&lt;br /&gt;
__text:807E3030                 DCD 0x89B,0x7D0,0x67993E18,0x543CB06B,0xF568A46F,0x49BD0C1C&lt;br /&gt;
__text:807E3048                 DCD 0x89A,0x7D0,0x335B1FDB,0x1C5F6C60,0x66AA3419,0x61069C58&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key 0x835==&lt;br /&gt;
&lt;br /&gt;
Generated by encrypting 01010101010101010101010101010101 with the [[UID-key]]. Used for data protection.&lt;br /&gt;
&lt;br /&gt;
==Key 0x837==&lt;br /&gt;
Generated by encrypting 345A2D6C5050D058780DA431F0710E15 with the [[S5L8900]] [[GID-key]], resulting in 188458A6D15034DFE386F23B61D43774.&lt;br /&gt;
&lt;br /&gt;
It is used as the encryption key for [[S5L File Formats#IMG2|IMG2 files]]. With the introduction of [[IMG3 File Format|IMG3]] in iOS 2.0, [[KBAG]]s are now used instead of the 0x837 key. Because iOS versions 1.x were used only on the [[M68ap|iPhone]] and [[N45ap|iPod touch]] (both use the [[S5L8900]]) the encrypted values for other processors don't matter.&lt;br /&gt;
==Key 0x89A==&lt;br /&gt;
For A4 devices:&lt;br /&gt;
Generated by encrypting DB1F5B33606C5F1C1934AA66589C0661 with the [[UID-key]], getting a device-specific key.&lt;br /&gt;
&lt;br /&gt;
It is used to encrypt the [[SHSH]] blobs on the device.&lt;br /&gt;
&lt;br /&gt;
==Key 0x89B==&lt;br /&gt;
&lt;br /&gt;
Generated by encrypting 183E99676BB03C546FA468F51C0CBD49 with the [[UID-key]]. It is used the encrypt the data partition key.&lt;br /&gt;
&lt;br /&gt;
==Key 0x899==&lt;br /&gt;
&lt;br /&gt;
Generated by encrypting D1E8FCB53937BF8DEFC74CD1D0F1D4B0 with the [[UID-key]]. Usage unknown.&lt;br /&gt;
&lt;br /&gt;
==Using [[Greenpois0n (toolkit)|greenpois0n]] to get the keys==&lt;br /&gt;
* Run steps 1 thru 5 from [[PwnStrap]]&lt;br /&gt;
* Use 'xpwntool file.img3 /dev/null' to extract the KBAG hex string from ''file.img3''&lt;br /&gt;
* Start greenpois0n console: irecovery -s&lt;br /&gt;
* Execute 'go aes dec _KBAG_STRING_' in irecovery console&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
[http://wikee.iphwn.org/s5l8900:encryption_keys Dev Team wiki]&lt;/div&gt;</summary>
		<author><name>Jan0</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=System_Log&amp;diff=20693</id>
		<title>System Log</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=System_Log&amp;diff=20693"/>
		<updated>2011-08-28T10:32:25Z</updated>

		<summary type="html">&lt;p&gt;Jan0: added command line syslog trick&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==bgm's trick for enabling system log==&lt;br /&gt;
# In the shell, do: echo &amp;quot;*.* /var/log/syslog&amp;quot; &amp;gt; /etc/syslog.conf &lt;br /&gt;
# Add the following tags to /System/Library/LaunchDaemons/com.apple.syslogd.plist after the tag &amp;lt;string&amp;gt;/usr/sbin/syslogd&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;string&amp;gt;-bsd_out&amp;lt;/string&amp;gt;&lt;br /&gt;
 &amp;lt;string&amp;gt;1&amp;lt;/string&amp;gt;&lt;br /&gt;
This will tell the Daemon Launcher to call /usr/sbin/syslogd -bsd_out 1, and we have configured it to write all messages to [[:/var/log/syslog]]&lt;br /&gt;
# &amp;quot;reboot &amp;amp; enjoy your kernel and other messages&amp;quot; (bgm)&lt;br /&gt;
&lt;br /&gt;
== Note ==&lt;br /&gt;
The syslog will grow very big quite quickly if you use [[Winterboard.app|Winterboard]]'s debug setting, but the folder [[:/private/var/log]] is on the data partition (music, etc).&amp;lt;br&amp;gt;&lt;br /&gt;
If you keep your device full of music, be careful you don't fill the partition. Unix systems tend to break when they &lt;br /&gt;
cant write to the syslog. Keep an eye on it or employ some log rotation.&lt;br /&gt;
&lt;br /&gt;
To disable, enter [[Terminal.app]] and run:&lt;br /&gt;
 rm /var/log/syslog;&lt;br /&gt;
 mknod /var/log/syslog c 3 2&lt;br /&gt;
This will delete (&amp;lt;tt&amp;gt;rm&amp;lt;/tt&amp;gt;) the file and create a [[:/dev/null]]. (&amp;lt;tt&amp;gt;mknod *** c 3 2&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
To reenable, enter [[Terminal.app]] and run:&lt;br /&gt;
 rm /var/log/syslog&lt;br /&gt;
 touch /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
This will delete (&amp;lt;tt&amp;gt;rm&amp;lt;/tt&amp;gt;) the file and and make a blank regular file. (&amp;lt;tt&amp;gt;touch&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== SBSettings Toggle ==&lt;br /&gt;
An SBSettings [http://apt.thebigboss.org/onepackage.php?bundleid=sbsettingssyslogd toggle] for enabling/disabling syslog is available at BigBoss' Cydia repository.  The &amp;lt;tt&amp;gt;syslog &amp;amp;gt; /var/log/syslog&amp;lt;/tt&amp;gt; package from [[User:Saurik|saurik]]'s repo is not a dependency and you must manually install it also.&lt;br /&gt;
&lt;br /&gt;
== Read syslog from command line ==&lt;br /&gt;
&lt;br /&gt;
 apt-get install socat&lt;br /&gt;
 socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock&lt;br /&gt;
&lt;br /&gt;
This gives an interactive shell with the syslog daemon (no need to enable file output). The watch command prints new messages as they arrive.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
* [http://code.google.com/p/iphone-elite/wiki/IphoneSyslogd Google Code]&amp;lt;br /&amp;gt;&lt;br /&gt;
* [http://code.google.com/p/iphone-elite/source/list?path=/wiki/IphoneSyslogd.wiki&amp;amp;start=398 Full History]&lt;/div&gt;</summary>
		<author><name>Jan0</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Incomplete_Codesign_Exploit&amp;diff=19068</id>
		<title>Incomplete Codesign Exploit</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Incomplete_Codesign_Exploit&amp;diff=19068"/>
		<updated>2011-07-10T12:52:30Z</updated>

		<summary type="html">&lt;p&gt;Jan0: added infos for ndrv_setspec &amp;amp; Saffron kickstarts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Incomplete Codesign is a technique introduced by [[User:Comex|Comex]] in the [[Spirit]] jailbreak that allows untethered userland code execution. The idea is to plant a crafted Mach-O binary on the filesystem and have it loaded early during the boot process. This technique must be used in conjunction with another exploit to first plant the binary on the filesystem (like the [[MobileBackup Copy Exploit]] used in Spirit, or one of the DFU mode exploits [[Pwnage 2.0]]/[[Steaks4uce]]/[[Limera1n]]).&lt;br /&gt;
Since executable pages must be signed, the crafted binary will have to abuse the loader or the dynamic linker functionalities to transfer execution to a ROP payload that will use existing (signed) code fragments (gadgets). The endgame is to have the userland code trigger and exploit a kernel vulnerability to achieve the jailbroken state.&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
[[User:Comex|Comex]]&lt;br /&gt;
&lt;br /&gt;
== Interposition exploit ([[Spirit]] &amp;amp; [[Star]])==&lt;br /&gt;
&lt;br /&gt;
The first technique used in the Spirit and Star jailbreaks involves loading a custom shared library (dylib) in the first userland process ([[launchd]]). The library is loaded using the launchd libgmalloc debugging feature that can be enabled by creating the &amp;lt;code&amp;gt;/var/db/.launchd_use_gmalloc&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
if (pid1_magic &amp;amp;&amp;amp; g_use_gmalloc) {&lt;br /&gt;
    if (!getenv(&amp;quot;DYLD_INSERT_LIBRARIES&amp;quot;)) {&lt;br /&gt;
        setenv(&amp;quot;DYLD_INSERT_LIBRARIES&amp;quot;, &amp;quot;/usr/lib/libgmalloc.dylib&amp;quot;, 1);&lt;br /&gt;
        setenv(&amp;quot;MALLOC_STRICT_SIZE&amp;quot;, &amp;quot;1&amp;quot;, 1);&lt;br /&gt;
        execv(argv[0], argv);&lt;br /&gt;
    } else {&lt;br /&gt;
        unsetenv(&amp;quot;DYLD_INSERT_LIBRARIES&amp;quot;);	//this call is hijacked through interposition&lt;br /&gt;
        unsetenv(&amp;quot;MALLOC_STRICT_SIZE&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The crafted libgmalloc.dylib does not contains any executable segments, but instead uses the dyld interposition feature to redirect several exported functions to code fragments in the launchd binary. The interposed functions and their replacement addresses are chosen to force launchd to perform a stack pivot, and have SP pointing to a data segment in the shared library, allowing ROP code execution. The following functions are interposed to allow the stack pivot : &amp;lt;code&amp;gt;_unsetenv, _launch_data_new_errno, _setrlimit, __exit, _audit_token_to_au32, _launch_data_unpack, _launch_data_dict_iterate &amp;lt;/code&amp;gt; (a few other functions are also interposed to create some gadgets used by the ROP payload).&lt;br /&gt;
Once launchd has restarted itself with the crafted libgmalloc.dylib, the unsetenv function call will execute the following &amp;quot;interposition gadgets&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LDR     R0, =aDyld_insert_li ; &amp;quot;DYLD_INSERT_LIBRARIES&amp;quot;&lt;br /&gt;
BL      _unsetenv&lt;br /&gt;
LDR     R0, [R0]			#R0 = 0x444c5944 = &amp;quot;DLYD&amp;quot; = little endian &amp;quot;DYLD&amp;quot; &lt;br /&gt;
BL      _launch_data_new_errno&lt;br /&gt;
MOV     R0, R0, LSR#2			#R0 = R0 / 4	&lt;br /&gt;
BL      _setrlimit&lt;br /&gt;
ADD     R0, R0, #3			#R0 = R0 + 3&lt;br /&gt;
BL      __exit&lt;br /&gt;
LDMIA   R0, {R0-R3}			#R0 = 0x11131654 (__heap section in libgmalloc.dylib =[0,0, 0x1113000C, STACK_PIVOT_GADGET)&lt;br /&gt;
BL      _audit_token_to_au32&lt;br /&gt;
STR     R2, [SP+4]			#R2 = 0x1113000C&lt;br /&gt;
BL      _launch_data_unpack&lt;br /&gt;
STR     R3, [SP+8]			#R3 = STACK_PIVOT_GADGET &lt;br /&gt;
BL      _launch_data_dict_iterate&lt;br /&gt;
LDMFD   SP!, {R4,R7,PC}		        #=&amp;gt; R7 = 0x1113000C, PC = STACK_PIVOT_GADGET&lt;br /&gt;
&lt;br /&gt;
STACK_PIVOT_GADGET:&lt;br /&gt;
SUB     SP, R7, #0xC			#SP = 0x11130000 (start of ROP stack in __heap section)&lt;br /&gt;
LDMFD   SP!, {R4-R7,PC}		        #ROP starts here&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ROP payloads in Spirit and Star exploit respectively the BPF and IOSurface kernel vulnerabilities in order to patch the kernel, and then restart launchd to continue the normal boot process.&lt;br /&gt;
&lt;br /&gt;
In iOS 4.1, dyld does a range check on the interposition targets to make sure that a dylib only redirects symbols to its own code segments, preventing the use of this feature to control code flow (since we cannot have executable code segments without a valid signature).&lt;br /&gt;
&lt;br /&gt;
== Initializers exploit (Packet Filter/HFS Legacy Volume Name)==&lt;br /&gt;
For the iOS 4.1 [[Packet Filter Kernel Exploit]], comex introduced another technique to get code execution, still using libgmalloc.dylib but in a less convoluted manner.&lt;br /&gt;
A Mach-O binary can declare an initializers section holding function pointers to be called upon loading (just like the ELF constructors section). This feature allows immediate control of the instruction pointer. Initializers calls are made in &amp;lt;code&amp;gt;ImageLoaderMachO::doModInitFunctions()&amp;lt;/code&amp;gt; (note that the iOS version of dyld is slightly different than the open-source version). The following code shows this function on iOS 4.1 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__text:2FE0BFE6                 LDR.W           R6, [R11,R5,LSL#2]  ; Initializer func = inits[i];&lt;br /&gt;
__text:2FE0BFEA                 CBZ             R3, loc_2FE0BFFA&lt;br /&gt;
__text:2FE0BFEC                 LDR             R3, [SP,#0x30+var_2C]&lt;br /&gt;
__text:2FE0BFEE                 LDR             R0, =(aDyldCallingIni - 0x2FE0BFF6)&lt;br /&gt;
__text:2FE0BFF0                 MOV             R1, R6&lt;br /&gt;
__text:2FE0BFF2                 ADD             R0, PC  ; &amp;quot;dyld: calling initializer function %p i&amp;quot;...&lt;br /&gt;
__text:2FE0BFF4                 LDR             R2, [R3,#4]&lt;br /&gt;
__text:2FE0BFF6                 BL              __ZN4dyld3logEPKcz ; dyld::log(char  const*,...)&lt;br /&gt;
__text:2FE0BFFA&lt;br /&gt;
__text:2FE0BFFA loc_2FE0BFFA&lt;br /&gt;
__text:2FE0BFFA                 ADD.W           R12, R4, #0x58&lt;br /&gt;
__text:2FE0BFFE                 LDR             R0, [R4,#0x44]&lt;br /&gt;
__text:2FE0C000                 LDR             R1, [R4,#0x48]&lt;br /&gt;
__text:2FE0C002                 LDR             R2, [R4,#0x4C]&lt;br /&gt;
__text:2FE0C004                 LDR             R3, [R4,#0x50]&lt;br /&gt;
__text:2FE0C006                 STR.W           R12, [SP]&lt;br /&gt;
__text:2FE0C00A                 BLX             R6  ; func(context.argc, context.argv, context.envp, context.apple, &amp;amp;context.programVars)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since R11 points to the start of the section containing the initializers function pointers (&amp;lt;code&amp;gt;inits&amp;lt;/code&amp;gt;), comex uses the following uncommon gadget to perform the stack pivot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x499ba000        LDMIBMI R11, {SP, PC}	#increments R11 by 4, then pops SP and PC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unlike Spirit's and Star's kernel exploits, the [[Packet Filter Kernel Exploit]] is not done in the ROP payload. Instead, the ROP payload is shorter and performs the following calls to run the exploit in an unsigned binary :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int zero = 0;&lt;br /&gt;
char *params[] = {&amp;quot;/usr/lib/pf2&amp;quot;, NULL};&lt;br /&gt;
char *env[] = {NULL};&lt;br /&gt;
/* these 3 function calls are done as ROP */&lt;br /&gt;
sysctlbyname(&amp;quot;security.mac.proc_enforce&amp;quot;, NULL, 0, &amp;amp;zero, sizeof(zero));   &lt;br /&gt;
sysctlbyname(&amp;quot;security.mac.vnode_enforce&amp;quot;, NULL, 0, &amp;amp;zero, sizeof(zero));   &lt;br /&gt;
execve(&amp;quot;/usr/lib/pf2&amp;quot;, params, env);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the &amp;lt;code&amp;gt;security.mac.proc_enforce&amp;lt;/code&amp;gt;  and &amp;lt;code&amp;gt;security.mac.vnode_enforce&amp;lt;/code&amp;gt; variables to 0 allows running unsigned binaries, with some side effects (see [http://www.saurik.com/id/8]).  The &amp;lt;code&amp;gt;vnode_enforce&amp;lt;/code&amp;gt; is reset to 0 as soon as the kernel exploit completes. In iOS 4.3 beta, those variables are now read only. &lt;br /&gt;
&lt;br /&gt;
Starting with iOS 4.2.1, dyld does a range check on the initializers so that the previous trick does not work (look for the &amp;lt;code&amp;gt;&amp;quot;dyld: ignoring out of bounds initializer function %p in %s&amp;quot;&amp;lt;/code&amp;gt; string). However, for some unknown reason this check is only made if &amp;lt;code&amp;gt;ImageLoaderMachO::isDylib()&amp;lt;/code&amp;gt; returns true. Hence, in [[Greenpois0n_(jailbreak)|Greenpois0n]] RC5, a crafted executable with an initializers section was used to replace the launchd binary and kickstart [[User:pod2g|pod2g]]'s [[HFS Legacy Volume Name Stack Buffer Overflow]] kernel exploit. The original launchd binary is renamed to punchd and is run as soon as the kernel exploit is done.&lt;br /&gt;
&lt;br /&gt;
In iOS 4.2.1 dyld the &amp;lt;code&amp;gt;inits&amp;lt;/code&amp;gt; pointer is not stored in R11 anymore but at [SP+4] :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__text:2FE0C03C loc_2FE0C03C&lt;br /&gt;
__text:2FE0C03C                 LDR             R3, [SP,#4]&lt;br /&gt;
__text:2FE0C03E                 MOV             R0, R6&lt;br /&gt;
__text:2FE0C040                 LDR.W           R4, [R3,R8,LSL#2] ;Initializer func = inits[i];&lt;br /&gt;
__text:2FE0C044                 LDR             R3, [R6]&lt;br /&gt;
__text:2FE0C046                 LDR             R3, [R3,#0x78]&lt;br /&gt;
__text:2FE0C048                 BLX             R3	; ImageLoaderMachO::isDylib(void)&lt;br /&gt;
__text:2FE0C04A                 CMP             R0, #0&lt;br /&gt;
__text:2FE0C04C                 BEQ             loc_2FE0C0EE ;bypass range check&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
__text:2FE0C088 loc_2FE0C088&lt;br /&gt;
__text:2FE0C088                 ADD.W           R12, R5, #0x5C&lt;br /&gt;
__text:2FE0C08C                 LDR             R0, [R5,#0x48]&lt;br /&gt;
__text:2FE0C08E                 LDR             R1, [R5,#0x4C]&lt;br /&gt;
__text:2FE0C090                 LDR             R2, [R5,#0x50]&lt;br /&gt;
__text:2FE0C092                 LDR             R3, [R5,#0x54]&lt;br /&gt;
__text:2FE0C094                 STR.W           R12, [SP] ; &amp;amp;context.programVars-&amp;gt;mh&lt;br /&gt;
__text:2FE0C098                 BLX             R4 ; func(context.argc, context.argv, context.envp, context.apple, &amp;amp;context.programVars)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The stack pivot is done using two initializers : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POP {R6,R7} ; BX LR             #R6=&amp;amp;context.programVars-&amp;gt;mh, R7=inits&lt;br /&gt;
SUB SP, R7, #0 ; POP {R7,PC}    #do the stack pivot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Since the first initializer clobbers R6 and shuffles the local variables by incrementing SP by 8, some conditions must be met for dyld to reach the second initializer call without crashing :&lt;br /&gt;
* the second initializer pointer has to be stored at offset 0x1004 (segPreferredLoadAddress(0) + 4)&lt;br /&gt;
* a pointer to a return 0 gadget must be present at offset 0x78 in the Mach-O file (context.programVars-&amp;gt;mh[0x78])&lt;br /&gt;
&lt;br /&gt;
== [[ndrv_setspec() Integer Overflow]] kickstart ==&lt;br /&gt;
&lt;br /&gt;
Starting with iOS 4.3, gadget addresses cannot be hardcoded because of ASLR. [[i0n1c]]'s launchd binary uses the relocation functionality of dyld to fix those adresses dynamically. This can be seen by running the binary with the &amp;lt;code&amp;gt;DYLD_PRINT_BINDINGS&amp;lt;/code&amp;gt; environment variable set. The &amp;quot;compressed&amp;quot; format of relocations is used (see the &amp;lt;code&amp;gt;LC_DYLD_INFO_ONLY&amp;lt;/code&amp;gt; command and the &amp;lt;code&amp;gt;ImageLoaderMachOCompressed::eachBind&amp;lt;/code&amp;gt; function in dyld). The binary also contains rebasing information but is not marked as position independent (?).&lt;br /&gt;
&lt;br /&gt;
The section &amp;lt;code&amp;gt;__DATA:__b&amp;lt;/code&amp;gt; contains one initializer that points to the &amp;lt;code&amp;gt;dyld::runTerminators&amp;lt;/code&amp;gt; function. This function calls &amp;lt;code&amp;gt;ImageLoaderMachO::doTermination&amp;lt;/code&amp;gt;, that does the same job as &amp;lt;code&amp;gt;doModInitFunctions&amp;lt;/code&amp;gt; but for termination functions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__text:2FE0DEEA loc_2FE0DEEA&lt;br /&gt;
__text:2FE0DEEA                 LDRB.W          R3, [R11,#0x91]&lt;br /&gt;
__text:2FE0DEEE                 LDR.W           R6, [R5,#-4]   ;Terminator func = terms[i-1];&lt;br /&gt;
__text:2FE0DEF2                 CBZ             R3, loc_2FE0DF02&lt;br /&gt;
__text:2FE0DEF4                 LDR             R3, [SP,#0x28+var_28]&lt;br /&gt;
__text:2FE0DEF6                 LDR             R0, =(aDyldCallingTer - 0x2FE0DEFE)&lt;br /&gt;
__text:2FE0DEF8                 MOV             R1, R6&lt;br /&gt;
__text:2FE0DEFA                 ADD             R0, PC  ; &amp;quot;dyld: calling termination function %p i&amp;quot;...&lt;br /&gt;
__text:2FE0DEFC                 LDR             R2, [R3,#4]&lt;br /&gt;
__text:2FE0DEFE                 BL              __ZN4dyld3logEPKcz ; dyld::log(char  const*,...)&lt;br /&gt;
__text:2FE0DF02&lt;br /&gt;
__text:2FE0DF02 loc_2FE0DF02&lt;br /&gt;
__text:2FE0DF02                 BLX             R6   ;func() &lt;br /&gt;
__text:2FE0DF04                 SUBS            R4, #1&lt;br /&gt;
__text:2FE0DF06                 SUBS            R5, #4&lt;br /&gt;
__text:2FE0DF08&lt;br /&gt;
__text:2FE0DF08 loc_2FE0DF08&lt;br /&gt;
__text:2FE0DF08                 CMP             R4, #0&lt;br /&gt;
__text:2FE0DF0A                 BNE             loc_2FE0DEEA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here R5 points directly to the to the array of terminators (&amp;lt;code&amp;gt;terms&amp;lt;/code&amp;gt;). The binary contains one termination function (in section &amp;lt;code&amp;gt;__DATA:__c&amp;lt;/code&amp;gt;) that points to the following gadget which will transfer execution to the ROP payload (in section &amp;lt;code&amp;gt;__DATA:__d&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldm     r5, {r2, r4, r5, r7, r8, r9, r10, r11, r12, sp, pc}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Saffron]] kickstart ==&lt;br /&gt;
&lt;br /&gt;
The [[Saffron]] untether binary also uses relocations. Here, the standard format is used (&amp;lt;code&amp;gt;ARM_RELOC_VANILLA&amp;lt;/code&amp;gt;, not compressed &amp;lt;code&amp;gt;LINKEDIT&amp;lt;/code&amp;gt;). The initializer gadget used simply modifies the R7 register :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
asrs    r7, r3, #13&lt;br /&gt;
bx      lr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When calling an initializer, R3 points to &amp;lt;code&amp;gt;context.apple&amp;lt;/code&amp;gt;, which happens to be the value of the stack pointer set by the &amp;lt;code&amp;gt;LC_UNIXTHREAD&amp;lt;/code&amp;gt; command. Values for this stack pointer and the ROP payload segment base are chosen so that transfer to the ROP payload will happen at the &amp;lt;code&amp;gt;ImageLoaderMachO::doModInitFunctions()&amp;lt;/code&amp;gt; epilog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__text:2FE0C804                 SUB.W           SP, R7, #0x18&lt;br /&gt;
__text:2FE0C808                 POP.W           {R8,R10,R11}&lt;br /&gt;
__text:2FE0C80C                 POP             {R4-R7,PC}&lt;br /&gt;
__text:2FE0C80C ; End of function ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext  const&amp;amp;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
r3 = 0x10031000 (ARM_THREAD_STATE[sp])&lt;br /&gt;
r7 = r3 &amp;gt;&amp;gt; 13 = 0x8018&lt;br /&gt;
sp = r7 - 0x18 = 0x8000 (start of __ROP segment)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sources for information ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/comex/spirit/blob/master/igor/one.py&lt;br /&gt;
* https://github.com/comex/spirit/blob/master/igor/configdata.py&lt;br /&gt;
* http://books.google.fr/books?id=K8vUkpOXhN4C&amp;amp;lpg=PA73&amp;amp;ots=OJqiYTUwVD&amp;amp;dq=dyld%20interpose&amp;amp;pg=PA73#v=onepage&amp;amp;q&amp;amp;f=false&lt;br /&gt;
* http://launchd.macosforge.org/trac/browser/trunk/launchd/src/launchd.c&lt;br /&gt;
* http://blogs.embarcadero.com/eboling/2010/01/29/5639/&lt;br /&gt;
* http://opensource.apple.com/source/dyld/dyld-132.13/src/ImageLoaderMachO.cpp&lt;br /&gt;
* https://github.com/comex/starn/blob/43989121a0f74639cf8cc3aa57514e6ef0c97dbd/goo/one.py&lt;br /&gt;
* https://github.com/comex/starn/blob/43989121a0f74639cf8cc3aa57514e6ef0c97dbd/config/configdata.py&lt;br /&gt;
* http://pastie.org/572025&lt;br /&gt;
* http://opensource.apple.com/source/dyld/dyld-132.13/src/ImageLoaderMachOCompressed.cpp&lt;br /&gt;
* http://www.opensource.apple.com/source/xnu/xnu-1504.9.37/EXTERNAL_HEADERS/mach-o/reloc.h&lt;br /&gt;
[[Category:Exploits]]&lt;/div&gt;</summary>
		<author><name>Jan0</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Incomplete_Codesign_Exploit&amp;diff=15883</id>
		<title>Incomplete Codesign Exploit</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Incomplete_Codesign_Exploit&amp;diff=15883"/>
		<updated>2011-02-06T12:32:45Z</updated>

		<summary type="html">&lt;p&gt;Jan0: comex is a Mach-o man :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Incomplete Codesign is a technique introduced by [[User:Comex|Comex]] in the [[Spirit]] jailbreak that allows untethered userland code execution. The idea is to plant a crafted Mach-O binary on the filesystem and have it loaded early during the boot process. This technique must be used in conjunction with another exploit to first plant the binary on the filesystem (like the [[MobileBackup Copy Exploit]] used in Spirit, or one of the DFU mode exploits [[Pwnage 2.0]]/[[Steaks4uce]]/[[Limera1n]]).&lt;br /&gt;
Since executable pages must be signed, the crafted binary will have to abuse the loader or the dynamic linker functionalities to transfer execution to a ROP payload that will use existing (signed) code fragments (gadgets). The endgame is to have the userland code trigger and exploit a kernel vulnerability to achieve the jailbroken state.&lt;br /&gt;
&lt;br /&gt;
== Credit ==&lt;br /&gt;
[[User:Comex|Comex]]&lt;br /&gt;
&lt;br /&gt;
== Interposition exploit ([[Spirit]] &amp;amp; [[Star]])==&lt;br /&gt;
&lt;br /&gt;
The first technique used in the Spirit and Star jailbreaks involves loading a custom shared library (dylib) in the first userland process ([[launchd]]). The library is loaded using the launchd libgmalloc debugging feature that can be enabled by creating the &amp;lt;code&amp;gt;/var/db/.launchd_use_gmalloc&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
if (pid1_magic &amp;amp;&amp;amp; g_use_gmalloc) {&lt;br /&gt;
    if (!getenv(&amp;quot;DYLD_INSERT_LIBRARIES&amp;quot;)) {&lt;br /&gt;
        setenv(&amp;quot;DYLD_INSERT_LIBRARIES&amp;quot;, &amp;quot;/usr/lib/libgmalloc.dylib&amp;quot;, 1);&lt;br /&gt;
        setenv(&amp;quot;MALLOC_STRICT_SIZE&amp;quot;, &amp;quot;1&amp;quot;, 1);&lt;br /&gt;
        execv(argv[0], argv);&lt;br /&gt;
    } else {&lt;br /&gt;
        unsetenv(&amp;quot;DYLD_INSERT_LIBRARIES&amp;quot;);	//this call is hijacked through interposition&lt;br /&gt;
        unsetenv(&amp;quot;MALLOC_STRICT_SIZE&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The crafted libgmalloc.dylib does not contains any executable segments, but instead uses the dyld interposition feature to redirect several exported functions to code fragments in the launchd binary. The interposed functions and their replacement addresses are chosen to force launchd to perform a stack pivot, and have SP pointing to a data segment in the shared library, allowing ROP code execution. The following functions are interposed to allow the stack pivot : &amp;lt;code&amp;gt;_unsetenv, _launch_data_new_errno, _setrlimit, __exit, _audit_token_to_au32, _launch_data_unpack, _launch_data_dict_iterate &amp;lt;/code&amp;gt; (a few other functions are also interposed to create some gadgets used by the ROP payload).&lt;br /&gt;
Once launchd has restarted itself with the crafted libgmalloc.dylib, the unsetenv function call will execute the following &amp;quot;interposition gadgets&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LDR     R0, =aDyld_insert_li ; &amp;quot;DYLD_INSERT_LIBRARIES&amp;quot;&lt;br /&gt;
BL      _unsetenv&lt;br /&gt;
LDR     R0, [R0]			#R0 = 0x444c5944 = &amp;quot;DLYD&amp;quot; = little endian &amp;quot;DYLD&amp;quot; &lt;br /&gt;
BL      _launch_data_new_errno&lt;br /&gt;
MOV     R0, R0, LSR#2			#R0 = R0 / 4	&lt;br /&gt;
BL      _setrlimit&lt;br /&gt;
ADD     R0, R0, #3			#R0 = R0 + 3&lt;br /&gt;
BL      __exit&lt;br /&gt;
LDMIA   R0, {R0-R3}			#R0 = 0x11131654 (__heap section in libgmalloc.dylib =[0,0, 0x1113000C, STACK_PIVOT_GADGET)&lt;br /&gt;
BL      _audit_token_to_au32&lt;br /&gt;
STR     R2, [SP+4]			#R2 = 0x1113000C&lt;br /&gt;
BL      _launch_data_unpack&lt;br /&gt;
STR     R3, [SP+8]			#R3 = STACK_PIVOT_GADGET &lt;br /&gt;
BL      _launch_data_dict_iterate&lt;br /&gt;
LDMFD   SP!, {R4,R7,PC}		        #=&amp;gt; R7 = 0x1113000C, PC = STACK_PIVOT_GADGET&lt;br /&gt;
&lt;br /&gt;
STACK_PIVOT_GADGET:&lt;br /&gt;
SUB     SP, R7, #0xC			#SP = 0x11130000 (start of ROP stack in __heap section)&lt;br /&gt;
LDMFD   SP!, {R4-R7,PC}		        #ROP starts here&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ROP payloads in Spirit and Star exploit respectively the BPF and IOSurface kernel vulnerabilities in order to patch the kernel, and then restart launchd to continue the normal boot process.&lt;br /&gt;
&lt;br /&gt;
In iOS 4.1, dyld does a range check on the interposition targets to make sure that a dylib only redirects symbols to its own code segments, preventing the use of this feature to control code flow (since we cannot have executable code segments without a valid signature).&lt;br /&gt;
&lt;br /&gt;
== Initializers exploit (pf2/hfs legacy)==&lt;br /&gt;
For the iOS 4.1 [[Packet Filter Kernel Exploit]], comex introduced another technique to get code execution, still using libgmalloc.dylib but in a less convoluted manner.&lt;br /&gt;
A Mach-O binary can declare an initializers section holding function pointers to be called upon loading (just like the ELF constructors section). This feature allows immediate control of the instruction pointer. Initializers calls are made in &amp;lt;code&amp;gt;ImageLoaderMachO::doModInitFunctions()&amp;lt;/code&amp;gt; (note that the iphone version of dyld is slightly different than the open-source version). The following code shows this function on iOS 4.1 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__text:2FE0BFE6                 LDR.W           R6, [R11,R5,LSL#2]  ; Initializer func = inits[i];&lt;br /&gt;
__text:2FE0BFEA                 CBZ             R3, loc_2FE0BFFA&lt;br /&gt;
__text:2FE0BFEC                 LDR             R3, [SP,#0x30+var_2C]&lt;br /&gt;
__text:2FE0BFEE                 LDR             R0, =(aDyldCallingIni - 0x2FE0BFF6)&lt;br /&gt;
__text:2FE0BFF0                 MOV             R1, R6&lt;br /&gt;
__text:2FE0BFF2                 ADD             R0, PC  ; &amp;quot;dyld: calling initializer function %p i&amp;quot;...&lt;br /&gt;
__text:2FE0BFF4                 LDR             R2, [R3,#4]&lt;br /&gt;
__text:2FE0BFF6                 BL              __ZN4dyld3logEPKcz ; dyld::log(char  const*,...)&lt;br /&gt;
__text:2FE0BFFA&lt;br /&gt;
__text:2FE0BFFA loc_2FE0BFFA&lt;br /&gt;
__text:2FE0BFFA                 ADD.W           R12, R4, #0x58&lt;br /&gt;
__text:2FE0BFFE                 LDR             R0, [R4,#0x44]&lt;br /&gt;
__text:2FE0C000                 LDR             R1, [R4,#0x48]&lt;br /&gt;
__text:2FE0C002                 LDR             R2, [R4,#0x4C]&lt;br /&gt;
__text:2FE0C004                 LDR             R3, [R4,#0x50]&lt;br /&gt;
__text:2FE0C006                 STR.W           R12, [SP]&lt;br /&gt;
__text:2FE0C00A                 BLX             R6  ; func(context.argc, context.argv, context.envp, context.apple, &amp;amp;context.programVars)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since R11 points to the start of the section containing the initializers function pointers (&amp;lt;code&amp;gt;inits&amp;lt;/code&amp;gt;), comex uses the following uncommon gadget to perform the stack pivot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x499ba000        LDMIBMI R11, {SP, PC}	#increments R11 by 4, then pops SP and PC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unlike Spirit and Star kernel exploits, the [[Packet Filter Kernel Exploit]] is not done in the ROP payload. Instead, the ROP payload is shorter and performs the following calls to run the exploit in an unsigned binary :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int zero = 0;&lt;br /&gt;
char *params[] = {&amp;quot;/usr/lib/pf2&amp;quot;, NULL};&lt;br /&gt;
char *env[] = {NULL};&lt;br /&gt;
/* these 3 function calls are done as ROP */&lt;br /&gt;
sysctlbyname(&amp;quot;security.mac.proc_enforce&amp;quot;, NULL, 0, &amp;amp;zero, sizeof(zero));   &lt;br /&gt;
sysctlbyname(&amp;quot;security.mac.vnode_enforce&amp;quot;, NULL, 0, &amp;amp;zero, sizeof(zero));   &lt;br /&gt;
execve(&amp;quot;/usr/lib/pf2&amp;quot;, params, env);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the &amp;lt;code&amp;gt;security.mac.proc_enforce&amp;lt;/code&amp;gt;  and &amp;lt;code&amp;gt;security.mac.vnode_enforce&amp;lt;/code&amp;gt; variables to 0 allows running unsigned binaries, with some side effects (see [http://www.saurik.com/id/8]).  The &amp;lt;code&amp;gt;vnode_enforce&amp;lt;/code&amp;gt; is reset to 0 as soon as the kernel exploit completes. In iOS 4.3 beta, those variables are now read only. &lt;br /&gt;
&lt;br /&gt;
Starting with iOS 4.2.1, dyld does a range check on the initializers so that the previous trick does not work (look for the &amp;lt;code&amp;gt;&amp;quot;dyld: ignoring out of bounds initializer function %p in %s&amp;quot;&amp;lt;/code&amp;gt; string). However, for some unknown reason this check is only made if &amp;lt;code&amp;gt;ImageLoaderMachO::isDylib()&amp;lt;/code&amp;gt; returns true. Hence, in [[Greenpois0n_(jailbreak)|Greenpois0n]] RC5, a crafted executable with an initializers section was used to replace the launchd binary and kickstart [[User:pod2g|pod2g]]'s [[HFS_Legacy_Volume_Name_Stack_Buffer_Overflow]] kernel exploit. The original launchd binary is renamed to punchd and is run as soon as the kernel exploit is done.&lt;br /&gt;
&lt;br /&gt;
In iOS 4.2.1 dyld the &amp;lt;code&amp;gt;inits&amp;lt;/code&amp;gt; pointer is not stored in R11 anymore but at [SP+4] :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__text:2FE0C03C loc_2FE0C03C&lt;br /&gt;
__text:2FE0C03C                 LDR             R3, [SP,#4]&lt;br /&gt;
__text:2FE0C03E                 MOV             R0, R6&lt;br /&gt;
__text:2FE0C040                 LDR.W           R4, [R3,R8,LSL#2] ;Initializer func = inits[i];&lt;br /&gt;
__text:2FE0C044                 LDR             R3, [R6]&lt;br /&gt;
__text:2FE0C046                 LDR             R3, [R3,#0x78]&lt;br /&gt;
__text:2FE0C048                 BLX             R3	; ImageLoaderMachO::isDylib(void)&lt;br /&gt;
__text:2FE0C04A                 CMP             R0, #0&lt;br /&gt;
__text:2FE0C04C                 BEQ             loc_2FE0C0EE ;bypass range check&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
__text:2FE0C088 loc_2FE0C088&lt;br /&gt;
__text:2FE0C088                 ADD.W           R12, R5, #0x5C&lt;br /&gt;
__text:2FE0C08C                 LDR             R0, [R5,#0x48]&lt;br /&gt;
__text:2FE0C08E                 LDR             R1, [R5,#0x4C]&lt;br /&gt;
__text:2FE0C090                 LDR             R2, [R5,#0x50]&lt;br /&gt;
__text:2FE0C092                 LDR             R3, [R5,#0x54]&lt;br /&gt;
__text:2FE0C094                 STR.W           R12, [SP] ; &amp;amp;context.programVars-&amp;gt;mh&lt;br /&gt;
__text:2FE0C098                 BLX             R4 ; func(context.argc, context.argv, context.envp, context.apple, &amp;amp;context.programVars)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The stack pivot is done using two initializers : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POP {R6,R7} ; BX LR             #R6=&amp;amp;context.programVars-&amp;gt;mh, R7=inits&lt;br /&gt;
SUB SP, R7, #0 ; POP {R7,PC}    #do the stack pivot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Since the first initializer clobbers R6 and shuffles the local variables by incrementing SP by 8, some conditions must be met for dyld to reach the second initializer call without crashing :&lt;br /&gt;
* the second initializer pointer has to be stored at offset 0x1004 (segPreferredLoadAddress(0) + 4)&lt;br /&gt;
* a pointer to a return 0 gadget must be present at offset 0x78 in the Mach-O file (context.programVars-&amp;gt;mh[0x78])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sources for information ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/comex/spirit/blob/master/igor/one.py&lt;br /&gt;
* https://github.com/comex/spirit/blob/master/igor/configdata.py&lt;br /&gt;
* http://books.google.fr/books?id=K8vUkpOXhN4C&amp;amp;lpg=PA73&amp;amp;ots=OJqiYTUwVD&amp;amp;dq=dyld%20interpose&amp;amp;pg=PA73#v=onepage&amp;amp;q&amp;amp;f=false&lt;br /&gt;
* http://launchd.macosforge.org/trac/browser/trunk/launchd/src/launchd.c&lt;br /&gt;
* http://blogs.embarcadero.com/eboling/2010/01/29/5639/&lt;br /&gt;
* http://opensource.apple.com/source/dyld/dyld-132.13/src/ImageLoaderMachO.cpp&lt;br /&gt;
* https://github.com/comex/starn/blob/43989121a0f74639cf8cc3aa57514e6ef0c97dbd/goo/one.py&lt;br /&gt;
* https://github.com/comex/starn/blob/43989121a0f74639cf8cc3aa57514e6ef0c97dbd/config/configdata.py&lt;br /&gt;
&lt;br /&gt;
[[Category:Exploits]]&lt;/div&gt;</summary>
		<author><name>Jan0</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Firmware&amp;diff=5907</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Firmware&amp;diff=5907"/>
		<updated>2010-03-13T18:47:00Z</updated>

		<summary type="html">&lt;p&gt;Jan0: /* iPhone 3G */  Kirkwood 7A400&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the operating system the iPhone/iPod Touch runs. Latest Apple download links can be found [http://www.itunes.com/version here].&lt;br /&gt;
&lt;br /&gt;
==Comparison of firmware versions==&lt;br /&gt;
&lt;br /&gt;
===[[M68ap|iPhone]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| [[Baseband]]&lt;br /&gt;
!width=&amp;quot;210&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;140&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Can be [[jailbreak|jailbroken]]?&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Can be [[unlock|unlocked]] OTB?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 1.0&lt;br /&gt;
| [[Alpine 1A420]]&lt;br /&gt;
| [http://img399.imageshack.us/i/iphone2go0.jpg/ 03.06.01_G]&lt;br /&gt;
| iphoneproto.zip&lt;br /&gt;
| &amp;lt;code&amp;gt;6e798e906c6590a7521ef89b731569be6d05b3aa&amp;lt;/code&amp;gt;&lt;br /&gt;
| Prototype; [http://forums.macrumors.com/showthread.php?t=627449 macrumors]&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 109,813,128&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.0&lt;br /&gt;
| Heavenly 1A543a&lt;br /&gt;
| 03.12.06_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-3538.20070629.B7vXa/iPhone1,1_1.0_1A543a_Restore.ipsw iPhone1,1_1.0_1A543a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;fb8bb3ee2e9a997affbb97868599f2995c78209c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial US shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 95,604,348&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.1&lt;br /&gt;
| Heavenly 1C25&lt;br /&gt;
| 03.12.06_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-3614.20070731.Nt6Y7/iPhone1,1_1.0.1_1C25_Restore.ipsw iPhone1,1_1.0.1_1C25_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;a00b85a7a55d62a94be5fbf5effbc42fd63f3097&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 95,627,958&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.2&lt;br /&gt;
| Heavenly 1C28&lt;br /&gt;
| 03.14.08_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-3823.20070821.vormd/iPhone1,1_1.0.2_1C28_Restore.ipsw iPhone1,1_1.0.2_1C28_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;7f5c0ff1f84a0202b75a55c3fcb362e415334d1e&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 95,627,324&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| Snowbird 3A109a&lt;br /&gt;
| 04.01.13_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-3883.20070927.In76t/iPhone1,1_1.1.1_3A109a_Restore.ipsw iPhone1,1_1.1.1_3A109a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;d441dd1c71ce18f25d8fc4faa71c1e6eaa02d02c&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 159,668,150&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.2&lt;br /&gt;
| Oktoberfest 3B48b&lt;br /&gt;
| 04.02.13_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4037.20071107.5Bghn/iPhone1,1_1.1.2_3B48b_Restore.ipsw iPhone1,1_1.1.2_3B48b_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;797c02e7d660940e8d9a16cc7229ccf3f67dd8b1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial Euro shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 167,927,501&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Little Bear 4A93&lt;br /&gt;
| 04.03.13_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4061.20080115.4Fvn7/iPhone1,1_1.1.3_4A93_Restore.ipsw iPhone1,1_1.1.3_4A93_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;b3dec7580bd00dc4faf28449d9618ef40aeacc96&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 169,950,551&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.4&lt;br /&gt;
| Little Bear 4A102&lt;br /&gt;
| 04.04.05_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4313.20080226.Sw39i/iPhone1,1_1.1.4_4A102_Restore.ipsw iPhone1,1_1.1.4_4A102_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;000811bac096011b50ebf6ec1ec2285b62fda4cb&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 169,946,442&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| Big Bear 5A347&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4956.20080710.V50OI/iPhone1,1_2.0_5A347_Restore.ipsw iPhone1,1_2.0_5A347_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;9c510a3cfce789fa5f92a8f763c231bac82ff6d4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 228,768,637&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| Big Bear 5B108&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5135.20080729.Vfgtr/iPhone1,1_2.0.1_5B108_Restore.ipsw iPhone1,1_2.0.1_5B108_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;61de6a2bd6ceddc9ecabad1671b91a59b3824bc4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 254,048,068&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.2&lt;br /&gt;
| Big Bear 5C1&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5246.20080818.2V0hO/iPhone1,1_2.0.2_5C1_Restore.ipsw iPhone1,1_2.0.2_5C1_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;b84b57bea919bdc720287ec908c1378e7d7b5e1b&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 253,589,000&lt;br /&gt;
|-&lt;br /&gt;
| 2.1&lt;br /&gt;
| Sugar Bowl 5F136&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5202.20080909.gkbEj/iPhone1,1_2.1_5F136_Restore.ipsw iPhone1,1_2.1_5F136_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;353b7745767b85932e14e262e69463620939bdf7&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 242,171,241&lt;br /&gt;
|-&lt;br /&gt;
| 2.2&lt;br /&gt;
| Timberline 5G77&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5779.20081120.Pt5yH/iPhone1,1_2.2_5G77_Restore.ipsw iPhone1,1_2.2_5G77_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;cbfc6ff886ce89868a55547b9fb980dbf92e6418&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 257,576,980&lt;br /&gt;
|-&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| SUTimberline 5H11&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5830.20090127.Mmni6/iPhone1,1_2.2.1_5H11_Restore.ipsw iPhone1,1_2.2.1_5H11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;43b95ebe1e51f8d30eae916053396595c08440d3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 257,593,705&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| [[Kirkwood 7A341 (iPhone)|Kirkwood 7A341]]&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6580.20090617.XsP76/iPhone1,1_3.0_7A341_Restore.ipsw iPhone1,1_3.0_7A341_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;2afd3f8ede17390737f508473ed205506a0bd23f&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 240,394,111&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.1&lt;br /&gt;
| [[Kirkwood 7A400 (iPhone)|Kirkwood 7A400]]&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6974.20090731.Cf4Tg/iPhone1,1_3.0.1_7A400_Restore.ipsw  iPhone1,1_3.0.1_7A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;34c391fbbc7b31b159372766de39ce5c9cc26ebb&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 240,439,502&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| [[Northstar 7C144 (iPhone)|Northstar 7C144]]&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6605.20090909.PQ3ws/iPhone1,1_3.1_7C144_Restore.ipsw iPhone1,1_3.1_7C144_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;b7b5f436f81c6f855410e8b44a3d432ccaacd6fc&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 252,536,460&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPhone)|Northstar 7D11]]&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7268.20091008.32pNe/iPhone1,1_3.1.2_7D11_Restore.ipsw iPhone1,1_3.1.2_7D11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;e4a1171542dbbd3093516d9c02047b9f7e143050&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 252,515,888&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPhone)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7481.20100202.4orot/iPhone1,1_3.1.3_7E18_Restore.ipsw iPhone1,1_3.1.3_7E18_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;eab23a7f8d2a17cb71046c50fc5f67ec390a3c2b&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 238,319,275&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===[[N82ap|iPhone 3G]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| [[Baseband]]&lt;br /&gt;
!width=&amp;quot;210&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;140&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Can be [[jailbreak|jailbroken]]?&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Can be [[unlock|unlocked]] OTB?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| Big Bear 5A345&lt;br /&gt;
| 01.45.00&lt;br /&gt;
| No download available&lt;br /&gt;
|&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| Big Bear 5A347&lt;br /&gt;
| 01.45.00&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4955.20080710.bgt53/iPhone1,2_2.0_5A347_Restore.ipsw iPhone1,2_2.0_5A347_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;af9506ca0034e462674f9f59c5406f159eaf9fc1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 235,957,125&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| Big Bear 5B108&lt;br /&gt;
| 01.48.02&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5134.20080729.Q2W3E/iPhone1,2_2.0.1_5B108_Restore.ipsw iPhone1,2_2.0.1_5B108_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;e81c7ac7e334a3e9d81b3b47894bfaa1ec495482&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 261,224,227&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.2&lt;br /&gt;
| Big Bear 5C1&lt;br /&gt;
| 02.08.01&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5241.20080818.t5Fv3/iPhone1,2_2.0.2_5C1_Restore.ipsw iPhone1,2_2.0.2_5C1_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;bef7fef954293046420fbcf947379839178a195b&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 260,761,030&lt;br /&gt;
|-&lt;br /&gt;
| 2.1&lt;br /&gt;
| Sugar Bowl 5F136&lt;br /&gt;
| 02.11.07&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5198.20080909.K3294/iPhone1,2_2.1_5F136_Restore.ipsw iPhone1,2_2.1_5F136_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;c6957dcbf2a95ccfd6dce374a727b1b7700a9043&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 249,341,655&lt;br /&gt;
|-&lt;br /&gt;
| 2.2&lt;br /&gt;
| Timberline 5G77&lt;br /&gt;
| 02.28.00&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5778.20081120.Aqw4R/iPhone1,2_2.2_5G77_Restore.ipsw iPhone1,2_2.2_5G77_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;f67f8b2b842428bf89456cda0c2d5cf954d111a4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[Ultrasn0w|yellowsn0w]]}}&lt;br /&gt;
| 258,342,348&lt;br /&gt;
|-&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| SUTimberline 5H11&lt;br /&gt;
| 02.30.03&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5828.20090127.aQLi8/iPhone1,2_2.2.1_5H11_Restore.ipsw iPhone1,2_2.2.1_5H11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;e0098e6fab5c90b59e067e03ae3ccd4a7cd0f39c&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 258,359,073&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| [[Kirkwood 7A341 (iPhone 3G)|Kirkwood 7A341]]&lt;br /&gt;
| 04.26.08&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6578.20090617.VfgtU/iPhone1,2_3.0_7A341_Restore.ipsw iPhone1,2_3.0_7A341_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;94f1fb43de12bff0f168ce690b7e794cc6220ae3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[Ultrasn0w|ultrasn0w]]}}&lt;br /&gt;
| 241,229,233&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.1&lt;br /&gt;
| [[Kirkwood 7A400 (iPhone 3G)|Kirkwood 7A400]]&lt;br /&gt;
| 04.26.08&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6972.20090731.Zx3Rr/iPhone1,2_3.0.1_7A400_Restore.ipsw  iPhone1,2_3.0.1_7A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;a148ff39fa4dea499e7a9dd007b63e90c4f56666&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[Ultrasn0w|ultrasn0w]]}}&lt;br /&gt;
| 241,274,617&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| [[Northstar 7C144 (iPhone 3G)|Northstar 7C144]]&lt;br /&gt;
| 05.11.07&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6600.20090909.AwndZ/iPhone1,2_3.1_7C144_Restore.ipsw iPhone1,2_3.1_7C144_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;9b3b3c148170b012012278efda9ff5c38282d559&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[blacksn0w]]}}&lt;br /&gt;
| 253,361,339&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPhone 3G)|Northstar 7D11]]&lt;br /&gt;
| 05.11.07&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7265.20091008.Xsd32/iPhone1,2_3.1.2_7D11_Restore.ipsw iPhone1,2_3.1.2_7D11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;b1a6ab2771bb5da372ba75a8fa3e1d72b71359d0&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[blacksn0w]]}}&lt;br /&gt;
| 253,340,786&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPhone 3G)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| 05.12.01&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7468.20100202.pbnrt/iPhone1,2_3.1.3_7E18_Restore.ipsw iPhone1,2_3.1.3_7E18_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;f5950afca546f93e281ba3cdb08bc0cfed7f0896&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 239,139,281&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===[[N88ap|iPhone 3GS]]===&lt;br /&gt;
Due to a new bootrom designed to close the [[0x24000 Segment Overflow]], an iPhone 3GS produced around year 2009 week 40/41 or later is currently limited to a '''tethered jailbreak'''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| [[Baseband]]&lt;br /&gt;
!width=&amp;quot;210&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;140&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Can be [[jailbreak|jailbroken]]?&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Can be [[unlock|unlocked]] OTB?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| [[Kirkwood 7A341 (iPhone 3GS)|Kirkwood 7A341]]&lt;br /&gt;
| 04.26.08&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6582.20090617.LlI87/iPhone2,1_3.0_7A341_Restore.ipsw iPhone2,1_3.0_7A341_Restore.ipsw] &lt;br /&gt;
| &amp;lt;code&amp;gt;d8534408c8679c830fd0c4e36ef9762c11ef73df&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[Ultrasn0w|ultrasn0w]]}}&lt;br /&gt;
| 312,292,933&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.1&lt;br /&gt;
| Kirkwood 7A400&lt;br /&gt;
| 04.26.08&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6976.20090731.Vgbt5/iPhone2,1_3.0.1_7A400_Restore.ipsw  iPhone2,1_3.0.1_7A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;30006575af931e3da0521febace005152cdb8853&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[Ultrasn0w|ultrasn0w]]}}&lt;br /&gt;
| 312,330,244&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| [[Northstar 7C144 (iPhone 3GS)|Northstar 7C144]]&lt;br /&gt;
| 05.11.07&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6609.20090909.mwws4/iPhone2,1_3.1_7C144_Restore.ipsw  iPhone2,1_3.1_7C144_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;527c74f87588afa1d69c1e2c08eedc88f113013a&amp;lt;/code&amp;gt;&lt;br /&gt;
| Installed on phones produced week 37.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[blacksn0w]]}}&lt;br /&gt;
| 321,011,474&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPhone 3GS)|Northstar 7D11]]&lt;br /&gt;
| 05.11.07&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7270.20091008.phn32/iPhone2,1_3.1.2_7D11_Restore.ipsw iPhone2,1_3.1.2_7D11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;6998bb7d9e869b2d89a08853312f9457d070fb1f&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[blacksn0w]]}}&lt;br /&gt;
| 321,015,700&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPhone 3GS)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| 05.12.01&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7472.20100202.8tugj/iPhone2,1_3.1.3_7E18_Restore.ipsw iPhone2,1_3.1.3_7E18_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;8cb3775e62c6f72059a962bf891b4e145b965052&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{no|No, for OTB phones}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 305,122,343&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===[[N45ap|iPod touch (1st generation)]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;168&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;200&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;150&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;100&amp;quot;| Can be [[jailbreak|jailbroken]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.0&lt;br /&gt;
| Snowbird 3A100a&lt;br /&gt;
| No download available&lt;br /&gt;
|&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.0&lt;br /&gt;
| Snowbird 3A101a&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-3882.20070910.N8uyT/iPod1,1_1.1_3A101a_Restore.ipsw iPod1,1_1.1_3A101a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;9b0d83c7f8b4328174a3f31e0e93f60e591ae143&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 157,890,186&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| Snowbird 3A110a&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-3932.20070927.p23dD/iPod1,1_1.1.1_3A110a_Restore.ipsw iPod1,1_1.1.1_3A110a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;84bbc6ea8bf29745195bc9926c1874f7c2a36f32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 157,906,686&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.2&lt;br /&gt;
| Oktoberfest 3B48b&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-4036.20071107.9g3DF/iPod1,1_1.1.2_3B48b_Restore.ipsw iPod1,1_1.1.2_3B48b_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;108d8ffe9ea75e61cd5e57170ad388b7fa00d923&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 165,567,897&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Little Bear 4A93&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/061-4060.20080115.9Iuh5/iPod1,1_1.1.3_4A93_Restore.ipsw iPod1,1_1.1.3_4A93_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;8dca23eec69d5ae58fbf3d4a23276e46cbb2e3c6&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 173,511,411&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.4&lt;br /&gt;
| Little Bear 4A102&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-4312.20080226.Btu45/iPod1,1_1.1.4_4A102_Restore.ipsw iPod1,1_1.1.4_4A102_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;c148d1eb1c979bb6434175411d4a372103a4fdd2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 173,519,589&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.5&lt;br /&gt;
| Little Bear 4B1&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-4841.20080714.bgy8O/iPod1,1_1.1.5_4B1_Restore.ipsw iPod1,1_1.1.5_4B1_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;1b818911316e4248ee01d3ec67f9d39afc3db240&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 173,519,637&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| Big Bear 5A347&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;ae82798e85f9953b0f4798bad36187cb020c9d22&amp;lt;/code&amp;gt;&lt;br /&gt;
| 2.0+ is a paid upgrade series&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 233,409,573&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| Big Bear 5B108&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;a81b6e7af4b85ef436d047f9da57c0f694d8964a&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 258,660,321&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.2&lt;br /&gt;
| Big Bear 5C1&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;c8b6f9fefa3f3777c56285dfe4c735b1e08a81a2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 258,201,218&lt;br /&gt;
|-&lt;br /&gt;
| 2.1&lt;br /&gt;
| Sugar Bowl 5F137&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;fc7f6d0972927df502ffca47438ca75dcccffaf3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 251,155,156&lt;br /&gt;
|-&lt;br /&gt;
| 2.2&lt;br /&gt;
| Timberline 5G77&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;081a7de363230fb38d0ce092cbbe42f2a50c8a5f&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 260,186,851&lt;br /&gt;
|-&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| SUTimberline 5H11&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;fc69be9e421bc0630567184506ab771f6b7ef68b&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 260,166,688&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| Kirkwood 7A341&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;dff2bd14931225908a360fb8e60a336f17d2dd6d&amp;lt;/code&amp;gt;&lt;br /&gt;
| 3.0+ is a paid upgrade series&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 242,458,552&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| Northstar 7C145&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;c6270780c166db4c9f4f0a7fa945754a1f9fe7e8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 249,755,862&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| Northstar 7D11&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;7367dd9ba58a3b9777307368a0128e696fdfc9a6&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}} &lt;br /&gt;
| 249,780,497&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| SUNorthstarTwo 7E18&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;5f897990f19d2f093b35e0813d7d77806404fb1f&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 235,678,189&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===[[N72ap|iPod touch (2nd generation)]]===&lt;br /&gt;
Due to a new bootrom designed to close the [[0x24000 Segment Overflow]], an iPod touch 2G with a model number beginning with &amp;quot;MC&amp;quot; is currently limited to a tethered jailbreak.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;168&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;200&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;150&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;100&amp;quot;| Can be [[jailbreak|jailbroken]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 2.1.1&lt;br /&gt;
| [[Sugar Bowl 5F138]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-5494.20080909.8i9o0/iPod2,1_2.1.1_5F138_Restore.ipsw iPod2,1_2.1.1_5F138_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;c3c700be49ad227d1152188e7c1e46b8958fd1e4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 282,083,944&lt;br /&gt;
|-&lt;br /&gt;
| 2.2&lt;br /&gt;
| Timberline 5G77a&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/061-5358.20081120.Gtghy/iPod2,1_2.2_5G77a_Restore.ipsw iPod2,1_2.2_5G77a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;34a0a489605f34d6cc6c9954edcaaf9a050deedc&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 291,123,491&lt;br /&gt;
|-&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| SUTimberline 5H11a&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5863.20090127.rt56K/iPod2,1_2.2.1_5H11a_Restore.ipsw iPod2,1_2.2.1_5H11a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;9af5625ea34acdd8abeb6fce71a72651d0c815d5&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 291,140,244&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| [[Kirkwood 7A341 (iPod touch 2G)|Kirkwood 7A341]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;0f7fc76d9b9aa826b5ab14be9821a315d3d9dc42&amp;lt;/code&amp;gt;&lt;br /&gt;
| 3.0+ is a paid upgrade series&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 270,315,364&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| [[Northstar 7C145 (iPod touch 2G)|Northstar 7C145]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;e0d8800a4fc7cc5be6976ddbceb43c2d2a7120d7&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 277,753,989&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| Northstar 7D11&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;e7c83d4a5baec0e81816ae1cd1caf9a4dc38ebf0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}} &lt;br /&gt;
| 277,794,671&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPod touch 2G)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;5f4f5c01eda2f811f73167e7d1f82dbeed82367b&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 263,275,211&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===[[N18AP|iPod touch (3rd generation)]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;168&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;200&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;150&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;100&amp;quot;| Can be [[jailbreak|jailbroken]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| [[Northstar 7C145 (iPod touch 3G)|Northstar 7C145]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-7163.20090909.NtstR/iPod3,1_3.1.1_7C145_Restore.ipsw iPod3,1_3.1.1_7C145_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;a3eddbe2cf77858bae7087dc8b2035f0d3097e57&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| style=&amp;quot;background:yellow; color:black;&amp;quot; class=&amp;quot;table-yes&amp;quot; | Tethered&lt;br /&gt;
&lt;br /&gt;
| 311,702,789&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| [[Northstar 7C145 (iPod touch 3G)|Northstar 7C146]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7238.20090918.23GhT/iPod3,1_3.1.1_7C146_Restore.ipsw iPod3,1_3.1.1_7C146_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;f66a7286b261137f25ddbbd84047f9a7ea181904&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background:yellow; color:black;&amp;quot; class=&amp;quot;table-yes&amp;quot; | Tethered&lt;br /&gt;
| 311,690,768&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPod touch 3G)|Northstar 7D11]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7271.20091008.Tch23/iPod3,1_3.1.2_7D11_Restore.ipsw iPod3,1_3.1.2_7D11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;02dcee28d788d594a2939ab564f4f183af6ccdf2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background:yellow; color:black;&amp;quot; class=&amp;quot;table-yes&amp;quot; | Tethered&lt;br /&gt;
| 311,740,034&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| SUNorthstarTwo 7E18&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7473.20100202.4i44t/iPod3,1_3.1.3_7E18_Restore.ipsw iPod3,1_3.1.3_7E18_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;375fd469b18bfc0b74c7cfa5b4d5945197b1d106&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 295,870,806&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[VFDecrypt Keys]]&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
*[http://www.trejan.com/projects/ipod/ Firmware List]&lt;br /&gt;
*[http://pastebin.ca/1209360 A link of interest...]&lt;/div&gt;</summary>
		<author><name>Jan0</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Kirkwood_7A400_(iPhone1,2)&amp;diff=5906</id>
		<title>Kirkwood 7A400 (iPhone1,2)</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Kirkwood_7A400_(iPhone1,2)&amp;diff=5906"/>
		<updated>2010-03-13T18:44:49Z</updated>

		<summary type="html">&lt;p&gt;Jan0: added some keys for 3.0.1 3G&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Decryption Keys ==&lt;br /&gt;
&lt;br /&gt;
=== Root Filesystem ===&lt;br /&gt;
* '''VFDecrypt''': 62deb9e26f11ef6d0ce2afc85becdcf65b81486b3430a9930cccaccd6879c405e06d8ac3&lt;br /&gt;
&lt;br /&gt;
=== KernelCache (kernelcache.release.s5l8900x) ===&lt;br /&gt;
* '''Key''': 5bf1ea6596f26dc37ee2b2b6a43e1320&lt;br /&gt;
* '''IV''': 63680cd8965137a064a3d19a689a80b3&lt;br /&gt;
&lt;br /&gt;
=== Restore Ramdisk (018-5809-001.dmg) ===&lt;br /&gt;
* '''Key''': 3bb4e6ec9117ea60cfcf4649d296bea9&lt;br /&gt;
* '''IV''': 391949ef28cd2f20aa06f04e0e621c72&lt;br /&gt;
&lt;br /&gt;
=== Update Ramdisk (018-5803-001.dmg) ===&lt;br /&gt;
* '''Key''': e4d7c7f324c55f8a31e863eae539c668&lt;br /&gt;
* '''IV''': b45759a73c69f440733a5a258a09a86f&lt;br /&gt;
&lt;br /&gt;
=== iBoot (iBoot.n82ap.RELEASE.img3) ===&lt;br /&gt;
* '''Key''': 4a8d6657297ca45cf6bec0854ee0a2e8&lt;br /&gt;
* '''IV''': 674a95015a8d33cd2f1f259ebe01aca7&lt;/div&gt;</summary>
		<author><name>Jan0</name></author>
		
	</entry>
</feed>