<?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=AriX</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=AriX"/>
	<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/wiki/Special:Contributions/AriX"/>
	<updated>2026-06-17T22:37:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User:Pod2g&amp;diff=9491</id>
		<title>User:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User:Pod2g&amp;diff=9491"/>
		<updated>2010-09-25T20:24:50Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;pod2g is an iPhone hacker who has discovered several [[bootrom]] exploits, including the [[0x24000 Segment Overflow]] and the [[usb_control_msg(0xA1, 1) Exploit]]. He was formerly part of the [[Chronic Dev Team]], but left for personal reasons.&lt;br /&gt;
&lt;br /&gt;
He was the first to [https://twitter.com/pod2g/status/23932796062 tweet the IMG3 keys] for [[iBSS]] for iOS 4.0.1 on the [[N90ap|iPhone 4]], as proof of unsigned code running on the device.&lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/pod2g pod2g on Twitter]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hackers]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User:Pod2g&amp;diff=9490</id>
		<title>User:Pod2g</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User:Pod2g&amp;diff=9490"/>
		<updated>2010-09-25T20:23:57Z</updated>

		<summary type="html">&lt;p&gt;AriX: Grammar.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;pod2g is an iPhone hacker who has discovered several [[bootrom]] exploits, including the [[0x24000 Segment Overflow]] and the [[usb_control_msg(0xA1, 1) Exploit]]. He was part formerly of the [[Chronic Dev Team]], but left for personal reasons.&lt;br /&gt;
&lt;br /&gt;
He was the first to [https://twitter.com/pod2g/status/23932796062 tweet the IMG3 keys] for [[iBSS]] for iOS 4.0.1 on the [[N90ap|iPhone 4]], as proof of unsigned code running on the device.&lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/pod2g pod2g on Twitter]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hackers]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User:AriX&amp;diff=9309</id>
		<title>User:AriX</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User:AriX&amp;diff=9309"/>
		<updated>2010-09-21T18:06:05Z</updated>

		<summary type="html">&lt;p&gt;AriX: New page: Member of the Chronic Dev Team.  [http://ariweinstein.com/ Blog that is never updated] or [http://twitter.com/AriX Twitter].&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Member of the [[Chronic Dev Team]].&lt;br /&gt;
&lt;br /&gt;
[http://ariweinstein.com/ Blog that is never updated] or [http://twitter.com/AriX Twitter].&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:Usb_control_msg(0xA1,_1)_Exploit&amp;diff=9308</id>
		<title>Talk:Usb control msg(0xA1, 1) Exploit</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:Usb_control_msg(0xA1,_1)_Exploit&amp;diff=9308"/>
		<updated>2010-09-21T18:04:23Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Is this even suppose to be here? :S&lt;br /&gt;
&lt;br /&gt;
[[User:Ih8sn0w|iH8sn0w]] 00:31, 21 September 2010 (UTC)&lt;br /&gt;
:[[User:Pod2g|Pod2g]] posted it himself so I don't see much of a problem for it as it doesn't sound like it will work on new devices. --[[User:OMEGA_RAZER|OMEGA_RAZER]]&lt;br /&gt;
&lt;br /&gt;
So would this exploit lead to a tethered jailbreak or would it be untethered? --[[User:JacobVengeance|JacobVengeance]] 01:50, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Tethered. This just allows unsigned code execution to be performed regardless of SHSH or model revision at the DFU/bootrom level. This is useful for redsn0w or blackra1n type hacks as they provide a quick and unclosable exploit to perform the actual jailbreak. Functionally, this replaces the need for sending 2.1.1 iBSS + iBEC to use Arm7Go or the 3.1.2 iBSS/iBEC (if that can even be done?) for that other USB control msg exploit in 3.1.2 iBoot. [[User:Iemit737|Iemit737]] 02:37, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
the new bootrom ipod touch 2g where ipod touch 3g so will this exploit work on ipod3g and iphone 3gs --[[User:Liamchat|liamchat]] 14:51, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I don't completely understand your question, but no, this exploit will work on nothing other than the 2nd generation iPod touch (and is not particularly big news, since we can already run unsigned code on the second gen touch). [[User:AriX|AriX]] 18:01, 21 September 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:Usb_control_msg(0xA1,_1)_Exploit&amp;diff=9307</id>
		<title>Talk:Usb control msg(0xA1, 1) Exploit</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:Usb_control_msg(0xA1,_1)_Exploit&amp;diff=9307"/>
		<updated>2010-09-21T18:01:30Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Is this even suppose to be here? :S&lt;br /&gt;
&lt;br /&gt;
[[User:Ih8sn0w|iH8sn0w]] 00:31, 21 September 2010 (UTC)&lt;br /&gt;
:[[User:Pod2g|Pod2g]] posted it himself so I don't see much of a problem for it as it doesn't sound like it will work on new devices. --[[User:OMEGA_RAZER|OMEGA_RAZER]]&lt;br /&gt;
&lt;br /&gt;
So would this exploit lead to a tethered jailbreak or would it be untethered? --[[User:JacobVengeance|JacobVengeance]] 01:50, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Tethered. This just allows unsigned code execution to be performed regardless of SHSH or model revision at the DFU/bootrom level. This is useful for redsn0w or blackra1n type hacks as they provide a quick and unclosable exploit to perform the actual jailbreak. Functionally, this replaces the need for sending 2.1.1 iBSS + iBEC to use Arm7Go or the 3.1.2 iBSS/iBEC (if that can even be done?) for that other USB control msg exploit in 3.1.2 iBoot. [[User:Iemit737|Iemit737]] 02:37, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
the new bootrom ipod touch 2g where ipod touch 3g so will this exploit work on ipod3g and iphone 3gs --[[User:Liamchat|liamchat]] 14:51, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I don't completely understand your question, but no, this exploit will work on nothing other than the 2nd generation iPod touch (and is not particularly big news, since we can already run unsigned code on the second gen touch).[[User:AriX|AriX]] 18:01, 21 September 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=0x24000_Segment_Overflow&amp;diff=4440</id>
		<title>0x24000 Segment Overflow</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=0x24000_Segment_Overflow&amp;diff=4440"/>
		<updated>2009-07-25T02:12:23Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also known by its codename, &amp;quot;24kpwn&amp;quot;, this was the first exploit in the [[S5L8720]] that allowed us to bypass the bootrom signature checks on [[LLB]] and create what is known as an [[untethered jailbreak]].&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
It is unclear how, but the company known as &amp;quot;NitroKey&amp;quot; is selling this. We were planning on holding back for the new iPhone (which subsequently could mean an iPod touch 3G as well), but now that they are profiteering off of this we would like to explain exactly how this works as soon as possible so people do not have to waste their good money on it.&lt;br /&gt;
&lt;br /&gt;
==Credit==&lt;br /&gt;
A &amp;quot;hybrid&amp;quot; dev team, in alphabetical order: '''chronic''', '''CPICH''', '''ius''', '''MuscleNerd''', '''planetbeing''', '''pod2g''', '''posixninja''', et al. (anyone wishing to be unnamed)&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
&lt;br /&gt;
Upon boot-up, the [[S5L8720]] and [[S5L8920]] SoC have a MIU configuration which maps the [[VROM (S5L8720)|Secure ROM]] to 0x0, providing the newly turned on device with an ARM exception vector and the first code to execute. This MIU configuration also maps a small amount of SRAM to 0x22000000 for the [[S5L8720]], and 0x84000000 for the [[S5L8920]]. Statically allocated variables, heap, and stack must use the SRAM, as &amp;quot;[[VROM (S5L8720)|Secure ROM]]&amp;quot; is unwritable. A region of memory starting from (SRAM Start)+24000 is used for this purpose. The region of memory from the start of SRAM to (SRAM Start)+0x24000 is used as a buffer for loading the [[LLB|next stage bootloader]] code. The [[LLB]] code is stored in [[NOR]], along with code for all other bootloader stages, as well as art resources (boot logos) and the [[DeviceTree|OpenFirmware device tree]] to provide to the XNU [[kernel]]. The first portion (first 0x160 bytes) of memory at (SRAM Start)+0x24000 is used for initialized statically allocated variables. Shortly after boot, values for that region are initialized from [[VROM (S5L8720)|Secure ROM]].&lt;br /&gt;
&lt;br /&gt;
==Vulnerability==&lt;br /&gt;
&lt;br /&gt;
The code that reads the [[LLB]] img3 from [[NOR]] into memory does not check the size of the [[LLB]] image being loaded, instead taking the size directly from the non-signature checked portion of its img3 header on the [[NOR]] (see ROM offset 0x2178). Any image greater than 0x24000 bytes in length will begin overwriting the portion of memory used to store Secure ROM statically allocated variables. Immediately vulnerable data includes USB data structures for [[DFU]] mode, a pointer to the bdev list structure, task list structures for the Secure ROM's scheduler, as well as the addresses of the hardware SHA1 registers. All of the above are potential avenues for exploitation.  The method described below uses the SHA1 register addresses.&lt;br /&gt;
&lt;br /&gt;
This vulnerability was discovered independently by '''pod2g''' and '''MuscleNerd'''.&lt;br /&gt;
&lt;br /&gt;
== Exploit==&lt;br /&gt;
&lt;br /&gt;
The goal of the exploit is to gain arbitrary code execution capability.&lt;br /&gt;
&lt;br /&gt;
The exploit, as proposed by '''planetbeing''', uses the overflow to overwrite one of the addresses of the SHA1 registers. The particular register is the only one that directly copies data to be hashed into the hardware (or into an arbitrary memory location, once the destination address has been overwritten). Code execution is achieved by writing data into the stack, specifically by overwriting the LR of the function performing the write to the &amp;quot;SHA1 register&amp;quot; so that instead of returning to the main SHA1 routine, it returns to a chosen location in memory that contains the payload code. The location chosen is within the range of memory that is filled with the [[LLB]] img3, so that the payload code can be placed within the [[LLB]] img3.&lt;br /&gt;
&lt;br /&gt;
The challenge is determining what to put in as the SHA1 register location so that the right portion of stack can be overwritten with the payload LR. This can be challenging without having access to any sort of exception dump (crash register dumps in the bootrom had been disabled by Apple). '''planetbeing''' performed a static analysis of a very detailed IDB produced by '''chronic''' and '''CPICH''' and determined the theoretical call stack for both of the invocations of the SHA1 hardware within the bootrom code [http://pastie.org/414981].&lt;br /&gt;
&lt;br /&gt;
In-situ verification of the LR location was performed by '''posixninja'''. '''CPICH''' discovered a way to alter the img3 DER so that the second invocation of the SHA1 hardware was not performed without affecting the first, allowing better confirmation that this step was performed properly.&lt;br /&gt;
&lt;br /&gt;
The final SHA1 register address was chosen so that the first dword of the DATA tag of the [[LLB]] img3 would replace sub_5E54's LR. This is because this is the first dword of the img3 that can be altered without substantially changing the img3's structure (and possibly disrupting earlier parsing code). The LR replacement must be done the first time the exploit is triggered (by the invocation of sub_5E54), or else the bootrom would crash. Since sub_5E54 takes 0x40 bytes of data at a time, the replacement LR thus must be within the first 0x40 bytes of data to be hashed. Data to be hashed starts at 0xC bytes from the start of the img3, and the first dword of the DATA tag is 0x20 bytes from the start of the img3. Thus, the SHA1 register address chosen should be 0x20 - 0xC = 0x14 bytes before sub_5E54's LR. So, it must be 0x2202FE24. Note that the exploit will also trash up to 0x2202FE24 + 0x40 = 0x2202FE64. So a sizeable portion of doComputeSHA1's stack will be trashed as well.&lt;br /&gt;
&lt;br /&gt;
The final exploit img3 was verified by '''posixninja''' under '''planetbeing''''s instructions to allow arbitrary code execution. It was a regular Img3 with padding up to 0x24000 bytes. The next 0x100 bytes were taken from the original initialization values for 0x22024000. However, 0x240FC, the offset of the SHA1 register address, was altered to 0x2202FE24. The first dword of the DATA tag (offset 0x20) was altered to 0x22023000. Payload code was placed at offset 0x23000.&lt;br /&gt;
&lt;br /&gt;
==Payload==&lt;br /&gt;
&lt;br /&gt;
The goal of the payload is to allow an unsigned [[LLB]] to be loaded.&lt;br /&gt;
&lt;br /&gt;
There are several ways that can be used, including directly calling the JumpToMemory function which is designed to prepare the SoC and invoke the [[LLB]] code. However, it's designed to be used on decrypted, unpacked code, and the [[LLB]] code currently resides in an encrypted from within the img3's DATA tag. The simplest solution is thus to use the bootrom's own machinery to decrypt and execute the code.&lt;br /&gt;
&lt;br /&gt;
The final payload evolved out of a discussion between '''pod2g''' and '''planetbeing''', based on an IDB documented by '''pod2g''', '''chronic''', '''CPICH''', et al. The lowest impact solution is to apply the pwnage patch to the rsaCheck subroutine of the bootrom, and returning from the payload from computing the SHA1 without crashing the bootrom. However, in this case, since bootrom text is unwritable, this was not a viable solution.&lt;br /&gt;
&lt;br /&gt;
The next lowest impact solution is to return from the entire parseFirmwareFooter function with a successful value, instead of the failure value it would normally return if signature checks fail. This would skip any remaining code  in that subroutine. This solution did not work in-situ. Failures checking the epoch tags prevented the firmware from being executed. The cause of this was not investigated.&lt;br /&gt;
&lt;br /&gt;
The final payload was to return past the verification of epoch and other tags in the [[LLB]] img3 to a spot right before the DATA tag was loaded from memory and decrypted. R5 was set to 0 to ensure decryption would not be skipped. The original value for the first DATA dword (before we had to overwrite it with the exploit LR) is written back to 0x22000020 by the payload, and the original SHA1 register value was written back to 0x2202FE24 to ensure the payload only activates once.&lt;br /&gt;
&lt;br /&gt;
==Deployment==&lt;br /&gt;
&lt;br /&gt;
Although the exploitive [[LLB]] can be manually written to [[NOR]] by bootstrapping from a tethered jailbreak, the easiest way is to use the Apple restore process itself. Apple's Restore process will write arbitrary img3s onto the [[NOR]], even if they fail signature checks. However, the &amp;quot;total size&amp;quot; value of the img3 is fixed up by the kernel before it is written to [[NOR]]. This would negate the exploit. However, '''MuscleNerd''' discovered that this could be bypassed by including the padding in another tag, such as CERT. Then, the written exploit [[LLB]] would have the &amp;quot;correct&amp;quot;, exploitive total size.&lt;br /&gt;
&lt;br /&gt;
==Timing Impact==&lt;br /&gt;
This exploit would have allowed the [[pwnage]] of the next generation iPhone without the discovery of an additional code execution vulnerability (required to write the exploit [[LLB]]), provided that the bug still existed in the next generation's bootrom. Even if it is too late to patch the bootrom now, it is not too late for Apple to repair the restore process in the stock IPSW so that we have no way to get the exploitive [[LLB]] onto the device. Before, Apple would have no reason to fix this, since writing arbitrary data to [[NOR]] does not negate their chain of trust. However, now that a way has been found, they now can prioritize a fix for this oversight.&lt;br /&gt;
&lt;br /&gt;
Thanks to irresponsible handling of the exploit by a third-party company known as [[NitroKey]], this eventuality is a near-certainty and pretty much erased the possibility of a day-of-release jailbreak for the third-generation iPod touch. In addition, Apple has added the [[ECID]] tag to the [[IMG3 File Format|IMG3 format]] in the iPhone 3GS, because they understood that an iBoot exploit would be necessary and they needed a way to prevent these exploits from permanently allowing the phone to be jailbroken.  May NitroKey burn in hell for all eternity.&lt;br /&gt;
&lt;br /&gt;
==3GS Implementation==&lt;br /&gt;
&lt;br /&gt;
The exploit remains the same in spirit.&lt;br /&gt;
&lt;br /&gt;
The call tree and stacks analysis is very similar although a few bytes here and there changed it slightly. It was again done manually but afterward, and out of fun, an IDA Python Script was written to automate the process. The new static analysis can be seen here [http://pastie.org/551212], and the IDA Python Script for it there [http://github.com/iZsh/IDA-Python-Scripts/].&lt;br /&gt;
&lt;br /&gt;
The main differences are:&lt;br /&gt;
&lt;br /&gt;
* the SRAM is at 0x84000000 instead of 0x22000000&lt;br /&gt;
* the Original value of the first DATA dword is written back to 0x84000040 (which was overwritten by the LR address)&lt;br /&gt;
* the SHA1 register original value is written back to 0x840241CC&lt;br /&gt;
* '''The decrypt flag is not held in R5 anymore''', but in a local variable of the function &amp;quot;my_process_module&amp;quot; (sub_2564). An extra static analysis tells us this variable is held at 0x84033F30, thus that's where you have to store your 0x0 value before returning to this function.&lt;br /&gt;
&lt;br /&gt;
[[Category:Exploits]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=0x24000_Segment_Overflow&amp;diff=4438</id>
		<title>0x24000 Segment Overflow</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=0x24000_Segment_Overflow&amp;diff=4438"/>
		<updated>2009-07-24T23:52:25Z</updated>

		<summary type="html">&lt;p&gt;AriX: iPod touch. Not iPod Touch.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also known by its codename, &amp;quot;24kpwn&amp;quot;, this was the first exploit in the [[S5L8720]] that allowed us to bypass the bootrom signature checks on [[LLB]] and create what is known as an [[untethered jailbreak]].&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
It is unclear how, but the company known as &amp;quot;NitroKey&amp;quot; is selling this. We were planning on holding back for the new iPhone (which subsequently could mean an iPod touch 3G as well), but now that they are profiteering off of this we would like to explain exactly how this works as soon as possible so people do not have to waste their good money on it.&lt;br /&gt;
&lt;br /&gt;
==Credit==&lt;br /&gt;
A &amp;quot;hybrid&amp;quot; dev team, in alphabetical order: '''chronic''', '''CPICH''', '''ius''', '''MuscleNerd''', '''planetbeing''', '''pod2g''', '''posixninja''', et al. (anyone wishing to be unnamed)&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
&lt;br /&gt;
Upon boot-up, the [[S5L8720]] and [[S5L8920]] SoC have a MIU configuration which maps the [[VROM (S5L8720)|Secure ROM]] to 0x0, providing the newly turned on device with an ARM exception vector and the first code to execute. This MIU configuration also maps a small amount of SRAM to 0x22000000 for the [[S5L8720]], and 0x84000000 for the [[S5L8920]]. Statically allocated variables, heap, and stack must use the SRAM, as &amp;quot;[[VROM (S5L8720)|Secure ROM]]&amp;quot; is unwritable. A region of memory starting from (SRAM Start)+24000 is used for this purpose. The region of memory from the start of SRAM to (SRAM Start)+0x24000 is used as a buffer for loading the [[LLB|next stage bootloader]] code. The [[LLB]] code is stored in [[NOR]], along with code for all other bootloader stages, as well as art resources (boot logos) and the [[DeviceTree|OpenFirmware device tree]] to provide to the XNU [[kernel]]. The first portion (first 0x160 bytes) of memory at (SRAM Start)+0x24000 is used for initialized statically allocated variables. Shortly after boot, values for that region are initialized from [[VROM (S5L8720)|Secure ROM]].&lt;br /&gt;
&lt;br /&gt;
==Vulnerability==&lt;br /&gt;
&lt;br /&gt;
The code that reads the [[LLB]] img3 from [[NOR]] into memory does not check the size of the [[LLB]] image being loaded, instead taking the size directly from the non-signature checked portion of its img3 header on the [[NOR]] (see ROM offset 0x2178). Any image greater than 0x24000 bytes in length will begin overwriting the portion of memory used to store Secure ROM statically allocated variables. Immediately vulnerable data includes USB data structures for [[DFU]] mode, a pointer to the bdev list structure, task list structures for the Secure ROM's scheduler, as well as the addresses of the hardware SHA1 registers. All of the above are potential avenues for exploitation.  The method described below uses the SHA1 register addresses.&lt;br /&gt;
&lt;br /&gt;
This vulnerability was discovered independently by '''pod2g''' and '''MuscleNerd'''.&lt;br /&gt;
&lt;br /&gt;
== Exploit==&lt;br /&gt;
&lt;br /&gt;
The goal of the exploit is to gain arbitrary code execution capability.&lt;br /&gt;
&lt;br /&gt;
The exploit, as proposed by '''planetbeing''', uses the overflow to overwrite one of the addresses of the SHA1 registers. The particular register is the only one that directly copies data to be hashed into the hardware (or into an arbitrary memory location, once the destination address has been overwritten). Code execution is achieved by writing data into the stack, specifically by overwriting the LR of the function performing the write to the &amp;quot;SHA1 register&amp;quot; so that instead of returning to the main SHA1 routine, it returns to a chosen location in memory that contains the payload code. The location chosen is within the range of memory that is filled with the [[LLB]] img3, so that the payload code can be placed within the [[LLB]] img3.&lt;br /&gt;
&lt;br /&gt;
The challenge is determining what to put in as the SHA1 register location so that the right portion of stack can be overwritten with the payload LR. This can be challenging without having access to any sort of exception dump (crash register dumps in the bootrom had been disabled by Apple). '''planetbeing''' performed a static analysis of a very detailed IDB produced by '''chronic''' and '''CPICH''' and determined the theoretical call stack for both of the invocations of the SHA1 hardware within the bootrom code [http://pastie.org/414981].&lt;br /&gt;
&lt;br /&gt;
In-situ verification of the LR location was performed by '''posixninja'''. '''CPICH''' discovered a way to alter the img3 DER so that the second invocation of the SHA1 hardware was not performed without affecting the first, allowing better confirmation that this step was performed properly.&lt;br /&gt;
&lt;br /&gt;
The final SHA1 register address was chosen so that the first dword of the DATA tag of the [[LLB]] img3 would replace sub_5E54's LR. This is because this is the first dword of the img3 that can be altered without substantially changing the img3's structure (and possibly disrupting earlier parsing code). The LR replacement must be done the first time the exploit is triggered (by the invocation of sub_5E54), or else the bootrom would crash. Since sub_5E54 takes 0x40 bytes of data at a time, the replacement LR thus must be within the first 0x40 bytes of data to be hashed. Data to be hashed starts at 0xC bytes from the start of the img3, and the first dword of the DATA tag is 0x20 bytes from the start of the img3. Thus, the SHA1 register address chosen should be 0x20 - 0xC = 0x14 bytes before sub_5E54's LR. So, it must be 0x2202FE24. Note that the exploit will also trash up to 0x2202FE24 + 0x40 = 0x2202FE64. So a sizeable portion of doComputeSHA1's stack will be trashed as well.&lt;br /&gt;
&lt;br /&gt;
The final exploit img3 was verified by '''posixninja''' under '''planetbeing''''s instructions to allow arbitrary code execution. It was a regular Img3 with padding up to 0x24000 bytes. The next 0x100 bytes were taken from the original initialization values for 0x22024000. However, 0x240FC, the offset of the SHA1 register address, was altered to 0x2202FE24. The first dword of the DATA tag (offset 0x20) was altered to 0x22023000. Payload code was placed at offset 0x23000.&lt;br /&gt;
&lt;br /&gt;
==Payload==&lt;br /&gt;
&lt;br /&gt;
The goal of the payload is to allow an unsigned [[LLB]] to be loaded.&lt;br /&gt;
&lt;br /&gt;
There are several ways that can be used, including directly calling the JumpToMemory function which is designed to prepare the SoC and invoke the [[LLB]] code. However, it's designed to be used on decrypted, unpacked code, and the [[LLB]] code currently resides in an encrypted from within the img3's DATA tag. The simplest solution is thus to use the bootrom's own machinery to decrypt and execute the code.&lt;br /&gt;
&lt;br /&gt;
The final payload evolved out of a discussion between '''pod2g''' and '''planetbeing''', based on an IDB documented by '''pod2g''', '''chronic''', '''CPICH''', et al. The lowest impact solution is to apply the pwnage patch to the rsaCheck subroutine of the bootrom, and returning from the payload from computing the SHA1 without crashing the bootrom. However, in this case, since bootrom text is unwritable, this was not a viable solution.&lt;br /&gt;
&lt;br /&gt;
The next lowest impact solution is to return from the entire parseFirmwareFooter function with a successful value, instead of the failure value it would normally return if signature checks fail. This would skip any remaining code  in that subroutine. This solution did not work in-situ. Failures checking the epoch tags prevented the firmware from being executed. The cause of this was not investigated.&lt;br /&gt;
&lt;br /&gt;
The final payload was to return past the verification of epoch and other tags in the [[LLB]] img3 to a spot right before the DATA tag was loaded from memory and decrypted. R5 was set to 0 to ensure decryption would not be skipped. The original value for the first DATA dword (before we had to overwrite it with the exploit LR) is written back to 0x22000020 by the payload, and the original SHA1 register value was written back to 0x2202FE24 to ensure the payload only activates once.&lt;br /&gt;
&lt;br /&gt;
==Deployment==&lt;br /&gt;
&lt;br /&gt;
Although the exploitive [[LLB]] can be manually written to [[NOR]] by bootstrapping from a tethered jailbreak, the easiest way is to use the Apple restore process itself. Apple's Restore process will write arbitrary img3s onto the [[NOR]], even if they fail signature checks. However, the &amp;quot;total size&amp;quot; value of the img3 is fixed up by the kernel before it is written to [[NOR]]. This would negate the exploit. However, '''MuscleNerd''' discovered that this could be bypassed by including the padding in another tag, such as CERT. Then, the written exploit [[LLB]] would have the &amp;quot;correct&amp;quot;, exploitive total size.&lt;br /&gt;
&lt;br /&gt;
==Timing Impact==&lt;br /&gt;
This exploit would have allowed the [[pwnage]] of the next generation iPhone without the discovery of an additional code execution vulnerability (required to write the exploit [[LLB]]), provided that the bug still existed in the next generation's bootrom. Even if it is too late to patch the bootrom now, it is not too late for Apple to repair the restore process in the stock IPSW so that we have no way to get the exploitive [[LLB]] onto the device. Before, Apple would have no reason to fix this, since writing arbitrary data to [[NOR]] does not negate their chain of trust. However, now that a way has been found, they now can prioritize a fix for this oversight.&lt;br /&gt;
&lt;br /&gt;
Thanks to irresponsible handling of the exploit by a third-party company known as [[NitroKey]], this eventuality is a near-certainty and pretty much erased the possibility of a day-of-release jailbreak for the third-generation iPod touch. In addition, Apple has added the [[ECID]] to the [[IMG3 File Format|IMG3 format]] in the iPhone 3GS, because they knew that in order to utilize 24kpwn an iBoot exploit is needed. May NitroKey burn in hell for all eternity.&lt;br /&gt;
&lt;br /&gt;
==3GS Implementation==&lt;br /&gt;
&lt;br /&gt;
The exploit remains the same in spirit.&lt;br /&gt;
&lt;br /&gt;
The call tree and stacks analysis is very similar although a few bytes here and there changed it slightly. It was again done manually but afterward, and out of fun, an IDA Python Script was written to automate the process. The new static analysis can be seen here [http://pastie.org/551212], and the IDA Python Script for it there [http://github.com/iZsh/IDA-Python-Scripts/].&lt;br /&gt;
&lt;br /&gt;
The main differences are:&lt;br /&gt;
&lt;br /&gt;
* the SRAM is at 0x84000000 instead of 0x22000000&lt;br /&gt;
* the Original value of the first DATA dword is written back to 0x84000040 (which was overwritten by the LR address)&lt;br /&gt;
* the SHA1 register original value is written back to 0x840241CC&lt;br /&gt;
* '''The decrypt flag is not held in R5 anymore''', but in a local variable of the function &amp;quot;my_process_module&amp;quot; (sub_2564). An extra static analysis tells us this variable is held at 0x84033F30, thus that's where you have to store your 0x0 value before returning to this function.&lt;br /&gt;
&lt;br /&gt;
[[Category:Exploits]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=N45AP&amp;diff=4435</id>
		<title>N45AP</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=N45AP&amp;diff=4435"/>
		<updated>2009-07-24T15:58:30Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Ipod-touch.jpg|thumb|right|iPod touch 1G]]&lt;br /&gt;
This is the '''iPod Touch''' (trademarked as iPod touch) it is a portable media player with a Wi-Fi platform designed by [[Apple Inc]].  The product was launched on September 5, 2007 at an Apple hosted event called ''the beat goes on''. The iPod touch is the first iPod to introduce a multi-touch graphical interface to the iPod generations. It is availible with 8, 16, or 32GB of flash memory. It also includes Apple's popular browser [[Safari]]. With a software update introduced by Apple, users were granted access to the [[App Store]]. However, this update costed $9.95.&lt;br /&gt;
==Internals==&lt;br /&gt;
&amp;lt;i&amp;gt;See: [[N45ap (Internals)]]&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Application Processor ==&lt;br /&gt;
It makes use of the [[S5L8900]] application processor. At this time, the [[iPhone]], [[iPhone 3G]], and [[iPod Touch]] all use this same processor.&lt;br /&gt;
&lt;br /&gt;
== Jailbreaking Process ==&lt;br /&gt;
Redsn0w and PwnageTool currently support [[iPhone 3G]], [[iPhone]] and [[iPod touch 1G]]. You update through [[iTunes]] then run QuickPwn, this version supports all firmwares up to 2.2.&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=/private/var&amp;diff=4434</id>
		<title>/private/var</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=/private/var&amp;diff=4434"/>
		<updated>2009-07-24T15:52:38Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
/private/var is the mount point for /dev/disk0s2, which is the iPhone's user/data partition. It is the larger of the two partitions, and stores all App Store applications, iTunes media, settings, photos, etc. Pre-1.1.3, all of this data was stored in /private/var/root. However, for security reasons, in 1.1.3 Apple made most applications run under the user mobile, and moved all of the data to /private/var/mobile.&lt;br /&gt;
&lt;br /&gt;
== Parents ==&lt;br /&gt;
[[/| Root]]&lt;br /&gt;
&lt;br /&gt;
== Children ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[/private/var/Keychains| Keychains]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[/private/var/lib| lib]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[/private/var/root| root]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[/private/var/mobile| mobile]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=/private/var&amp;diff=4433</id>
		<title>/private/var</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=/private/var&amp;diff=4433"/>
		<updated>2009-07-24T15:50:05Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parents ==&lt;br /&gt;
[[/| Root]]&lt;br /&gt;
&lt;br /&gt;
== Children ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[/private/var/Keychains| Keychains]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[/private/var/lib| lib]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[/private/var/root| root]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[/private/var/mobile| mobile]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=0x24000_Segment_Overflow&amp;diff=4432</id>
		<title>0x24000 Segment Overflow</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=0x24000_Segment_Overflow&amp;diff=4432"/>
		<updated>2009-07-24T15:48:43Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Timing Impact */ Nope. If we had waited for release until the 3Gs though, it would probably have been present in the iPod3,1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Also known by its codename, &amp;quot;24kpwn&amp;quot;, this was the first exploit in the [[S5L8720]] that allowed us to bypass the bootrom signature checks on [[LLB]] and create what is known as an [[untethered jailbreak]].&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
It is unclear how, but the company known as &amp;quot;NitroKey&amp;quot; is selling this. We were planning on holding back for the new iPhone (which subsequently could mean an iPod touch 3G as well), but now that they are profiteering off of this we would like to explain exactly how this works as soon as possible so people do not have to waste their good money on it.&lt;br /&gt;
&lt;br /&gt;
==Credit==&lt;br /&gt;
A &amp;quot;hybrid&amp;quot; dev team, in alphabetical order: '''chronic''', '''CPICH''', '''ius''', '''MuscleNerd''', '''planetbeing''', '''pod2g''', '''posixninja''', et al. (anyone wishing to be unnamed)&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
&lt;br /&gt;
Upon boot-up, the [[S5L8720]] and [[S5L8920]] SoC have a MIU configuration which maps the [[VROM (S5L8720)|Secure ROM]] to 0x0, providing the newly turned on device with an ARM exception vector and the first code to execute. This MIU configuration also maps a small amount of SRAM to 0x22000000 for the [[S5L8720]], and 0x84000000 for the [[S5L8920]]. Statically allocated variables, heap, and stack must use the SRAM, as &amp;quot;[[VROM (S5L8720)|Secure ROM]]&amp;quot; is unwritable. A region of memory starting from (SRAM Start)+24000 is used for this purpose. The region of memory from the start of SRAM to (SRAM Start)+0x24000 is used as a buffer for loading the [[LLB|next stage bootloader]] code. The [[LLB]] code is stored in [[NOR]], along with code for all other bootloader stages, as well as art resources (boot logos) and the [[DeviceTree|OpenFirmware device tree]] to provide to the XNU [[kernel]]. The first portion (first 0x160 bytes) of memory at (SRAM Start)+0x24000 is used for initialized statically allocated variables. Shortly after boot, values for that region are initialized from [[VROM (S5L8720)|Secure ROM]].&lt;br /&gt;
&lt;br /&gt;
==Vulnerability==&lt;br /&gt;
&lt;br /&gt;
The code that reads the [[LLB]] img3 from [[NOR]] into memory does not check the size of the [[LLB]] image being loaded, instead taking the size directly from the non-signature checked portion of its img3 header on the [[NOR]] (see ROM offset 0x2178). Any image greater than 0x24000 bytes in length will begin overwriting the portion of memory used to store Secure ROM statically allocated variables. Immediately vulnerable data includes USB data structures for [[DFU]] mode, a pointer to the bdev list structure, task list structures for the Secure ROM's scheduler, as well as the addresses of the hardware SHA1 registers. All of the above are potential avenues for exploitation.  The method described below uses the SHA1 register addresses.&lt;br /&gt;
&lt;br /&gt;
This vulnerability was discovered independently by '''pod2g''' and '''MuscleNerd'''.&lt;br /&gt;
&lt;br /&gt;
== Exploit==&lt;br /&gt;
&lt;br /&gt;
The goal of the exploit is to gain arbitrary code execution capability.&lt;br /&gt;
&lt;br /&gt;
The exploit, as proposed by '''planetbeing''', uses the overflow to overwrite one of the addresses of the SHA1 registers. The particular register is the only one that directly copies data to be hashed into the hardware (or into an arbitrary memory location, once the destination address has been overwritten). Code execution is achieved by writing data into the stack, specifically by overwriting the LR of the function performing the write to the &amp;quot;SHA1 register&amp;quot; so that instead of returning to the main SHA1 routine, it returns to a chosen location in memory that contains the payload code. The location chosen is within the range of memory that is filled with the [[LLB]] img3, so that the payload code can be placed within the [[LLB]] img3.&lt;br /&gt;
&lt;br /&gt;
The challenge is determining what to put in as the SHA1 register location so that the right portion of stack can be overwritten with the payload LR. This can be challenging without having access to any sort of exception dump (crash register dumps in the bootrom had been disabled by Apple). '''planetbeing''' performed a static analysis of a very detailed IDB produced by '''chronic''' and '''CPICH''' and determined the theoretical call stack for both of the invocations of the SHA1 hardware within the bootrom code [http://pastie.org/414981].&lt;br /&gt;
&lt;br /&gt;
In-situ verification of the LR location was performed by '''posixninja'''. '''CPICH''' discovered a way to alter the img3 DER so that the second invocation of the SHA1 hardware was not performed without affecting the first, allowing better confirmation that this step was performed properly.&lt;br /&gt;
&lt;br /&gt;
The final SHA1 register address was chosen so that the first dword of the DATA tag of the [[LLB]] img3 would replace sub_5E54's LR. This is because this is the first dword of the img3 that can be altered without substantially changing the img3's structure (and possibly disrupting earlier parsing code). The LR replacement must be done the first time the exploit is triggered (by the invocation of sub_5E54), or else the bootrom would crash. Since sub_5E54 takes 0x40 bytes of data at a time, the replacement LR thus must be within the first 0x40 bytes of data to be hashed. Data to be hashed starts at 0xC bytes from the start of the img3, and the first dword of the DATA tag is 0x20 bytes from the start of the img3. Thus, the SHA1 register address chosen should be 0x20 - 0xC = 0x14 bytes before sub_5E54's LR. So, it must be 0x2202FE24. Note that the exploit will also trash up to 0x2202FE24 + 0x40 = 0x2202FE64. So a sizeable portion of doComputeSHA1's stack will be trashed as well.&lt;br /&gt;
&lt;br /&gt;
The final exploit img3 was verified by '''posixninja''' under '''planetbeing''''s instructions to allow arbitrary code execution. It was a regular Img3 with padding up to 0x24000 bytes. The next 0x100 bytes were taken from the original initialization values for 0x22024000. However, 0x240FC, the offset of the SHA1 register address, was altered to 0x2202FE24. The first dword of the DATA tag (offset 0x20) was altered to 0x22023000. Payload code was placed at offset 0x23000.&lt;br /&gt;
&lt;br /&gt;
==Payload==&lt;br /&gt;
&lt;br /&gt;
The goal of the payload is to allow an unsigned [[LLB]] to be loaded.&lt;br /&gt;
&lt;br /&gt;
There are several ways that can be used, including directly calling the JumpToMemory function which is designed to prepare the SoC and invoke the [[LLB]] code. However, it's designed to be used on decrypted, unpacked code, and the [[LLB]] code currently resides in an encrypted from within the img3's DATA tag. The simplest solution is thus to use the bootrom's own machinery to decrypt and execute the code.&lt;br /&gt;
&lt;br /&gt;
The final payload evolved out of a discussion between '''pod2g''' and '''planetbeing''', based on an IDB documented by '''pod2g''', '''chronic''', '''CPICH''', et al. The lowest impact solution is to apply the pwnage patch to the rsaCheck subroutine of the bootrom, and returning from the payload from computing the SHA1 without crashing the bootrom. However, in this case, since bootrom text is unwritable, this was not a viable solution.&lt;br /&gt;
&lt;br /&gt;
The next lowest impact solution is to return from the entire parseFirmwareFooter function with a successful value, instead of the failure value it would normally return if signature checks fail. This would skip any remaining code  in that subroutine. This solution did not work in-situ. Failures checking the epoch tags prevented the firmware from being executed. The cause of this was not investigated.&lt;br /&gt;
&lt;br /&gt;
The final payload was to return past the verification of epoch and other tags in the [[LLB]] img3 to a spot right before the DATA tag was loaded from memory and decrypted. R5 was set to 0 to ensure decryption would not be skipped. The original value for the first DATA dword (before we had to overwrite it with the exploit LR) is written back to 0x22000020 by the payload, and the original SHA1 register value was written back to 0x2202FE24 to ensure the payload only activates once.&lt;br /&gt;
&lt;br /&gt;
==Deployment==&lt;br /&gt;
&lt;br /&gt;
Although the exploitive [[LLB]] can be manually written to [[NOR]] by bootstrapping from a tethered jailbreak, the easiest way is to use the Apple restore process itself. Apple's Restore process will write arbitrary img3s onto the [[NOR]], even if they fail signature checks. However, the &amp;quot;total size&amp;quot; value of the img3 is fixed up by the kernel before it is written to [[NOR]]. This would negate the exploit. However, '''MuscleNerd''' discovered that this could be bypassed by including the padding in another tag, such as CERT. Then, the written exploit [[LLB]] would have the &amp;quot;correct&amp;quot;, exploitive total size.&lt;br /&gt;
&lt;br /&gt;
==Timing Impact==&lt;br /&gt;
This exploit would have allowed the [[pwnage]] of the next generation iPhone without the discovery of an additional code execution vulnerability (required to write the exploit [[LLB]]), provided that the bug still existed in the next generation's bootrom. Even if it is too late to patch the bootrom now, it is not too late for Apple to repair the restore process in the stock IPSW so that we have no way to get the exploitive [[LLB]] onto the device. Before, Apple would have no reason to fix this, since writing arbitrary data to [[NOR]] does not negate their chain of trust. However, now that a way has been found, they now can prioritize a fix for this oversight.&lt;br /&gt;
&lt;br /&gt;
Thanks to irresponsible handling of the exploit by a third-party company known as [[NitroKey]], this eventuality is a near-certainty and pretty much erased the possibility of a day-of-release jailbreak for the next-generation iPod touch. May they burn in hell for all eternity.&lt;br /&gt;
&lt;br /&gt;
==3GS Implementation==&lt;br /&gt;
&lt;br /&gt;
The exploit remains the same in spirit.&lt;br /&gt;
&lt;br /&gt;
The call tree and stacks analysis is very similar although a few bytes here and there changed it slightly. It was again done manually but afterward, and out of fun, an IDA Python Script was written to automate the process. The new static analysis can be seen here [http://pastie.org/551212], and the IDA Python Script for it there [http://github.com/iZsh/IDA-Python-Scripts/].&lt;br /&gt;
&lt;br /&gt;
The main differences are:&lt;br /&gt;
&lt;br /&gt;
* the SRAM is at 0x84000000 instead of 0x22000000&lt;br /&gt;
* the Original value of the first DATA dword is written back to 0x84000040 (which was overwritten by the LR address)&lt;br /&gt;
* the SHA1 register original value is written back to 0x840241CC&lt;br /&gt;
* '''The decrypt flag is not held in R5 anymore''', but in a local variable of the function &amp;quot;my_process_module&amp;quot; (sub_2564). An extra static analysis tells us this variable is held at 0x84033F30, thus that's where you have to store your 0x0 value before returning to this function.&lt;br /&gt;
&lt;br /&gt;
[[Category:Exploits]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:Alpine_1A420&amp;diff=4431</id>
		<title>Talk:Alpine 1A420</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:Alpine_1A420&amp;diff=4431"/>
		<updated>2009-07-24T15:37:37Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Boot the Kernel? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Disassembler Frameworks? ==&lt;br /&gt;
&lt;br /&gt;
Has anyone noticed the ARMDisassembler, NDISASM and PPCDisasm PrivateFrameworks? --[[User:Oranav|Oranav]] 13:07, 21 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yeah, at least the PPC Disasm is funny I think. Wouldn't use my iPhone for that --[[User:M2m|M2m]] 14:49, 21 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Those frameworks plus a lot of the other stuff here is put on the device if you have a dev membership, when the Developer Disk Image gets sent over [[User:ChronicDev|ChronicDev]] 00:16, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Revision Name? ==&lt;br /&gt;
&lt;br /&gt;
btw, I think you should add the nickname to those revision SkankPhone or PurpleSkank. I think PurpleSkank is actually the name of something on the device, and SkankPhone the actual name, not 100% sure though. but the numbers + letters shit is kinda annoying and... bleh --[[User:Posixninja|posixninja]] 00:51, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I'm not sure if it has an official Name like Kirkwood, Timberline, etc. I wonder if the name is somewhere &amp;quot;hidden&amp;quot; in the bunch of files.&lt;br /&gt;
SkankPhone is an App on the device. But if there's no objection we could name it &amp;quot;PurpleSkank 1A420&amp;quot; until the official name is found...--[[User:M2m|M2m]] 02:38, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
PurpleSkank 1A420 sounds great to me! --[[User:Posixninja|posixninja]] 04:03, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Actually the file /private/var/db/dyld/update-prebinding-paths.txt begins with # Alpine1A420. So could this release be called Alpine ? In current firmwares the root pw is alpine, but it used to be dottie afaik. --[[User:M2m|M2m]] 11:13, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
weird, never seen that. honestly I still like PurpleSkank more. --[[User:Posixninja|posixninja]] 17:29, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I checked /private/var/db/dyld/update-prebinding-paths.txt of FW 1.1.4 - begins with ''# LittleBear4A102''. I checked 1.0.1 and it begins with ''# SUHeavenlyJuly1C25''. So I think the official name of this FW is ''Alpine 1A420''. --[[User:M2m|M2m]] 12:59, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
The password to the root account is and has always been alpine, and the password to the mobile account is and has always been dottie (there was a mobile account even before Apple began running apps under it) [[User:AriX|AriX]] 15:33, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Boot the Kernel? ==&lt;br /&gt;
&lt;br /&gt;
None of the kernel or kernelcache files is 8900 packed/encrypted. So the kernel refuses to boot on my 2G iPhone. Any Ideas ? --[[User:M2m|M2m]] 13:11, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
does the iboot from it even require it to be packed/encrypted? I wasn't around in the 8900 days, but I'm pretty sure the framework is still there in xpwn to pack 8900 files if you want to hack something together. --[[User:Posixninja|posixninja]] 14:27, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't have the iboot from the Prototype. At least not as an iboot file. Maybe it could be extracted from the NOR Dump.. who know. Will have a look at xpwn. Maybe I can find a 8900 packer/encryptor there --[[User:M2m|M2m]] 02:59, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
M2m, If you still need help dumping anything or figuring stuff out. geohot@gmail I'll be around at 5:30 EST tonight --[[User:Geohot|geohot]] 14:07, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I have not even tried to go as far as booting the kernel, because 1.1.4 is mostly compatible with SkankPhone and stuff... I've copied over a lot of the stuff from the prototype FW and it works pretty well. At some point maybe I'll get my act together and see if I can flash the NOR and stuff, but SkankPhone is cool enough for me :p (Mine is currently set up as a dual boot system where one partition is the 1.1.4/Prototype fw, and the other partition is a plain 1.1.4 partition... I wonder if I could set it up to dual boot 3.0 instead? It wouldn't really work with iTunes easily.) [[User:AriX|AriX]] 15:36, 24 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:Alpine_1A420&amp;diff=4430</id>
		<title>Talk:Alpine 1A420</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:Alpine_1A420&amp;diff=4430"/>
		<updated>2009-07-24T15:37:21Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Boot the Kernel? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Disassembler Frameworks? ==&lt;br /&gt;
&lt;br /&gt;
Has anyone noticed the ARMDisassembler, NDISASM and PPCDisasm PrivateFrameworks? --[[User:Oranav|Oranav]] 13:07, 21 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yeah, at least the PPC Disasm is funny I think. Wouldn't use my iPhone for that --[[User:M2m|M2m]] 14:49, 21 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Those frameworks plus a lot of the other stuff here is put on the device if you have a dev membership, when the Developer Disk Image gets sent over [[User:ChronicDev|ChronicDev]] 00:16, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Revision Name? ==&lt;br /&gt;
&lt;br /&gt;
btw, I think you should add the nickname to those revision SkankPhone or PurpleSkank. I think PurpleSkank is actually the name of something on the device, and SkankPhone the actual name, not 100% sure though. but the numbers + letters shit is kinda annoying and... bleh --[[User:Posixninja|posixninja]] 00:51, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I'm not sure if it has an official Name like Kirkwood, Timberline, etc. I wonder if the name is somewhere &amp;quot;hidden&amp;quot; in the bunch of files.&lt;br /&gt;
SkankPhone is an App on the device. But if there's no objection we could name it &amp;quot;PurpleSkank 1A420&amp;quot; until the official name is found...--[[User:M2m|M2m]] 02:38, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
PurpleSkank 1A420 sounds great to me! --[[User:Posixninja|posixninja]] 04:03, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Actually the file /private/var/db/dyld/update-prebinding-paths.txt begins with # Alpine1A420. So could this release be called Alpine ? In current firmwares the root pw is alpine, but it used to be dottie afaik. --[[User:M2m|M2m]] 11:13, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
weird, never seen that. honestly I still like PurpleSkank more. --[[User:Posixninja|posixninja]] 17:29, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I checked /private/var/db/dyld/update-prebinding-paths.txt of FW 1.1.4 - begins with ''# LittleBear4A102''. I checked 1.0.1 and it begins with ''# SUHeavenlyJuly1C25''. So I think the official name of this FW is ''Alpine 1A420''. --[[User:M2m|M2m]] 12:59, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
The password to the root account is and has always been alpine, and the password to the mobile account is and has always been dottie (there was a mobile account even before Apple began running apps under it) [[User:AriX|AriX]] 15:33, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Boot the Kernel? ==&lt;br /&gt;
&lt;br /&gt;
None of the kernel or kernelcache files is 8900 packed/encrypted. So the kernel refuses to boot on my 2G iPhone. Any Ideas ? --[[User:M2m|M2m]] 13:11, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
does the iboot from it even require it to be packed/encrypted? I wasn't around in the 8900 days, but I'm pretty sure the framework is still there in xpwn to pack 8900 files if you want to hack something together. --[[User:Posixninja|posixninja]] 14:27, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't have the iboot from the Prototype. At least not as an iboot file. Maybe it could be extracted from the NOR Dump.. who know. Will have a look at xpwn. Maybe I can find a 8900 packer/encryptor there --[[User:M2m|M2m]] 02:59, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
M2m, If you still need help dumping anything or figuring stuff out. geohot@gmail I'll be around at 5:30 EST tonight --[[User:Geohot|geohot]] 14:07, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I have not even tried to go as far as booting the kernel, because 1.1.4 is mostly compatible with SkankPhone and stuff... I've copied over a lot of the stuff from the prototype FW and it works pretty well. At some point maybe I'll get my act together and see if I can flash the NOR and stuff, but SkankPhone is cool enough for me :p (Mine is currently set up as a dual boot system where one partition is the 1.1.4/Prototype fw, and the other partition is a plain 1.1.4 partition... I wonder if I could set it up to dual boot 3.0 instead?) [[User:AriX|AriX]] 15:36, 24 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:Alpine_1A420&amp;diff=4429</id>
		<title>Talk:Alpine 1A420</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:Alpine_1A420&amp;diff=4429"/>
		<updated>2009-07-24T15:36:34Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Boot the Kernel? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Disassembler Frameworks? ==&lt;br /&gt;
&lt;br /&gt;
Has anyone noticed the ARMDisassembler, NDISASM and PPCDisasm PrivateFrameworks? --[[User:Oranav|Oranav]] 13:07, 21 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yeah, at least the PPC Disasm is funny I think. Wouldn't use my iPhone for that --[[User:M2m|M2m]] 14:49, 21 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Those frameworks plus a lot of the other stuff here is put on the device if you have a dev membership, when the Developer Disk Image gets sent over [[User:ChronicDev|ChronicDev]] 00:16, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Revision Name? ==&lt;br /&gt;
&lt;br /&gt;
btw, I think you should add the nickname to those revision SkankPhone or PurpleSkank. I think PurpleSkank is actually the name of something on the device, and SkankPhone the actual name, not 100% sure though. but the numbers + letters shit is kinda annoying and... bleh --[[User:Posixninja|posixninja]] 00:51, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I'm not sure if it has an official Name like Kirkwood, Timberline, etc. I wonder if the name is somewhere &amp;quot;hidden&amp;quot; in the bunch of files.&lt;br /&gt;
SkankPhone is an App on the device. But if there's no objection we could name it &amp;quot;PurpleSkank 1A420&amp;quot; until the official name is found...--[[User:M2m|M2m]] 02:38, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
PurpleSkank 1A420 sounds great to me! --[[User:Posixninja|posixninja]] 04:03, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Actually the file /private/var/db/dyld/update-prebinding-paths.txt begins with # Alpine1A420. So could this release be called Alpine ? In current firmwares the root pw is alpine, but it used to be dottie afaik. --[[User:M2m|M2m]] 11:13, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
weird, never seen that. honestly I still like PurpleSkank more. --[[User:Posixninja|posixninja]] 17:29, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I checked /private/var/db/dyld/update-prebinding-paths.txt of FW 1.1.4 - begins with ''# LittleBear4A102''. I checked 1.0.1 and it begins with ''# SUHeavenlyJuly1C25''. So I think the official name of this FW is ''Alpine 1A420''. --[[User:M2m|M2m]] 12:59, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
The password to the root account is and has always been alpine, and the password to the mobile account is and has always been dottie (there was a mobile account even before Apple began running apps under it) [[User:AriX|AriX]] 15:33, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Boot the Kernel? ==&lt;br /&gt;
&lt;br /&gt;
None of the kernel or kernelcache files is 8900 packed/encrypted. So the kernel refuses to boot on my 2G iPhone. Any Ideas ? --[[User:M2m|M2m]] 13:11, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
does the iboot from it even require it to be packed/encrypted? I wasn't around in the 8900 days, but I'm pretty sure the framework is still there in xpwn to pack 8900 files if you want to hack something together. --[[User:Posixninja|posixninja]] 14:27, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't have the iboot from the Prototype. At least not as an iboot file. Maybe it could be extracted from the NOR Dump.. who know. Will have a look at xpwn. Maybe I can find a 8900 packer/encryptor there --[[User:M2m|M2m]] 02:59, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
M2m, If you still need help dumping anything or figuring stuff out. geohot@gmail I'll be around at 5:30 EST tonight --[[User:Geohot|geohot]] 14:07, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I have not even tried to go as far as booting the kernel, because 1.1.4 is mostly compatible with SkankPhone and stuff... I've copied over a lot of the stuff from the prototype FW and it works pretty well. At some point maybe I'll get my act together and see if I can flash the NOR and stuff, but SkankPhone is cool enough for me :p [[User:AriX|AriX]] 15:36, 24 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:Alpine_1A420&amp;diff=4428</id>
		<title>Talk:Alpine 1A420</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:Alpine_1A420&amp;diff=4428"/>
		<updated>2009-07-24T15:33:49Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Revision Name? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Disassembler Frameworks? ==&lt;br /&gt;
&lt;br /&gt;
Has anyone noticed the ARMDisassembler, NDISASM and PPCDisasm PrivateFrameworks? --[[User:Oranav|Oranav]] 13:07, 21 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yeah, at least the PPC Disasm is funny I think. Wouldn't use my iPhone for that --[[User:M2m|M2m]] 14:49, 21 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Those frameworks plus a lot of the other stuff here is put on the device if you have a dev membership, when the Developer Disk Image gets sent over [[User:ChronicDev|ChronicDev]] 00:16, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Revision Name? ==&lt;br /&gt;
&lt;br /&gt;
btw, I think you should add the nickname to those revision SkankPhone or PurpleSkank. I think PurpleSkank is actually the name of something on the device, and SkankPhone the actual name, not 100% sure though. but the numbers + letters shit is kinda annoying and... bleh --[[User:Posixninja|posixninja]] 00:51, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I'm not sure if it has an official Name like Kirkwood, Timberline, etc. I wonder if the name is somewhere &amp;quot;hidden&amp;quot; in the bunch of files.&lt;br /&gt;
SkankPhone is an App on the device. But if there's no objection we could name it &amp;quot;PurpleSkank 1A420&amp;quot; until the official name is found...--[[User:M2m|M2m]] 02:38, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
PurpleSkank 1A420 sounds great to me! --[[User:Posixninja|posixninja]] 04:03, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Actually the file /private/var/db/dyld/update-prebinding-paths.txt begins with # Alpine1A420. So could this release be called Alpine ? In current firmwares the root pw is alpine, but it used to be dottie afaik. --[[User:M2m|M2m]] 11:13, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
weird, never seen that. honestly I still like PurpleSkank more. --[[User:Posixninja|posixninja]] 17:29, 22 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I checked /private/var/db/dyld/update-prebinding-paths.txt of FW 1.1.4 - begins with ''# LittleBear4A102''. I checked 1.0.1 and it begins with ''# SUHeavenlyJuly1C25''. So I think the official name of this FW is ''Alpine 1A420''. --[[User:M2m|M2m]] 12:59, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
The password to the root account is and has always been alpine, and the password to the mobile account is and has always been dottie (there was a mobile account even before Apple began running apps under it) [[User:AriX|AriX]] 15:33, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Boot the Kernel? ==&lt;br /&gt;
&lt;br /&gt;
None of the kernel or kernelcache files is 8900 packed/encrypted. So the kernel refuses to boot on my 2G iPhone. Any Ideas ? --[[User:M2m|M2m]] 13:11, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
does the iboot from it even require it to be packed/encrypted? I wasn't around in the 8900 days, but I'm pretty sure the framework is still there in xpwn to pack 8900 files if you want to hack something together. --[[User:Posixninja|posixninja]] 14:27, 23 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't have the iboot from the Prototype. At least not as an iboot file. Maybe it could be extracted from the NOR Dump.. who know. Will have a look at xpwn. Maybe I can find a 8900 packer/encryptor there --[[User:M2m|M2m]] 02:59, 24 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
M2m, If you still need help dumping anything or figuring stuff out. geohot@gmail I'll be around at 5:30 EST tonight --[[User:Geohot|geohot]] 14:07, 24 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Normal_Mode&amp;diff=4352</id>
		<title>Normal Mode</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Normal_Mode&amp;diff=4352"/>
		<updated>2009-07-18T20:33:44Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the protocol [[iTunes]] uses to talk to the booted iPhone. It uses usbmux to provide TCP like connectivity over a USB port using SSL. There is a pairing process iTunes uses to establish the secure channel. File transfer is provided by [[AFC]].&lt;br /&gt;
&lt;br /&gt;
==Device IDs==&lt;br /&gt;
It appears that it uses different device IDs:&lt;br /&gt;
* [[iPhone]] - 0x1290&lt;br /&gt;
* [[iPod touch]] - 0x1291&lt;br /&gt;
* [[iPhone 3G]] - 0x1292&lt;br /&gt;
* [[iPod touch 2G]] - 0x1293&lt;br /&gt;
* [[iPhone 3Gs]] - 0x1294&lt;br /&gt;
* [[iPod touch 3G]] - 0x1295 (likely)&lt;br /&gt;
&lt;br /&gt;
==Patch: Disable SSL==&lt;br /&gt;
There is a way to disable SSL encyption during iTunes communication on jailbroken devices by patching lockdownd binary:&lt;br /&gt;
&lt;br /&gt;
:(#) Disable SSL protection&lt;br /&gt;
:(#) FW 2.1&lt;br /&gt;
:(#) binary /usr/libexec/lockdownd&lt;br /&gt;
:-0x1000&lt;br /&gt;
'''Offset''' 000112F8: 0C 30 98 E5 &amp;gt; 00 30 A0 E3 ; Conn.UseSSL = false&lt;br /&gt;
&lt;br /&gt;
After applying the patch all packets between iPhone and iTunes become plain and clear. Musthave for R&amp;amp;D ppl.&lt;br /&gt;
==USBMux Protocol==&lt;br /&gt;
&lt;br /&gt;
===Resources===&lt;br /&gt;
* [[MobileDevice Library]]&lt;br /&gt;
* [http://wikee.iphwn.org/usb:usbmux The dev team's page on the topic]&lt;br /&gt;
* [http://matt.colyer.name/projects/iphone-linux/index.php?title=Protocol_Documentation Protocol Documentation]&lt;br /&gt;
* [http://matt.colyer.name/projects/iphone-linux/index.php?title=Main_Page iFuse]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocols (S5L)]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=AFC&amp;diff=4351</id>
		<title>AFC</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=AFC&amp;diff=4351"/>
		<updated>2009-07-18T20:33:22Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AFC is a service that runs on every iPhone / iPod, which iTunes uses to exchange files with the device. It is jailed to the directory /private/var/mobile/Media, which is on the second (non-OS) partition. The AFC service is handled by /usr/libexec/afcd, and runs over the [[Normal Mode|usbmux protocol]].&lt;br /&gt;
&lt;br /&gt;
=== AFC2 ===&lt;br /&gt;
AFC2 is a an additional AFC service, configured to allow access to the whole filesystem. Installing it and patching the fstab file for full write access is considered a bare-bones [[jailbreak]]. The AFC2 service is added by editing the /System/Library/Lockdown/Services.plist file and adding a service that runs under root with access to /.&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=AFC&amp;diff=4348</id>
		<title>AFC</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=AFC&amp;diff=4348"/>
		<updated>2009-07-18T20:28:10Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AFC is a service that runs on every iPhone / iPod, which iTunes uses to exchange files with the device. It is jailed to the directory /private/var/mobile/Media, which is on the second (non-OS) partition. The afc service is handled by /usr/libexec/afcd.&lt;br /&gt;
&lt;br /&gt;
=== AFC2 ===&lt;br /&gt;
AFC2 is a an additional AFC service, configured to allow access to the whole filesystem. Installing it and patching the fstab file for full write access is considered a bare-bones [[jailbreak]]. The AFC2 service is added by editing the /System/Library/Lockdown/Services.plist file and adding a service that runs under root with access to /.&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=IPSW_File_Format&amp;diff=4347</id>
		<title>IPSW File Format</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=IPSW_File_Format&amp;diff=4347"/>
		<updated>2009-07-18T19:39:37Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* IPSW Contents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''IPSW''' (guess '''IP'''hone/ '''IP'''od '''S'''oft'''W'''are) Files have the Magic Number 504B0304 (PK\003\004) and thus are [http://en.wikipedia.org/wiki/ZIP_%28file_format%29 ZIP] Archives. They can be modified with typical zip/unzip tools (i.e. change extension to .zip and double click). An IPSW File is used to deliver the iPod Touch / iPhone [[firmware]] to the end-user.&lt;br /&gt;
&lt;br /&gt;
== IPSW Contents ==&lt;br /&gt;
&lt;br /&gt;
=== root folder ===&lt;br /&gt;
*[[Restore Ramdisk]]&lt;br /&gt;
*[[Update Ramdisk]] (Firmware 1.0 didn't contain an Update Ramdisk as there is no official firmware to update from)&lt;br /&gt;
*[[Disk Image Formats|Filesystem Ramdisk]] (the largest .dmg file)&lt;br /&gt;
*kernelcache.release.XXXXXXX file (application processor specific i.e [[S5L8900]], [[S5L8920]], [[S5L8720]])&lt;br /&gt;
*BuildManifest.plist (first appeared in firmware 3.0, I guess)&lt;br /&gt;
*Restore.plist file&lt;br /&gt;
&lt;br /&gt;
*\Firmware (Folder)&lt;br /&gt;
&lt;br /&gt;
=== Firmware Folder ===&lt;br /&gt;
*\all_flash\all_flash.XXXXX.production (Folder - hardware specific i.e. [[M68ap]], [[N82ap]], [[N88ap]], [[N45ap]], [[N72ap]])&lt;br /&gt;
*\dfu (Folder)&lt;br /&gt;
&lt;br /&gt;
=== all_flash.XXXXX.production Folder ===&lt;br /&gt;
*img2/img3 files&lt;br /&gt;
*manifest&lt;br /&gt;
&lt;br /&gt;
=== dfu Folder ===&lt;br /&gt;
*iBEC.XXXXX.DFU (hardware specific i.e. [[M68ap]], [[N82ap]], [[N88ap]], [[N45ap]], [[N72ap]])&lt;br /&gt;
*iBSS.XXXXX.DFU (hardware specific i.e. [[M68ap]], [[N82ap]], [[N88ap]], [[N45ap]], [[N72ap]])&lt;br /&gt;
*WTF.XXXXX.DFU (hardware specific i.e. [[M68ap]], [[N82ap]], [[N45ap]], [[N72ap]] - currently not present in the iPhone 3Gs firmware, because it is mostly used to patch issues with the DFU mode that was burned into the bootrom)&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
This is a ls -alR of an extracted iPhone 3GS Firmware ipsw.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;total 608400&lt;br /&gt;
drwx------@ 11 m  staff        374 17 Jun 07:11 .&lt;br /&gt;
drwxrwxrwx   5 m  staff        170 18 Jul 07:34 ..&lt;br /&gt;
-rw-r--r--@  1 m  admin  281214976 22 Mai 17:10 018-5302-002.dmg&lt;br /&gt;
-rw-r--r--@  1 m  admin   12769604 22 Mai 16:59 018-5304-002.dmg&lt;br /&gt;
-rw-r--r--@  1 m  admin   12777796 22 Mai 16:59 018-5306-002.dmg&lt;br /&gt;
-rw-r--r--   1 m  admin      21097 22 Mai 17:29 BuildManifest.plist&lt;br /&gt;
drwxr-xr-x@  5 m  staff        170 17 Jun 07:11 Firmware&lt;br /&gt;
-rw-r--r--   1 m  admin       1763 22 Mai 17:10 Restore.plist&lt;br /&gt;
-rw-r--r--@  1 m  staff    4695492 22 Mai 14:32 kernelcache.release.s5l8920x&lt;br /&gt;
&lt;br /&gt;
./Firmware:&lt;br /&gt;
total 16&lt;br /&gt;
drwxr-xr-x@  5 m  staff   170 17 Jun 07:11 .&lt;br /&gt;
drwx------@ 11 m  staff   374 17 Jun 07:11 ..&lt;br /&gt;
drwxr-xr-x@  4 m  staff   136 18 Jun 02:10 all_flash&lt;br /&gt;
drwxr-xr-x@  4 m  staff   136 22 Mai 13:39 dfu&lt;br /&gt;
&lt;br /&gt;
./Firmware/all_flash:&lt;br /&gt;
total 16&lt;br /&gt;
drwxr-xr-x@  4 m  staff   136 18 Jun 02:10 .&lt;br /&gt;
drwxr-xr-x@  5 m  staff   170 17 Jun 07:11 ..&lt;br /&gt;
drwxr-xr-x@ 16 m  staff   544 22 Mai 13:43 all_flash.n88ap.production&lt;br /&gt;
&lt;br /&gt;
./Firmware/all_flash/all_flash.n88ap.production:&lt;br /&gt;
total 1320&lt;br /&gt;
drwxr-xr-x@ 16 m  staff     544 22 Mai 13:43 .&lt;br /&gt;
drwxr-xr-x@  4 m  staff     136 18 Jun 02:10 ..&lt;br /&gt;
-rw-r--r--@  1 m  staff   44996 22 Mai 13:08 DeviceTree.n88ap.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff   67908 22 Mai 13:12 LLB.n88ap.RELEASE.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff    9604 22 Mai 13:15 applelogo.s5l8920x.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff   19716 22 Mai 13:15 batterycharging0.s5l8920x.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff   24900 22 Mai 13:16 batterycharging1.s5l8920x.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff   76100 22 Mai 13:16 batteryfull.s5l8920x.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff   56772 22 Mai 13:16 batterylow0.s5l8920x.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff   65348 22 Mai 13:17 batterylow1.s5l8920x.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff   20356 22 Mai 13:17 glyphcharging.s5l8920x.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff   19332 22 Mai 13:18 glyphplugin.s5l8920x.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff  178500 22 Mai 13:21 iBoot.n88ap.RELEASE.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff     341 22 Mai 13:43 manifest&lt;br /&gt;
-rw-r--r--@  1 m  staff   20484 22 Mai 13:24 needservice.s5l8920x.img3&lt;br /&gt;
-rw-r--r--@  1 m  staff   47876 22 Mai 13:24 recoverymode.s5l8920x.img3&lt;br /&gt;
&lt;br /&gt;
./Firmware/dfu:&lt;br /&gt;
total 416&lt;br /&gt;
drwxr-xr-x@ 4 m  staff     136 22 Mai 13:39 .&lt;br /&gt;
drwxr-xr-x@ 5 m  staff     170 17 Jun 07:11 ..&lt;br /&gt;
-rw-r--r--@ 1 m  staff  104772 22 Mai 13:30 iBEC.n88ap.RELEASE.dfu&lt;br /&gt;
-rw-r--r--@ 1 m  staff  104772 22 Mai 13:36 iBSS.n88ap.RELEASE.dfu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=AFC&amp;diff=4345</id>
		<title>AFC</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=AFC&amp;diff=4345"/>
		<updated>2009-07-18T19:30:53Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AFC is a service (run by afcd) running on every iPhone / iPod, which iTunes uses to send files to the device. It is locked in the /var/mobile/media jail.&lt;br /&gt;
&lt;br /&gt;
=== AFC2 ===&lt;br /&gt;
AFC2 is a an additional AFC service, configured to allow access to the whole filesystem. Installing it and patching the fstab file for full write access is considered a bare-bones [[jailbreak]]. The AFC2 service is added by editing the /System/Library/Lockdown/Services.plist file and adding a service that runs under root with access to /.&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Jailbreak&amp;diff=4344</id>
		<title>Jailbreak</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Jailbreak&amp;diff=4344"/>
		<updated>2009-07-18T19:26:55Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the process by which full execute and write access is obtained on all the partitions of the iPhone. It is done by patching /etc/fstab to mount the System partition as read-write. This is entirely different from an [[unlock]]. Jailbreaking is the first action that must be taken before things like unofficial [[activation]] (hactivation), and unofficial unlocking can be applied.&lt;br /&gt;
&lt;br /&gt;
The original jailbreak also included modifying the [[AFC|afc]] service (used by [[iTunes]] to access the filesystem) to give full filesystem access from root. This was later updated to create a new service (afc2) that allows access to the full filesystem.&lt;br /&gt;
&lt;br /&gt;
Modern jailbreaks also include patching the kernel to get around code signing and other restrictions.&lt;br /&gt;
&lt;br /&gt;
==Exploits which were used in order to jailbreak (in chronological order)==&lt;br /&gt;
=== 1.0.2 ===&lt;br /&gt;
* [[Restore Mode]] (iBoot had a command named cp, which had access to the whole filesystem)&lt;br /&gt;
=== 1.1.1 ===&lt;br /&gt;
* [[Symlinks]] (an upgrade jailbreak)&lt;br /&gt;
* [[LibTiff | libtiff exploit]] (Adapted from the PSP scene, used by [[Jailbreakme]])&lt;br /&gt;
=== 1.1.2 ===&lt;br /&gt;
* [[Mknod]] (an upgrade jailbreak)&lt;br /&gt;
=== 1.1.3 / 1.1.4 ===&lt;br /&gt;
* [[Soft Upgrade]] (an upgrade jailbreak)&lt;br /&gt;
* [[Ramdisk Hack]]&lt;br /&gt;
&lt;br /&gt;
==Exploits which are used in order to jailbreak 2.0 and above==&lt;br /&gt;
===iPhone / iPhone 3G / iPod Touch===&lt;br /&gt;
* [[Pwnage]] and [[Pwnage 2.0]] (together)&lt;br /&gt;
===iPod Touch 2G===&lt;br /&gt;
* [[ARM7 Go]] (used by tethered jailbreaks)&lt;br /&gt;
* [[24kpwn]]&lt;br /&gt;
===iPhone 3GS===&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] (also uses the [[24kpwn]] exploit to make it untethered)&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Jailbreak&amp;diff=4343</id>
		<title>Jailbreak</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Jailbreak&amp;diff=4343"/>
		<updated>2009-07-18T19:24:34Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Exploits which are used in order to jailbreak 2.0 and above */ iBoot exploit would be necessary anyway :p&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the process by which full execute and write access is obtained on all the partitions of the iPhone. It is done by patching /etc/fstab to mount the System partition as read-write. This is entirely different to an [[unlock]]. Jailbreaking is the first action that must be taken before things like non-official [[activation]], and non-official unlocking, can proceed.&lt;br /&gt;
&lt;br /&gt;
The original jailbreak also included modifying the [[AFC|afc]] service (service used by [[iTunes]] to access the filesystem) to give full filesystem access from root. This was later updated to creating a new service (afc2) that allows access to the full filesystem.&lt;br /&gt;
&lt;br /&gt;
Modern jailbreaks also include patching the OS kernel to get around code-signing and other restrictions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exploits which were used in order to jailbreak (in chronological order)==&lt;br /&gt;
=== 1.0.2 ===&lt;br /&gt;
* [[Restore Mode]] (iBoot had a command named cp, which had access to the whole filesystem)&lt;br /&gt;
=== 1.1.1 ===&lt;br /&gt;
* [[Symlinks]] (an upgrade jailbreak)&lt;br /&gt;
* [[LibTiff | libtiff exploit]] (Adapted from the PSP scene, used by [[Jailbreakme]])&lt;br /&gt;
=== 1.1.2 ===&lt;br /&gt;
* [[Mknod]] (an upgrade jailbreak)&lt;br /&gt;
=== 1.1.3 / 1.1.4 ===&lt;br /&gt;
* [[Soft Upgrade]] (an upgrade jailbreak)&lt;br /&gt;
* [[Ramdisk Hack]]&lt;br /&gt;
&lt;br /&gt;
==Exploits which are used in order to jailbreak 2.0 and above==&lt;br /&gt;
===iPhone / iPhone 3G / iPod Touch===&lt;br /&gt;
* [[Pwnage]] and [[Pwnage 2.0]] (together)&lt;br /&gt;
===iPod Touch 2G===&lt;br /&gt;
* [[ARM7 Go]] (used by tethered jailbreaks)&lt;br /&gt;
* [[24kpwn]]&lt;br /&gt;
===iPhone 3GS===&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] (also uses the [[24kpwn]] exploit to make it untethered)&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Jailbreak&amp;diff=4342</id>
		<title>Jailbreak</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Jailbreak&amp;diff=4342"/>
		<updated>2009-07-18T19:23:55Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Exploits which are used in order to jailbreak 2.0 and above */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the process by which full execute and write access is obtained on all the partitions of the iPhone. It is done by patching /etc/fstab to mount the System partition as read-write. This is entirely different to an [[unlock]]. Jailbreaking is the first action that must be taken before things like non-official [[activation]], and non-official unlocking, can proceed.&lt;br /&gt;
&lt;br /&gt;
The original jailbreak also included modifying the [[AFC|afc]] service (service used by [[iTunes]] to access the filesystem) to give full filesystem access from root. This was later updated to creating a new service (afc2) that allows access to the full filesystem.&lt;br /&gt;
&lt;br /&gt;
Modern jailbreaks also include patching the OS kernel to get around code-signing and other restrictions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exploits which were used in order to jailbreak (in chronological order)==&lt;br /&gt;
=== 1.0.2 ===&lt;br /&gt;
* [[Restore Mode]] (iBoot had a command named cp, which had access to the whole filesystem)&lt;br /&gt;
=== 1.1.1 ===&lt;br /&gt;
* [[Symlinks]] (an upgrade jailbreak)&lt;br /&gt;
* [[LibTiff | libtiff exploit]] (Adapted from the PSP scene, used by [[Jailbreakme]])&lt;br /&gt;
=== 1.1.2 ===&lt;br /&gt;
* [[Mknod]] (an upgrade jailbreak)&lt;br /&gt;
=== 1.1.3 / 1.1.4 ===&lt;br /&gt;
* [[Soft Upgrade]] (an upgrade jailbreak)&lt;br /&gt;
* [[Ramdisk Hack]]&lt;br /&gt;
&lt;br /&gt;
==Exploits which are used in order to jailbreak 2.0 and above==&lt;br /&gt;
===iPhone / iPhone 3G / iPod Touch===&lt;br /&gt;
* [[Pwnage]] and [[Pwnage 2.0]] (together)&lt;br /&gt;
===iPod Touch 2G===&lt;br /&gt;
* [[ARM7 Go]] (used by tethered jailbreaks)&lt;br /&gt;
* [[24kpwn]]&lt;br /&gt;
===iPhone 3GS===&lt;br /&gt;
All jailbreaks are using the [[24kpwn]] exploit (to make it untethered), but an iBoot exploit is necessary as well because of the new [[ECID]] tag.&lt;br /&gt;
* [[iBoot Environment Variable Overflow]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Jailbreak&amp;diff=4341</id>
		<title>Jailbreak</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Jailbreak&amp;diff=4341"/>
		<updated>2009-07-18T19:21:40Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Exploits which were used in order to jailbreak (in chronological order) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the process by which full execute and write access is obtained on all the partitions of the iPhone. It is done by patching /etc/fstab to mount the System partition as read-write. This is entirely different to an [[unlock]]. Jailbreaking is the first action that must be taken before things like non-official [[activation]], and non-official unlocking, can proceed.&lt;br /&gt;
&lt;br /&gt;
The original jailbreak also included modifying the [[AFC|afc]] service (service used by [[iTunes]] to access the filesystem) to give full filesystem access from root. This was later updated to creating a new service (afc2) that allows access to the full filesystem.&lt;br /&gt;
&lt;br /&gt;
Modern jailbreaks also include patching the OS kernel to get around code-signing and other restrictions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exploits which were used in order to jailbreak (in chronological order)==&lt;br /&gt;
=== 1.0.2 ===&lt;br /&gt;
* [[Restore Mode]] (iBoot had a command named cp, which had access to the whole filesystem)&lt;br /&gt;
=== 1.1.1 ===&lt;br /&gt;
* [[Symlinks]] (an upgrade jailbreak)&lt;br /&gt;
* [[LibTiff | libtiff exploit]] (Adapted from the PSP scene, used by [[Jailbreakme]])&lt;br /&gt;
=== 1.1.2 ===&lt;br /&gt;
* [[Mknod]] (an upgrade jailbreak)&lt;br /&gt;
=== 1.1.3 / 1.1.4 ===&lt;br /&gt;
* [[Soft Upgrade]] (an upgrade jailbreak)&lt;br /&gt;
* [[Ramdisk Hack]]&lt;br /&gt;
&lt;br /&gt;
==Exploits which are used in order to jailbreak 2.0 and above==&lt;br /&gt;
===iPhone / iPhone 3G / iPod Touch===&lt;br /&gt;
* [[Pwnage]] and [[Pwnage 2.0]] (together)&lt;br /&gt;
===iPod Touch 2G===&lt;br /&gt;
* [[ARM7 Go]] (used by tethered jailbreaks)&lt;br /&gt;
* [[24kpwn]]&lt;br /&gt;
===iPhone 3GS===&lt;br /&gt;
All jailbreaks are using the [[24kpwn]] exploit, but you need an iBoot exploit as well because of [[ECID]].&lt;br /&gt;
====3.0====&lt;br /&gt;
* [[iBoot Environment Variable Overflow]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L_File_Formats&amp;diff=4340</id>
		<title>S5L File Formats</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L_File_Formats&amp;diff=4340"/>
		<updated>2009-07-18T19:19:42Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* 8900 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==IMG2==&lt;br /&gt;
This was the file format used prior to 2.0 firmware. Post 1.1.1, it was encrypted with [[Key 0x837]]. It can only be parsed by an iBoot in a firmware version less than beta 3, or the [[S5L8900]] [[VROM]]. The [[S5L8720]] has no support for it.&lt;br /&gt;
&lt;br /&gt;
==8900==&lt;br /&gt;
&lt;br /&gt;
This is the file format used by the [[S5L8900]]. Usually this wraps around an [[IMG2 File Format|IMG2]] file. It can only be parsed by an iBoot in a firmware version less than 2.0 beta 3, or the [[S5L8900]] [[VROM]]. The [[S5L8720]] has no support for it.&lt;br /&gt;
&lt;br /&gt;
===Header===&lt;br /&gt;
 typedef struct {&lt;br /&gt;
  uchar  magic[4];              // string &amp;quot;8900&amp;quot;&lt;br /&gt;
  uchar  version[3];            // string &amp;quot;1.0&amp;quot;&lt;br /&gt;
  uint8  format;                // plaintext format is 0x4, encrypted with [[GID-key]] format is 0x3, boot plaintext is 0x2, boot encrypted with [[UID-key]] is 0x1.&lt;br /&gt;
  uint32 unknown1;&lt;br /&gt;
  uint32 sizeOfData;            // size of data (ie, filesize - header(0x800) - footer signature(0x80) - footer certificate(0xC0A))&lt;br /&gt;
  uint32 footerSignatureOffset; // offset to footer signature &lt;br /&gt;
  uint32 footerCertOffset;      // offset to footer certificate, from end of header (0x800)&lt;br /&gt;
  uint32 footerCertLen;&lt;br /&gt;
  uchar  salt[0x20];            // a seemingly random salt (an awfully big one though... needs more attention)&lt;br /&gt;
  uint16 unknown2;&lt;br /&gt;
  uint16 epoch;                 // the security epoch of the file&lt;br /&gt;
  uchar  headerSignature[0x10]; // encrypt(sha1(header[0:0x40])[0:0x10], key_0x837, zero_iv)&lt;br /&gt;
  uchar  padding[0x7B0];&lt;br /&gt;
 } Apple8900Header;&lt;br /&gt;
&lt;br /&gt;
===Resources===&lt;br /&gt;
[http://wikee.iphwn.org/s5l8900:8900_format The dev team's wiki page on the topic]&lt;br /&gt;
&lt;br /&gt;
==IMG3==&lt;br /&gt;
This is the replacement for the [[IMG2 File Format]] in 2.0 firmware. The [[VROM (S5L8720)|S5L8720 Bootrom]] can understand this by default, but [[WTF 2.0]] must be uploaded to the [[DFU]] mode of an [[S5L8900]] that has code in it to parse IMG3 files, or the [[S5L8900]] will not be able to understand them.&lt;br /&gt;
&lt;br /&gt;
===Header===&lt;br /&gt;
 struct Img3 {&lt;br /&gt;
     unsigned int      magic;   // fourcc=&amp;quot;IMG3&amp;quot;&lt;br /&gt;
     unsigned int   fullSize;   // full size of fw image&lt;br /&gt;
     unsigned int sizeNoPack;   // size of fw image without header&lt;br /&gt;
     unsigned int sigCheckArea; // although that is just my name for it, this is the&lt;br /&gt;
                                // size of the start of the data section (the code) up to&lt;br /&gt;
                                // the start of the RSA signature (SHSH section)&lt;br /&gt;
     unsigned int       iden;   // identifier of image, used when bootrom is parsing images&lt;br /&gt;
                                // list to find LLB (illb), LLB parsing it to find iBoot (ibot),&lt;br /&gt;
                                // etc.&lt;br /&gt;
  &lt;br /&gt;
 } typedef Img3;&lt;br /&gt;
&lt;br /&gt;
===Tag Format===&lt;br /&gt;
 unsigned int magic;&lt;br /&gt;
 unsigned int total_length;   //data_length+0xC&lt;br /&gt;
 unsigned int data_length;&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
 VERS: Version&lt;br /&gt;
 SDOM: Security Domain&lt;br /&gt;
 PROD: Processor to be used with.&lt;br /&gt;
 CHIP: Chip to be used with. &amp;quot;0x8900&amp;quot; for [[S5L8900]] and &amp;quot;0x8720&amp;quot; for [[n72ap|S5L8720]]. Instead of there being a check against some piece of hardware, whatever is verifying this (bootrom / iBoot / LLB / etc.) has this hardcoded in.&lt;br /&gt;
 BORD: Board to be used with&lt;br /&gt;
 [[KBAG]]: contains the KEY and IV required to decrypt encrypted with the [[GID-key]]&lt;br /&gt;
 SHSH: RSA encrypted SHA1 hash of the file&lt;br /&gt;
 CERT: Certificate&lt;br /&gt;
&lt;br /&gt;
===Encryption===&lt;br /&gt;
Apple got smarter this time, requiring the Hardware AES engine to be run per file. Decrypt the [[KBAG]] tag data (0x20 byte?) with the hardware AES engine and get the 0x10 byte IV and the 0x10 byte KEY.&lt;br /&gt;
&lt;br /&gt;
iBoot has support for aes-192 and aes-256 also. In the current method, iBoot will always use the first 16 bytes as the IV, then the remaining 16 (aes-128, current method), 24 (aes-192), or 32 (aes-256) bytes for the key.&lt;br /&gt;
&lt;br /&gt;
===Resources===&lt;br /&gt;
[http://www.iphonelinux.org/img3.tar.gz cmw's IMG3 Unpacker]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=DFU_Mode&amp;diff=4289</id>
		<title>DFU Mode</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=DFU_Mode&amp;diff=4289"/>
		<updated>2009-07-16T22:26:10Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Revisions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''DFU''' or '''Device Firmware Upgrade''' mode allows the [[S5L8900]] and [[S5L8720]] to be restored from any state. It resides in the [[VROM]] and the [[S5L8900]] variant is vulnerable to the [[Pwnage 2.0]] exploit.&lt;br /&gt;
&lt;br /&gt;
==Entering / Exitting DFU==&lt;br /&gt;
Software cannot be used to reliably enter DFU. Software methods rely on sending a signed WTF file which either calls the &amp;quot;real&amp;quot; DFU mode in bootrom or emulates it. Only ones calling the bootrom DFU is useful for exploiting bootrom (unpatchable) exploits and none exist that work for firmware 2.0 and later. If you are attempting to exploit the DFU, it is advisable to always use the hardware method. If your NOR firmware is corrupted, of course you have no recourse but to use the hardware method.&lt;br /&gt;
&lt;br /&gt;
===How to Enter True Hardware DFU===&lt;br /&gt;
# Turn off the device.&lt;br /&gt;
# Hold Power and Home for 10 seconds&lt;br /&gt;
# Release Power, and keep holding Home&lt;br /&gt;
# Keep holding home for 4-8 seconds or until you are alerted by your computer that it has detected a device in DFU.&lt;br /&gt;
&lt;br /&gt;
If the Restore Logo is present on the screen, you are in ''[[Recovery Mode]]'', '''not''' ''DFU''.&lt;br /&gt;
&lt;br /&gt;
===Exiting DFU===&lt;br /&gt;
While in DFU, hold the power button for 30-60 seconds. When I have tested it, it has varied, so I don't know an exact length of time to hold it. Note that sometimes if you do this, when the device reboots from DFU, it will go into recovery mode for reasons unknown.&lt;br /&gt;
&lt;br /&gt;
Another way to exit DFU through software is by the use of [[iRecovery]]. Load iBSS, then iBoot, and send the &amp;quot;fsboot&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
==Revisions==&lt;br /&gt;
===[[S5L8900]] (0x1222)===&lt;br /&gt;
This is the device ID in the iPod Touch First Generation, the iPhone, and the iPhone 3G. For more information about the protocol, see [[DFU 0x1222]].&lt;br /&gt;
&lt;br /&gt;
===[[S5L8720 Bootrom|S5L8720]], [[S5L8920]], and [[WTF|WTF mode post-2.0]] (0x1227)===&lt;br /&gt;
This is the device ID in the [[iPod Touch 2G]], the [[iPhone 3Gs]], and [[WTF|WTF mode]]. For more information on the protocol, see [[DFU 0x1227]].&lt;br /&gt;
&lt;br /&gt;
[[Category:VROM]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Normal_Mode&amp;diff=4277</id>
		<title>Normal Mode</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Normal_Mode&amp;diff=4277"/>
		<updated>2009-07-16T17:01:26Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Device IDs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the protocol iTunes uses to talk to the booted iPhone. It uses usbmux to provide TCP like connectivity over a USB port using SSL. There is a pairing process iTunes uses to establish the secure channel.&lt;br /&gt;
&lt;br /&gt;
==Device IDs==&lt;br /&gt;
It appears that it uses different device IDs:&lt;br /&gt;
* [[iPhone]] - 0x1290&lt;br /&gt;
* [[iPod touch]] - 0x1291&lt;br /&gt;
* [[iPhone 3G]] - 0x1292&lt;br /&gt;
* [[iPod touch 2G]] - 0x1293&lt;br /&gt;
* [[iPhone 3Gs]] - 0x1294&lt;br /&gt;
* iPod touch 3G - 0x1295 (likely)&lt;br /&gt;
&lt;br /&gt;
==Patch: Disable SSL==&lt;br /&gt;
There is a way to disable SSL encyption during iTunes communication on jailbroken devices by patching lockdownd binary:&lt;br /&gt;
&lt;br /&gt;
:(#) Disable SSL protection&lt;br /&gt;
:(#) FW 2.1&lt;br /&gt;
:(#) binary /usr/libexec/lockdownd&lt;br /&gt;
:-0x1000&lt;br /&gt;
'''Offset''' 000112F8: 0C 30 98 E5 &amp;gt; 00 30 A0 E3 ; Conn.UseSSL = false&lt;br /&gt;
&lt;br /&gt;
After applying the patch all packets between iPhone and iTunes become plain and clear. Musthave for R&amp;amp;D ppl.&lt;br /&gt;
==USBMux Protocol==&lt;br /&gt;
&lt;br /&gt;
===Resources===&lt;br /&gt;
* [[MobileDevice Library]]&lt;br /&gt;
* [http://wikee.iphwn.org/usb:usbmux The dev team's page on the topic]&lt;br /&gt;
* [http://matt.colyer.name/projects/iphone-linux/index.php?title=Protocol_Documentation Protocol Documentation]&lt;br /&gt;
* [http://matt.colyer.name/projects/iphone-linux/index.php?title=Main_Page iFuse]&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocols (S5L)]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Disk_Image_Formats&amp;diff=4276</id>
		<title>Disk Image Formats</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Disk_Image_Formats&amp;diff=4276"/>
		<updated>2009-07-16T16:57:05Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;iPhone [[Firmware]] (ipsw) files contain three disk image (.dmg) files in addition to the img3 images for the [[NOR]] and on older models, unencrypted files for the [[Restore Process|restore process]]. The three disk images are the [[Update Ramdisk|update ramdisk]], the [[Restore Ramdisk|restore ramdisk]], and the main [[filesystem]].&lt;br /&gt;
&lt;br /&gt;
The main filesystem .dmg disk image (the largest .dmg file) is [[VFDecrypt_Keys|decrypted]] to an UDZO .dmg disk image.&lt;br /&gt;
&lt;br /&gt;
== UDZO Image Format ==&lt;br /&gt;
&lt;br /&gt;
The UDZO Image is an UDIF zlib-compressed read-only image which can be mounted on Mac OSX.&lt;br /&gt;
UDZO Images can be converted to read/write UDRW Images with [http://developer.apple.com/documentation/Darwin/Reference/Manpages/man1/hdiutil.1.html hdiutil] on Mac OSX:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;hdiutil convert -format UDRW udzo.dmg -o udrw.dmg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To add checksums of the data in the provided UDZO Image and store them in the image [http://developer.apple.com/documentation/Darwin/Reference/ManPages/man8/asr.8.html asr] on Mac OSX can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;asr -imagescan udzo.dmg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UDRW Image Format ==&lt;br /&gt;
&lt;br /&gt;
The UDRW Image is an UDIF read/write image which can be mounted on Mac OSX.&lt;br /&gt;
UDRW Images can be converted to zlib-compressed read-only UDZO Images with [http://developer.apple.com/documentation/Darwin/Reference/Manpages/man1/hdiutil.1.html hdiutil] on Mac OSX:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;hdiutil convert -format UDZO udrw.dmg -o udzo.dmg&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Timeline&amp;diff=4253</id>
		<title>Timeline</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Timeline&amp;diff=4253"/>
		<updated>2009-07-16T00:55:48Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* October */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==2009==&lt;br /&gt;
&lt;br /&gt;
===July===&lt;br /&gt;
* July 14 -- [[Geohot]] releases [[purplesn0w]], a software unlock for the [[iPhone 3GS]] using [[AT+XLOG Vulnerability|the same exploit as ultrasn0w]], but handled differently. Minutes later, an explanation and source code was posted.&lt;br /&gt;
* July 7 -- [[The dev team]] updates [[redsn0w]] and [[ultrasn0w]] to version 0.8, now with [[iPhone 3GS]] support. Saurik also updates Winterboard to support the [[iPhone 3GS]].&lt;br /&gt;
* July 3 -- [[Geohot]] releases [[purplera1n]], a software jailbreak for the [[iPhone 3GS]].&lt;br /&gt;
&lt;br /&gt;
===June===&lt;br /&gt;
* June 28 -- [[Geohot]] posts pictures on his blog of the first fully jailbroken [[iPhone 3GS]].&lt;br /&gt;
* June 25 -- It's discovered that [[iPhone 3GS]] is vulnerable to [[0x24000 Segment Overflow|24kpwn]] exploit.&lt;br /&gt;
* June 24 -- [[The dev team]] release [[ultrasn0w]] unlock for [[iPhone 3G]] thanks to [[AT+XLOG Vulnerability|a new exploit]] discovered by [[User:Oranav|Oranav]].&lt;br /&gt;
* June 23 -- [[Geohot]] announces he's found a new exploit in [[iBoot]] he calls purplera1n.&lt;br /&gt;
* June 19 -- Release of [[iPhone2,1|iPhone 3GS]] to the public.&lt;br /&gt;
* June 17 -- Release of firmware 3.0 to the public.&lt;br /&gt;
* June 8 -- Apple announces the [[iPhone2,1|iPhone 3GS]].&lt;br /&gt;
&lt;br /&gt;
===March===&lt;br /&gt;
* March 10 -- The [[0x24000 Segment Overflow|untethered jailbreak]] for the [[iPod touch 2G]] is released thanks to the combined work of chronic, CPICH, posixninja, pod2g, ius, planetbeing, MuscleNerd, and co.&lt;br /&gt;
&lt;br /&gt;
===January===&lt;br /&gt;
* January 31 -- [[The dev team]] released a &amp;quot;lite&amp;quot; version of [[RedSn0w]], a tethered jailbreak for the [[iPod touch 2G]].  It combines the [[ARM7 Go]] exploit with the well-established pwnage flow for other Apple mobile devices. It is bundled in a way that will allow usage on the 2.2.1 firmware.&lt;br /&gt;
&lt;br /&gt;
* January 25 -- [[0wnboot]] is released to chronicdev google code page, thanks to AriX, chronic, CPICH, westbaer, ius, pod2g, the rest of the iPod devel crew on IRC, and to the #iphone-hax lab rats. Within days, the AriX and the chronic dev team got a ramdisk booting for a tethered jailbreak.&lt;br /&gt;
&lt;br /&gt;
* January 17 -- [[The dev team]] [http://twitter.com/MuscleNerd/status/1127346766 shows a video demo] of the first jailbroken iPod Touch 2G.  This tethered jailbreak is released 2 weeks later.&lt;br /&gt;
&lt;br /&gt;
* January 16 -- [[ARM7 Go]] hole disclosed where else but here on The iPhone Wiki, for developers to poke and prod at&lt;br /&gt;
&lt;br /&gt;
* January 15 -- [[The dev team]]  [http://twitter.com/iphone_dev/status/1120595069 tweets the vfdecrypt key] for the [[iPod touch 2G]] 2.2 firmware, demonstrating for the first time that unsigned code can now be run on that device.&lt;br /&gt;
&lt;br /&gt;
* January 1 -- [[The dev team]] releases [[yellowsn0w]] 0.9 beta for baseband 02.28.00.&lt;br /&gt;
&lt;br /&gt;
==2008==&lt;br /&gt;
&lt;br /&gt;
===December===&lt;br /&gt;
* December 21 -- [[MuscleNerd]], of [[the dev team]] does a live demo of the 3G unlock, dubbed as 'yellowsn0w': http://qik.com/video/729275&lt;br /&gt;
&lt;br /&gt;
===August===&lt;br /&gt;
* August 18 -- [[The dev team]] releases [http://wikee.iphwn.org/news:pwnage20announcement QuickPwn], a 2.x [[pwnage]]/ramdisk combination exploit that allows jailbreaking without needing to create custom IPSWs.&lt;br /&gt;
&lt;br /&gt;
===July===&lt;br /&gt;
* July 22 -- [[TA_Mobile]] hardware dumps the 3G baseband (bootloader 5.8 &amp;amp; FW 1.45.00) by desoldering the [[NOR]].&lt;br /&gt;
* July 19 -- [[The dev team]] releases [[PwnageTool]] 2.0, jailbreaking and unlocking the 2.0 software on the iPhone 2G and jailbreaking the 2.0 software on the iPhone 3G.&lt;br /&gt;
* July 11 -- [[iPhone 3G]] is released.&lt;br /&gt;
&lt;br /&gt;
===June===&lt;br /&gt;
* June 9 - [[iPhone 3G]] is announced at [[WWDC]] '08.&lt;br /&gt;
&lt;br /&gt;
===April===&lt;br /&gt;
* April 3 -- Dev team releases [[PwnageTool]] 1.0, making use of the pmdx exploit (to patch RSA checks out of the [[kernel]], to write unsigned to [[NOR]])&lt;br /&gt;
&lt;br /&gt;
===March===&lt;br /&gt;
* March 12 -- Dev team releases dual-boot jailbreak method, only to be silently fixed in 2.0.&lt;br /&gt;
* March 4 -- [[User:N000b|George Zhu (n000b)]] releases [[ILiberty / ILiberty%2B]].&lt;br /&gt;
&lt;br /&gt;
===February===&lt;br /&gt;
* February 28 -- [[Cydia]] is released as an open-source alternative to Installer.app, and prepares to take over the jailbreak application scene upon 2.0's release.&lt;br /&gt;
* February 11 -- [[Zibri]] releases [[ZiPhone]], the first all-in-one unlock, activate, jailbreak solution.&lt;br /&gt;
* February 8 -- [[User:Geohot|geohot]] releases software unlock for 4.6, Apple states 25% of phones were never activated with AT&amp;amp;T.&lt;br /&gt;
&lt;br /&gt;
===January===&lt;br /&gt;
* January 28 -- Dev team releases soft upgrade jailbreak for 1.1.3.&lt;br /&gt;
* January 18 -- Geohot and his friends [http://iphonejtag.blogspot.com/2008/01/112-otb-unlocked.html unlocked 1.1.2 OTB 4.6 by test point], the unbeatable version at that time.&lt;br /&gt;
* January 18 -- Dev team posts YouTube video of a jailbroken 1.1.3, which was made possible by the dual boot jailbreak from bgm.&lt;br /&gt;
&lt;br /&gt;
== 2007 ==&lt;br /&gt;
===November===&lt;br /&gt;
* November 15 -- New baseband [[Bootloader 4.6|bootloader (4.6)]] comes out, new iPhones can't be unlocked.&lt;br /&gt;
* November 2 -- [[Jailbreakme]] is released, bringing jailbreaking to the mainstream iPhone user.&lt;br /&gt;
&lt;br /&gt;
===October===&lt;br /&gt;
* October 23 -- iPhone-Elite Team releases the [[Virginizer]].&lt;br /&gt;
* October 14 -- AriX releases iJailBreak, the first automated iPod touch jailbreak for the Mac.&lt;br /&gt;
* October 12 -- planetbeing releases touchFree, the first automated iPod touch jailbreak.&lt;br /&gt;
* October 10 -- niacin, cmw, and dre release the [[LibTiff]] exploit to jailbreak the iPod touch, which is later adapted for use in [[Jailbreakme]].&lt;br /&gt;
&lt;br /&gt;
===September===&lt;br /&gt;
* September 11 -- [[The dev team]] releases [[iUnlock]], first free software unlock.&lt;br /&gt;
* September 10 -- [[IPSF]] releases first paid software unlock.&lt;br /&gt;
* September 9 -- Apple announces the [[iPod touch]] at a media event.&lt;br /&gt;
&lt;br /&gt;
===August===&lt;br /&gt;
* August 23 -- [[User:Geohot|geohot]] and team release [[hardware unlock]] method.&lt;br /&gt;
* August 21 -- Installer.app is released by Nullriver, first GUI apps are distributed.&lt;br /&gt;
&lt;br /&gt;
===July===&lt;br /&gt;
* July 23 -- First phones are used with other carriers by means of [[SIM hacks]].&lt;br /&gt;
* July 20 -- nightwatch adapts a [[toolchain]] to the iPhone. The first apps are compiled.&lt;br /&gt;
* July 9 -- [[The dev team]] releases a [[jailbreak]] method. The first use of this is ringtones.&lt;br /&gt;
* July 3 -- DVD Jon first cracks [[activation]]. People can use the apps on the phone without a subscription.&lt;br /&gt;
&lt;br /&gt;
===June===&lt;br /&gt;
* June 29 -- [[iPhone]] is released. World's most hyped consumer product.&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=4252</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=4252"/>
		<updated>2009-07-16T00:54:53Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Exploits */ RIP purplera1n&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[iPhone]], [[N45ap|iPod touch]], and the [[iPhone 3G]]. Not much is known about it through official sources. This processor is not used in any of the current devices, being replaced by the [[S5L8720]] and [[S5L8920]].&lt;br /&gt;
&lt;br /&gt;
==Firmware File Formats==&lt;br /&gt;
See [[S5L File Formats|this page]] for more information on the types of firmware files it interprets&lt;br /&gt;
&lt;br /&gt;
==Exploits==&lt;br /&gt;
===[[System|Userland]]===&lt;br /&gt;
* [[Restore Mode]] - Firmware v1.0.2 and below&lt;br /&gt;
* [[symlinks|Symlinks]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[LibTiff|LibTIFF]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[Mknod]] - Firmware v1.1.2 and below&lt;br /&gt;
* [[Dual Boot Exploit]] - Firmware 1.1.4 / v2.0b3 and below&lt;br /&gt;
&lt;br /&gt;
===[[iBoot]] / [[Kernel]]===&lt;br /&gt;
* [[Ramdisk Hack|Ramdisk Exploit]] - Firmware v1.1.4 / v2.0b3 and below&lt;br /&gt;
* [[diags|Diags Exploit]] - Firmware v1.1.4 / v2.0b5 and below&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Firmware 3.1b2 and below&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot :&amp;lt;br&amp;gt;&lt;br /&gt;
[[VROM]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== Restore mode ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode|Restore]], also called [[Restore Mode|restore mode]].&lt;br /&gt;
&lt;br /&gt;
== DFU mode ==&lt;br /&gt;
See full article [[DFU|here]]. To flash an older version of the iPhone software you have to let your phone reside in [[DFU]]. In iTunes you have to press the Alt-Key (Mac) or the shift-key (Windows) when pressing 'Restore' to be able to manually chose an update file (ipsw file).&lt;br /&gt;
&lt;br /&gt;
=== Boot Chain ===&lt;br /&gt;
[[VROM]]--&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Timeline&amp;diff=4251</id>
		<title>Timeline</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Timeline&amp;diff=4251"/>
		<updated>2009-07-16T00:51:49Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* 2009 */ No one other than us (and the iPhone dev team) jailbroke it when we released 0wnboot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==2009==&lt;br /&gt;
&lt;br /&gt;
===July===&lt;br /&gt;
* July 14 -- [[Geohot]] releases [[purplesn0w]], a software unlock for the [[iPhone 3GS]] using [[AT+XLOG Vulnerability|the same exploit as ultrasn0w]], but handled differently. Minutes later, an explanation and source code was posted.&lt;br /&gt;
* July 7 -- [[The dev team]] updates [[redsn0w]] and [[ultrasn0w]] to version 0.8, now with [[iPhone 3GS]] support. Saurik also updates Winterboard to support the [[iPhone 3GS]].&lt;br /&gt;
* July 3 -- [[Geohot]] releases [[purplera1n]], a software jailbreak for the [[iPhone 3GS]].&lt;br /&gt;
&lt;br /&gt;
===June===&lt;br /&gt;
* June 28 -- [[Geohot]] posts pictures on his blog of the first fully jailbroken [[iPhone 3GS]].&lt;br /&gt;
* June 25 -- It's discovered that [[iPhone 3GS]] is vulnerable to [[0x24000 Segment Overflow|24kpwn]] exploit.&lt;br /&gt;
* June 24 -- [[The dev team]] release [[ultrasn0w]] unlock for [[iPhone 3G]] thanks to [[AT+XLOG Vulnerability|a new exploit]] discovered by [[User:Oranav|Oranav]].&lt;br /&gt;
* June 23 -- [[Geohot]] announces he's found a new exploit in [[iBoot]] he calls purplera1n.&lt;br /&gt;
* June 19 -- Release of [[iPhone2,1|iPhone 3GS]] to the public.&lt;br /&gt;
* June 17 -- Release of firmware 3.0 to the public.&lt;br /&gt;
* June 8 -- Apple announces the [[iPhone2,1|iPhone 3GS]].&lt;br /&gt;
&lt;br /&gt;
===March===&lt;br /&gt;
* March 10 -- The [[0x24000 Segment Overflow|untethered jailbreak]] for the [[iPod touch 2G]] is released thanks to the combined work of chronic, CPICH, posixninja, pod2g, ius, planetbeing, MuscleNerd, and co.&lt;br /&gt;
&lt;br /&gt;
===January===&lt;br /&gt;
* January 31 -- [[The dev team]] released a &amp;quot;lite&amp;quot; version of [[RedSn0w]], a tethered jailbreak for the [[iPod touch 2G]].  It combines the [[ARM7 Go]] exploit with the well-established pwnage flow for other Apple mobile devices. It is bundled in a way that will allow usage on the 2.2.1 firmware.&lt;br /&gt;
&lt;br /&gt;
* January 25 -- [[0wnboot]] is released to chronicdev google code page, thanks to AriX, chronic, CPICH, westbaer, ius, pod2g, the rest of the iPod devel crew on IRC, and to the #iphone-hax lab rats. Within days, the AriX and the chronic dev team got a ramdisk booting for a tethered jailbreak.&lt;br /&gt;
&lt;br /&gt;
* January 17 -- [[The dev team]] [http://twitter.com/MuscleNerd/status/1127346766 shows a video demo] of the first jailbroken iPod Touch 2G.  This tethered jailbreak is released 2 weeks later.&lt;br /&gt;
&lt;br /&gt;
* January 16 -- [[ARM7 Go]] hole disclosed where else but here on The iPhone Wiki, for developers to poke and prod at&lt;br /&gt;
&lt;br /&gt;
* January 15 -- [[The dev team]]  [http://twitter.com/iphone_dev/status/1120595069 tweets the vfdecrypt key] for the [[iPod touch 2G]] 2.2 firmware, demonstrating for the first time that unsigned code can now be run on that device.&lt;br /&gt;
&lt;br /&gt;
* January 1 -- [[The dev team]] releases [[yellowsn0w]] 0.9 beta for baseband 02.28.00.&lt;br /&gt;
&lt;br /&gt;
==2008==&lt;br /&gt;
&lt;br /&gt;
===December===&lt;br /&gt;
* December 21 -- [[MuscleNerd]], of [[the dev team]] does a live demo of the 3G unlock, dubbed as 'yellowsn0w': http://qik.com/video/729275&lt;br /&gt;
&lt;br /&gt;
===August===&lt;br /&gt;
* August 18 -- [[The dev team]] releases [http://wikee.iphwn.org/news:pwnage20announcement QuickPwn], a 2.x [[pwnage]]/ramdisk combination exploit that allows jailbreaking without needing to create custom IPSWs.&lt;br /&gt;
&lt;br /&gt;
===July===&lt;br /&gt;
* July 22 -- [[TA_Mobile]] hardware dumps the 3G baseband (bootloader 5.8 &amp;amp; FW 1.45.00) by desoldering the [[NOR]].&lt;br /&gt;
* July 19 -- [[The dev team]] releases [[PwnageTool]] 2.0, jailbreaking and unlocking the 2.0 software on the iPhone 2G and jailbreaking the 2.0 software on the iPhone 3G.&lt;br /&gt;
* July 11 -- [[iPhone 3G]] is released.&lt;br /&gt;
&lt;br /&gt;
===June===&lt;br /&gt;
* June 9 - [[iPhone 3G]] is announced at [[WWDC]] '08.&lt;br /&gt;
&lt;br /&gt;
===April===&lt;br /&gt;
* April 3 -- Dev team releases [[PwnageTool]] 1.0, making use of the pmdx exploit (to patch RSA checks out of the [[kernel]], to write unsigned to [[NOR]])&lt;br /&gt;
&lt;br /&gt;
===March===&lt;br /&gt;
* March 12 -- Dev team releases dual-boot jailbreak method, only to be silently fixed in 2.0.&lt;br /&gt;
* March 4 -- [[User:N000b|George Zhu (n000b)]] releases [[ILiberty / ILiberty%2B]].&lt;br /&gt;
&lt;br /&gt;
===February===&lt;br /&gt;
* February 28 -- [[Cydia]] is released as an open-source alternative to Installer.app, and prepares to take over the jailbreak application scene upon 2.0's release.&lt;br /&gt;
* February 11 -- [[Zibri]] releases [[ZiPhone]], the first all-in-one unlock, activate, jailbreak solution.&lt;br /&gt;
* February 8 -- [[User:Geohot|geohot]] releases software unlock for 4.6, Apple states 25% of phones were never activated with AT&amp;amp;T.&lt;br /&gt;
&lt;br /&gt;
===January===&lt;br /&gt;
* January 28 -- Dev team releases soft upgrade jailbreak for 1.1.3.&lt;br /&gt;
* January 18 -- Geohot and his friends [http://iphonejtag.blogspot.com/2008/01/112-otb-unlocked.html unlocked 1.1.2 OTB 4.6 by test point], the unbeatable version at that time.&lt;br /&gt;
* January 18 -- Dev team posts YouTube video of a jailbroken 1.1.3, which was made possible by the dual boot jailbreak from bgm.&lt;br /&gt;
&lt;br /&gt;
== 2007 ==&lt;br /&gt;
===November===&lt;br /&gt;
* November 15 -- New baseband [[Bootloader 4.6|bootloader (4.6)]] comes out, new iPhones can't be unlocked.&lt;br /&gt;
* November 2 -- [[Jailbreakme]] is released, bringing jailbreaking to the mainstream iPhone user.&lt;br /&gt;
&lt;br /&gt;
===October===&lt;br /&gt;
* October 23 -- iPhone-Elite Team releases the [[Virginizer]].&lt;br /&gt;
* October 14 -- AriX releases iJailBreak, the first automated iPod touch jailbreak for the Mac.&lt;br /&gt;
* October 12 -- planetbeing releases touchFree, the first automated iPod touch jailbreak.&lt;br /&gt;
* October 10 -- niacin, cmw, and dre release the [[TIFF exploit]] to jailbreak the iPod touch, which is later adapted for use in [[Jailbreakme]].&lt;br /&gt;
&lt;br /&gt;
===September===&lt;br /&gt;
* September 11 -- [[The dev team]] releases [[iUnlock]], first free software unlock.&lt;br /&gt;
* September 10 -- [[IPSF]] releases first paid software unlock.&lt;br /&gt;
* September 9 -- Apple announces the [[iPod touch]] at a media event.&lt;br /&gt;
&lt;br /&gt;
===August===&lt;br /&gt;
* August 23 -- [[User:Geohot|geohot]] and team release [[hardware unlock]] method.&lt;br /&gt;
* August 21 -- Installer.app is released by Nullriver, first GUI apps are distributed.&lt;br /&gt;
&lt;br /&gt;
===July===&lt;br /&gt;
* July 23 -- First phones are used with other carriers by means of [[SIM hacks]].&lt;br /&gt;
* July 20 -- nightwatch adapts a [[toolchain]] to the iPhone. The first apps are compiled.&lt;br /&gt;
* July 9 -- [[The dev team]] releases a [[jailbreak]] method. The first use of this is ringtones.&lt;br /&gt;
* July 3 -- DVD Jon first cracks [[activation]]. People can use the apps on the phone without a subscription.&lt;br /&gt;
&lt;br /&gt;
===June===&lt;br /&gt;
* June 29 -- [[iPhone]] is released. World's most hyped consumer product.&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Timeline&amp;diff=4250</id>
		<title>Timeline</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Timeline&amp;diff=4250"/>
		<updated>2009-07-16T00:49:51Z</updated>

		<summary type="html">&lt;p&gt;AriX: Adding some stuffz&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==2009==&lt;br /&gt;
&lt;br /&gt;
===July===&lt;br /&gt;
* July 14 -- [[Geohot]] releases [[purplesn0w]], a software unlock for the [[iPhone 3GS]] using [[AT+XLOG Vulnerability|the same exploit as ultrasn0w]], but handled differently. Minutes later, an explanation and source code was posted.&lt;br /&gt;
* July 7 -- [[The dev team]] updates [[redsn0w]] and [[ultrasn0w]] to version 0.8, now with [[iPhone 3GS]] support. Saurik also updates Winterboard to support the [[iPhone 3GS]].&lt;br /&gt;
* July 3 -- [[Geohot]] releases [[purplera1n]], a software jailbreak for the [[iPhone 3GS]].&lt;br /&gt;
&lt;br /&gt;
===June===&lt;br /&gt;
* June 28 -- [[Geohot]] posts pictures on his blog of the first fully jailbroken [[iPhone 3GS]].&lt;br /&gt;
* June 25 -- It's discovered that [[iPhone 3GS]] is vulnerable to [[0x24000 Segment Overflow|24kpwn]] exploit.&lt;br /&gt;
* June 24 -- [[The dev team]] release [[ultrasn0w]] unlock for [[iPhone 3G]] thanks to [[AT+XLOG Vulnerability|a new exploit]] discovered by [[User:Oranav|Oranav]].&lt;br /&gt;
* June 23 -- [[Geohot]] announces he's found a new exploit in [[iBoot]] he calls purplera1n.&lt;br /&gt;
* June 19 -- Release of [[iPhone2,1|iPhone 3GS]] to the public.&lt;br /&gt;
* June 17 -- Release of firmware 3.0 to the public.&lt;br /&gt;
* June 8 -- Apple announces the [[iPhone2,1|iPhone 3GS]].&lt;br /&gt;
&lt;br /&gt;
===March===&lt;br /&gt;
* March 10 -- The [[0x24000 Segment Overflow|untethered jailbreak]] for the [[iPod touch 2G]] is released thanks to the combined work of chronic, CPICH, posixninja, pod2g, ius, planetbeing, MuscleNerd, and co.&lt;br /&gt;
&lt;br /&gt;
===January===&lt;br /&gt;
* January 31 -- [[The dev team]] released a &amp;quot;lite&amp;quot; version of [[RedSn0w]], a tethered jailbreak for the [[iPod touch 2G]].  It combines the [[ARM7 Go]] exploit with the well-established pwnage flow for other Apple mobile devices. It is bundled in a way that will allow usage on the 2.2.1 firmware.&lt;br /&gt;
&lt;br /&gt;
* January 25 -- [[0wnboot]] is released to chronicdev google code page, thanks to AriX, chronic, CPICH, westbaer, ius, pod2g, the rest of the iPod devel crew on IRC, and to the #iphone-hax lab rats. In effect, within days AriX got a ramdisk booting and / or a pwnage bundle created and working.&lt;br /&gt;
&lt;br /&gt;
* January 17 -- [[The dev team]] [http://twitter.com/MuscleNerd/status/1127346766 shows a video demo] of the first jailbroken iPod Touch 2G.  This tethered jailbreak is released 2 weeks later.&lt;br /&gt;
&lt;br /&gt;
* January 16 -- [[ARM7 Go]] hole disclosed where else but here on The iPhone Wiki, for developers to poke and prod at&lt;br /&gt;
&lt;br /&gt;
* January 15 -- [[The dev team]]  [http://twitter.com/iphone_dev/status/1120595069 tweets the vfdecrypt key] for the [[iPod touch 2G]] 2.2 firmware, demonstrating for the first time that unsigned code can now be run on that device.&lt;br /&gt;
&lt;br /&gt;
* January 1 -- [[The dev team]] releases [[yellowsn0w]] 0.9 beta for baseband 02.28.00.&lt;br /&gt;
&lt;br /&gt;
==2008==&lt;br /&gt;
&lt;br /&gt;
===December===&lt;br /&gt;
* December 21 -- [[MuscleNerd]], of [[the dev team]] does a live demo of the 3G unlock, dubbed as 'yellowsn0w': http://qik.com/video/729275&lt;br /&gt;
&lt;br /&gt;
===August===&lt;br /&gt;
* August 18 -- [[The dev team]] releases [http://wikee.iphwn.org/news:pwnage20announcement QuickPwn], a 2.x [[pwnage]]/ramdisk combination exploit that allows jailbreaking without needing to create custom IPSWs.&lt;br /&gt;
&lt;br /&gt;
===July===&lt;br /&gt;
* July 22 -- [[TA_Mobile]] hardware dumps the 3G baseband (bootloader 5.8 &amp;amp; FW 1.45.00) by desoldering the [[NOR]].&lt;br /&gt;
* July 19 -- [[The dev team]] releases [[PwnageTool]] 2.0, jailbreaking and unlocking the 2.0 software on the iPhone 2G and jailbreaking the 2.0 software on the iPhone 3G.&lt;br /&gt;
* July 11 -- [[iPhone 3G]] is released.&lt;br /&gt;
&lt;br /&gt;
===June===&lt;br /&gt;
* June 9 - [[iPhone 3G]] is announced at [[WWDC]] '08.&lt;br /&gt;
&lt;br /&gt;
===April===&lt;br /&gt;
* April 3 -- Dev team releases [[PwnageTool]] 1.0, making use of the pmdx exploit (to patch RSA checks out of the [[kernel]], to write unsigned to [[NOR]])&lt;br /&gt;
&lt;br /&gt;
===March===&lt;br /&gt;
* March 12 -- Dev team releases dual-boot jailbreak method, only to be silently fixed in 2.0.&lt;br /&gt;
* March 4 -- [[User:N000b|George Zhu (n000b)]] releases [[ILiberty / ILiberty%2B]].&lt;br /&gt;
&lt;br /&gt;
===February===&lt;br /&gt;
* February 28 -- [[Cydia]] is released as an open-source alternative to Installer.app, and prepares to take over the jailbreak application scene upon 2.0's release.&lt;br /&gt;
* February 11 -- [[Zibri]] releases [[ZiPhone]], the first all-in-one unlock, activate, jailbreak solution.&lt;br /&gt;
* February 8 -- [[User:Geohot|geohot]] releases software unlock for 4.6, Apple states 25% of phones were never activated with AT&amp;amp;T.&lt;br /&gt;
&lt;br /&gt;
===January===&lt;br /&gt;
* January 28 -- Dev team releases soft upgrade jailbreak for 1.1.3.&lt;br /&gt;
* January 18 -- Geohot and his friends [http://iphonejtag.blogspot.com/2008/01/112-otb-unlocked.html unlocked 1.1.2 OTB 4.6 by test point], the unbeatable version at that time.&lt;br /&gt;
* January 18 -- Dev team posts YouTube video of a jailbroken 1.1.3, which was made possible by the dual boot jailbreak from bgm.&lt;br /&gt;
&lt;br /&gt;
== 2007 ==&lt;br /&gt;
===November===&lt;br /&gt;
* November 15 -- New baseband [[Bootloader 4.6|bootloader (4.6)]] comes out, new iPhones can't be unlocked.&lt;br /&gt;
* November 2 -- [[Jailbreakme]] is released, bringing jailbreaking to the mainstream iPhone user.&lt;br /&gt;
&lt;br /&gt;
===October===&lt;br /&gt;
* October 23 -- iPhone-Elite Team releases the [[Virginizer]].&lt;br /&gt;
* October 14 -- AriX releases iJailBreak, the first automated iPod touch jailbreak for the Mac.&lt;br /&gt;
* October 12 -- planetbeing releases touchFree, the first automated iPod touch jailbreak.&lt;br /&gt;
* October 10 -- niacin, cmw, and dre release the [[TIFF exploit]] to jailbreak the iPod touch, which is later adapted for use in [[Jailbreakme]].&lt;br /&gt;
&lt;br /&gt;
===September===&lt;br /&gt;
* September 11 -- [[The dev team]] releases [[iUnlock]], first free software unlock.&lt;br /&gt;
* September 10 -- [[IPSF]] releases first paid software unlock.&lt;br /&gt;
* September 9 -- Apple announces the [[iPod touch]] at a media event.&lt;br /&gt;
&lt;br /&gt;
===August===&lt;br /&gt;
* August 23 -- [[User:Geohot|geohot]] and team release [[hardware unlock]] method.&lt;br /&gt;
* August 21 -- Installer.app is released by Nullriver, first GUI apps are distributed.&lt;br /&gt;
&lt;br /&gt;
===July===&lt;br /&gt;
* July 23 -- First phones are used with other carriers by means of [[SIM hacks]].&lt;br /&gt;
* July 20 -- nightwatch adapts a [[toolchain]] to the iPhone. The first apps are compiled.&lt;br /&gt;
* July 9 -- [[The dev team]] releases a [[jailbreak]] method. The first use of this is ringtones.&lt;br /&gt;
* July 3 -- DVD Jon first cracks [[activation]]. People can use the apps on the phone without a subscription.&lt;br /&gt;
&lt;br /&gt;
===June===&lt;br /&gt;
* June 29 -- [[iPhone]] is released. World's most hyped consumer product.&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3449</id>
		<title>Decrypting Firmwares</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3449"/>
		<updated>2009-04-12T14:25:28Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* 1.1.x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==1.x==&lt;br /&gt;
If you want to decrypt 1.x iPhone ramdisk you must remove some trash from the beginning of them. You can do this in Terminal.app (on Mac OS X you can find them in /Applications/Utilities/).&lt;br /&gt;
&lt;br /&gt;
Unzip firmware image (change extension .ipsw to .zip and double click on archive) and find restore ramdisk. In Terminal.app enter simple command:&lt;br /&gt;
&lt;br /&gt;
''dd if=restore_ramdisk.dmg of=restore_ramdisk.stripped.dmg bs=512 skip=4 count=37464 conv=sync''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 1.0 iPhone firmware restore ramdisk is 694-5259-38.dmg), and '''restore_ramdisk.stripped.dmg''' is 'decrypted' image, that you can mount and explore from Finder.&lt;br /&gt;
&lt;br /&gt;
Note: If after mounting stripped ramdisk you see errors, ignore them.&lt;br /&gt;
&lt;br /&gt;
==1.1.x==&lt;br /&gt;
To decrypt the 1.1.x ramdisk, strip the first 0x800 bytes. I'm not proficient in dd, but the above command could be modified for this, or it could be done in a hex editor. Once that's complete, run this command:&lt;br /&gt;
&lt;br /&gt;
''openssl enc -d -in ramdisk.dmg -out de.dmg -aes-128-cbc -K 188458A6D15034DFE386F23B61D43774 -iv 0''&lt;br /&gt;
&lt;br /&gt;
This uses the iPhone's GID key which was first leaked by Zibri and had its purpose revealed on Geohot's blog.&lt;br /&gt;
&lt;br /&gt;
==2.x+==&lt;br /&gt;
The ramdisk on both 2.x and 3.x firmwares is a simple [http://www.theiphonewiki.com/wiki/index.php?title=IMG3_File_Format img3 file], that you can decrypt using [http://code.google.com/p/img3decrypt/ img3decrypt] or [http://github.com/planetbeing/xpwn/tree/master xpwntool]. You must download one of these utilities. For easier access, put them in '''/usr/local/bin'''&lt;br /&gt;
&lt;br /&gt;
In Terminal.app enter:&lt;br /&gt;
&lt;br /&gt;
''img3decrypt e restore_ramdisk.dmg restore_ramdisk_decrypted.dmg Ramdisk_IV Ramdisk_Key''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 3.0 beta 1 iPhone GSM firmware restore ramdisk is 018-4793-1.dmg), and r'''estore_ramdisk_decrypted.dmg''' is decrypted image, that you can mount and explore from Finder. Ramdisk_IV and Ramdisk_Key is a decrypted keys that you can find in [http://www.theiphonewiki.com/wiki/index.php?title=VFDecrypt_Keys:_3.x vfdecrypt page] or in Info.plist from PwnageTool FirmwareBundles folder (when Dev Team include support for this firmware).&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3448</id>
		<title>Decrypting Firmwares</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3448"/>
		<updated>2009-04-12T14:25:16Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==1.x==&lt;br /&gt;
If you want to decrypt 1.x iPhone ramdisk you must remove some trash from the beginning of them. You can do this in Terminal.app (on Mac OS X you can find them in /Applications/Utilities/).&lt;br /&gt;
&lt;br /&gt;
Unzip firmware image (change extension .ipsw to .zip and double click on archive) and find restore ramdisk. In Terminal.app enter simple command:&lt;br /&gt;
&lt;br /&gt;
''dd if=restore_ramdisk.dmg of=restore_ramdisk.stripped.dmg bs=512 skip=4 count=37464 conv=sync''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 1.0 iPhone firmware restore ramdisk is 694-5259-38.dmg), and '''restore_ramdisk.stripped.dmg''' is 'decrypted' image, that you can mount and explore from Finder.&lt;br /&gt;
&lt;br /&gt;
Note: If after mounting stripped ramdisk you see errors, ignore them.&lt;br /&gt;
&lt;br /&gt;
==1.1.x==&lt;br /&gt;
To decrypt the 1.1.x ramdisk, strip the first 0x800 bytes. I'm not proficient in dd, but the above command could be modified for this, or it could be done in a hex editor. Once that's complete, run this command:&lt;br /&gt;
''openssl enc -d -in ramdisk.dmg -out de.dmg -aes-128-cbc -K 188458A6D15034DFE386F23B61D43774 -iv 0''&lt;br /&gt;
&lt;br /&gt;
This uses the iPhone's GID key which was first leaked by Zibri and had its purpose revealed on Geohot's blog.&lt;br /&gt;
&lt;br /&gt;
==2.x+==&lt;br /&gt;
The ramdisk on both 2.x and 3.x firmwares is a simple [http://www.theiphonewiki.com/wiki/index.php?title=IMG3_File_Format img3 file], that you can decrypt using [http://code.google.com/p/img3decrypt/ img3decrypt] or [http://github.com/planetbeing/xpwn/tree/master xpwntool]. You must download one of these utilities. For easier access, put them in '''/usr/local/bin'''&lt;br /&gt;
&lt;br /&gt;
In Terminal.app enter:&lt;br /&gt;
&lt;br /&gt;
''img3decrypt e restore_ramdisk.dmg restore_ramdisk_decrypted.dmg Ramdisk_IV Ramdisk_Key''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 3.0 beta 1 iPhone GSM firmware restore ramdisk is 018-4793-1.dmg), and r'''estore_ramdisk_decrypted.dmg''' is decrypted image, that you can mount and explore from Finder. Ramdisk_IV and Ramdisk_Key is a decrypted keys that you can find in [http://www.theiphonewiki.com/wiki/index.php?title=VFDecrypt_Keys:_3.x vfdecrypt page] or in Info.plist from PwnageTool FirmwareBundles folder (when Dev Team include support for this firmware).&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3447</id>
		<title>Decrypting Firmwares</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3447"/>
		<updated>2009-04-12T14:24:58Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==1.x==&lt;br /&gt;
If you want to decrypt 1.x iPhone ramdisk you must remove some trash from the beginning of them. You can do this in Terminal.app (on Mac OS X you can find them in /Applications/Utilities/).&lt;br /&gt;
&lt;br /&gt;
Unzip firmware image (change extension .ipsw to .zip and double click on archive) and find restore ramdisk. In Terminal.app enter simple command:&lt;br /&gt;
&lt;br /&gt;
''dd if=restore_ramdisk.dmg of=restore_ramdisk.stripped.dmg bs=512 skip=4 count=37464 conv=sync''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 1.0 iPhone firmware restore ramdisk is 694-5259-38.dmg), and '''restore_ramdisk.stripped.dmg''' is 'decrypted' image, that you can mount and explore from Finder.&lt;br /&gt;
&lt;br /&gt;
Note: If after mounting stripped ramdisk you see errors, ignore them.&lt;br /&gt;
&lt;br /&gt;
==1.1.x==&lt;br /&gt;
To decrypt the 1.1.x ramdisk, strip the first 0x800 bytes. I'm not proficient in dd, but the above command could be modified for this, or it could be done in a hex editor. Once that's complete, run this command: openssl enc -d -in ramdisk.dmg -out de.dmg -aes-128-cbc -K 188458A6D15034DFE386F23B61D43774 -iv 0&lt;br /&gt;
&lt;br /&gt;
This uses the iPhone's GID key which was first leaked by Zibri and had its purpose revealed on Geohot's blog.&lt;br /&gt;
&lt;br /&gt;
==2.x+==&lt;br /&gt;
The ramdisk on both 2.x and 3.x firmwares is a simple [http://www.theiphonewiki.com/wiki/index.php?title=IMG3_File_Format img3 file], that you can decrypt using [http://code.google.com/p/img3decrypt/ img3decrypt] or [http://github.com/planetbeing/xpwn/tree/master xpwntool]. You must download one of these utilities. For easier access, put them in '''/usr/local/bin'''&lt;br /&gt;
&lt;br /&gt;
In Terminal.app enter:&lt;br /&gt;
&lt;br /&gt;
''img3decrypt e restore_ramdisk.dmg restore_ramdisk_decrypted.dmg Ramdisk_IV Ramdisk_Key''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 3.0 beta 1 iPhone GSM firmware restore ramdisk is 018-4793-1.dmg), and r'''estore_ramdisk_decrypted.dmg''' is decrypted image, that you can mount and explore from Finder. Ramdisk_IV and Ramdisk_Key is a decrypted keys that you can find in [http://www.theiphonewiki.com/wiki/index.php?title=VFDecrypt_Keys:_3.x vfdecrypt page] or in Info.plist from PwnageTool FirmwareBundles folder (when Dev Team include support for this firmware).&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Ramdisk&amp;diff=3446</id>
		<title>Ramdisk</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Ramdisk&amp;diff=3446"/>
		<updated>2009-04-12T14:18:14Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is what iTunes boots to upgrade the [[System|OS]] and the [[NOR]], and in the case of the [[iPhone]], it upgrades the [[Baseband Device|Baseband]].&lt;br /&gt;
&lt;br /&gt;
It is signed, but if you have administered the [[Pwnage]] hack, you can load modified ones.&lt;br /&gt;
&lt;br /&gt;
There are two types of ramdisks. They are very similar, and both are located in the IPSW. There is a [[Restore Ramdisk]] and an [[Update Ramdisk]]. To decrypt the ramdisks, follow the instructions on the [[Ramdisk Decryption]] page.&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3444</id>
		<title>Decrypting Firmwares</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3444"/>
		<updated>2009-04-12T14:15:37Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==1.x==&lt;br /&gt;
If you want to decrypt 1.x iPhone ramdisk you must remove some trash from the beginning of them. You can do this in Terminal.app (on Mac OS X you can find them in /Applications/Utilities/).&lt;br /&gt;
&lt;br /&gt;
Unzip firmware image (change extension .ipsw to .zip and double click on archive) and find restore ramdisk. In Terminal.app enter simple command:&lt;br /&gt;
&lt;br /&gt;
''dd if=restore_ramdisk.dmg of=restore_ramdisk.stripped.dmg bs=512 skip=4 count=37464 conv=sync''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 1.0 iPhone firmware restore ramdisk is 694-5259-38.dmg), and '''restore_ramdisk.stripped.dmg''' is 'decrypted' image, that you can mount and explore from Finder.&lt;br /&gt;
&lt;br /&gt;
Note: If after mounting stripped ramdisk you see errors, ignore them.&lt;br /&gt;
&lt;br /&gt;
==2.x+==&lt;br /&gt;
The ramdisk on both 2.x and 3.x firmwares is a simple [http://www.theiphonewiki.com/wiki/index.php?title=IMG3_File_Format img3 file], that you can decrypt using [http://code.google.com/p/img3decrypt/ img3decrypt] or [http://github.com/planetbeing/xpwn/tree/master xpwntool]. You must download one of these utilities. For easier access, put them in '''/usr/local/bin'''&lt;br /&gt;
&lt;br /&gt;
In Terminal.app enter:&lt;br /&gt;
&lt;br /&gt;
''img3decrypt e restore_ramdisk.dmg restore_ramdisk_decrypted.dmg Ramdisk_IV Ramdisk_Key''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 3.0 beta 1 iPhone GSM firmware restore ramdisk is 018-4793-1.dmg), and r'''estore_ramdisk_decrypted.dmg''' is decrypted image, that you can mount and explore from Finder. Ramdisk_IV and Ramdisk_Key is a decrypted keys that you can find in [http://www.theiphonewiki.com/wiki/index.php?title=VFDecrypt_Keys:_3.x vfdecrypt page] or in Info.plist from PwnageTool FirmwareBundles folder (when Dev Team include support for this firmware).&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3441</id>
		<title>Decrypting Firmwares</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3441"/>
		<updated>2009-04-12T14:11:48Z</updated>

		<summary type="html">&lt;p&gt;AriX: 3.x firmware moved to Ramdisk Decryption: Why do we need 3 of these pages??&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ramdisk on 3.x firmware (currently beta release) is a simple [http://www.theiphonewiki.com/wiki/index.php?title=IMG3_File_Format img3 file], that you can decrypt using [http://code.google.com/p/img3decrypt/ img3decrypt] or [http://github.com/planetbeing/xpwn/tree/master xpwntool]. So you must download one of these utilities. For easier access, put them in '''/usr/local/bin'''&lt;br /&gt;
&lt;br /&gt;
In Terminal.app enter:&lt;br /&gt;
&lt;br /&gt;
''img3decrypt e restore_ramdisk.dmg restore_ramdisk_decrypted.dmg Ramdisk_IV Ramdisk_Key''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 3.0 beta 1 iPhone GSM firmware restore ramdisk is 018-4793-1.dmg), and r'''estore_ramdisk_decrypted.dmg''' is decrypted image, that you can mount and explore from Finder. Ramdisk_IV and Ramdisk_Key is a decrypted keys that you can find in [http://www.theiphonewiki.com/wiki/index.php?title=VFDecrypt_Keys:_3.x vfdecrypt page] or in Info.plist from PwnageTool FirmwareBundles folder (when Dev Team include support for this firmware).&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3440</id>
		<title>Decrypting Firmwares</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3440"/>
		<updated>2009-04-12T14:10:02Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ramdisk on 3.x firmware (currently beta release) is a simple [http://www.theiphonewiki.com/wiki/index.php?title=IMG3_File_Format img3 file], that you can decrypt using [http://code.google.com/p/img3decrypt/ img3decrypt] or [http://github.com/planetbeing/xpwn/tree/master xpwntool]. So you must download one of these utilities. For easier access, put them in '''/usr/local/bin'''&lt;br /&gt;
&lt;br /&gt;
In Terminal.app enter:&lt;br /&gt;
&lt;br /&gt;
''img3decrypt e restore_ramdisk.dmg restore_ramdisk_decrypted.dmg Ramdisk_IV Ramdisk_Key''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 3.0 beta 1 iPhone GSM firmware restore ramdisk is 018-4793-1.dmg), and r'''estore_ramdisk_decrypted.dmg''' is decrypted image, that you can mount and explore from Finder. Ramdisk_IV and Ramdisk_Key is a decrypted keys that you can find in [http://www.theiphonewiki.com/wiki/index.php?title=VFDecrypt_Keys:_3.x vfdecrypt page] or in Info.plist from PwnageTool FirmwareBundles folder (when Dev Team include support for this firmware).&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3439</id>
		<title>Decrypting Firmwares</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Decrypting_Firmwares&amp;diff=3439"/>
		<updated>2009-04-12T14:09:19Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ramdisk on 3.x firmware (currently beta release) is a simple [http://www.theiphonewiki.com/wiki/index.php?title=IMG3_File_Format img3 file], that you can decrypt using [http://code.google.com/p/img3decrypt/ img3decrypt] or [http://github.com/planetbeing/xpwn/tree/master xpwntool]. So you must download this utility. For easier access, put them in '''/usr/local/bin'''&lt;br /&gt;
&lt;br /&gt;
In Terminal.app enter:&lt;br /&gt;
&lt;br /&gt;
''img3decrypt e restore_ramdisk.dmg restore_ramdisk_decrypted.dmg Ramdisk_IV Ramdisk_Key''&lt;br /&gt;
&lt;br /&gt;
Where '''restore_ramdisk.dmg''' is image of restore ramdisk (for example 3.0 beta 1 iPhone GSM firmware restore ramdisk is 018-4793-1.dmg), and r'''estore_ramdisk_decrypted.dmg''' is decrypted image, that you can mount and explore from Finder. Ramdisk_IV and Ramdisk_Key is a decrypted keys that you can find in [http://www.theiphonewiki.com/wiki/index.php?title=VFDecrypt_Keys:_3.x vfdecrypt page] or in Info.plist from PwnageTool FirmwareBundles folder (when Dev Team include support for this firmware).&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=IPhone_Dev_Team&amp;diff=3362</id>
		<title>IPhone Dev Team</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=IPhone_Dev_Team&amp;diff=3362"/>
		<updated>2009-04-08T01:39:52Z</updated>

		<summary type="html">&lt;p&gt;AriX: The dev team moved to IPhone Dev Team: This is not the only dev team that exists in this field anymore.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Blog==&lt;br /&gt;
[http://blog.iphone-dev.org Dev Team blog]&lt;br /&gt;
&lt;br /&gt;
==Current members== &lt;br /&gt;
asap18, bgm, Bugout, bushing, c1de0x, chris, dinopio, drudge, Fred_, ghost_000, gray, iZsh, jim–, MuscleNerd, netkas, np101137, penisbird, planetbeing, pr3d4t0r, pumpkin, pytey, roxfan, saurik, Turbo, w___, wizdaz, Zf&lt;br /&gt;
&lt;br /&gt;
==Previous Members==&lt;br /&gt;
[[geohot]], gj, kroo, Nate True, NerveGas, sam, Whiterat, [[Zibri]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[PwnageTool]]&lt;br /&gt;
* [[pwnage]]&lt;br /&gt;
* [[pwnage 2.0]]&lt;br /&gt;
* [[yellowsn0w]]&lt;br /&gt;
* [[redsn0w]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:IPhone_Dev_Team&amp;diff=3364</id>
		<title>Talk:IPhone Dev Team</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:IPhone_Dev_Team&amp;diff=3364"/>
		<updated>2009-04-08T01:39:52Z</updated>

		<summary type="html">&lt;p&gt;AriX: Talk:The dev team moved to Talk:IPhone Dev Team: This is not the only dev team that exists in this field anymore.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I know about the rest of them, but does anyone have any idea why kroo was kicked out? My guess is that he leaked the DFU/iBoot exploit to geohot..&lt;br /&gt;
&lt;br /&gt;
== Sam ==&lt;br /&gt;
&lt;br /&gt;
chronic seems to think that sam is no longer on the devteam, however on hackint0sh his tag still says 'iPhone Dev Team' and in this post (http://hackint0sh.org/forum/showthread.php?t=61327) he speaks as one of the devteam.&lt;br /&gt;
&lt;br /&gt;
Can anyone provide anymore insight on Sam..is he still on the devteam or not?&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=3361</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=3361"/>
		<updated>2009-04-07T14:52:36Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* iBoot / Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[iPhone]], [[N45ap|iPod touch]], and the [[iPhone 3G]]. Not much is known about it through official sources.&lt;br /&gt;
&lt;br /&gt;
==Firmware File Formats==&lt;br /&gt;
See [[S5L File Formats|this page]] for more information on the types of firmware files it interprets&lt;br /&gt;
&lt;br /&gt;
==Exploits==&lt;br /&gt;
===Userland===&lt;br /&gt;
* [[Restore Mode]] - Firmware v1.0.2 and below&lt;br /&gt;
* [[symlinks|Symlinks]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[LibTiff|LibTIFF]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[Mknod]] - Firmware v1.1.2 and below&lt;br /&gt;
&lt;br /&gt;
===[[iBoot]] / [[Kernel]]===&lt;br /&gt;
* [[Ramdisk Hack|Ramdisk Exploit]] - Firmware v1.1.4/v2.0b3 and below&lt;br /&gt;
* [[diags|Diags Exploit]] - Firmware v1.1.4/v2.0b5 and below&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot :&amp;lt;br&amp;gt;&lt;br /&gt;
[[VROM]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== Restore mode ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode|Restore]], also called [[Restore Mode|restore mode]].&lt;br /&gt;
&lt;br /&gt;
== DFU mode ==&lt;br /&gt;
See full article [[DFU|here]]. To flash an older version of the iPhone software you have to let your phone reside in [[DFU]]. In iTunes you have to press the Alt-Key (Mac) or the shift-key (Windows) when pressing 'Restore' to be able to manually chose an update file (ipsw file).&lt;br /&gt;
&lt;br /&gt;
=== Boot Chain ===&lt;br /&gt;
[[VROM]]--&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=3360</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=3360"/>
		<updated>2009-04-07T14:52:27Z</updated>

		<summary type="html">&lt;p&gt;AriX: Most people don't have 2.0 beta builds, so I added release build information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[iPhone]], [[N45ap|iPod touch]], and the [[iPhone 3G]]. Not much is known about it through official sources.&lt;br /&gt;
&lt;br /&gt;
==Firmware File Formats==&lt;br /&gt;
See [[S5L File Formats|this page]] for more information on the types of firmware files it interprets&lt;br /&gt;
&lt;br /&gt;
==Exploits==&lt;br /&gt;
===Userland===&lt;br /&gt;
* [[Restore Mode]] - Firmware v1.0.2 and below&lt;br /&gt;
* [[symlinks|Symlinks]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[LibTiff|LibTIFF]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[Mknod]] - Firmware v1.1.2 and below&lt;br /&gt;
&lt;br /&gt;
===[[iBoot]] / [[Kernel]]===&lt;br /&gt;
* [[Ramdisk Hack|Ramdisk Exploit]] - Firmware v1.1.4/v2.0b3 and below&lt;br /&gt;
* [[diags|Diags Exploit]] - Firmware v1.1.4/2.0b5 and below&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot :&amp;lt;br&amp;gt;&lt;br /&gt;
[[VROM]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== Restore mode ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode|Restore]], also called [[Restore Mode|restore mode]].&lt;br /&gt;
&lt;br /&gt;
== DFU mode ==&lt;br /&gt;
See full article [[DFU|here]]. To flash an older version of the iPhone software you have to let your phone reside in [[DFU]]. In iTunes you have to press the Alt-Key (Mac) or the shift-key (Windows) when pressing 'Restore' to be able to manually chose an update file (ipsw file).&lt;br /&gt;
&lt;br /&gt;
=== Boot Chain ===&lt;br /&gt;
[[VROM]]--&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Mknod&amp;diff=3359</id>
		<title>Mknod</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Mknod&amp;diff=3359"/>
		<updated>2009-04-07T14:49:13Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This exploit, also known as OktoPrep, after the name of the package used to prepare it, was the standard 1.1.2 jailbreak. Like [[Symlinks]] and [[Soft Upgrade]], this was an update jailbreak that required the user to upgrade from an older to a newer version of the OS to achieve the jailbreak. Essentially, the user would jailbreak 1.1.1 through the [[LibTiff|TIFF]] exploit, install the OktoPrep package in Installer, and update to 1.1.2 in iTunes, and use the iPhone Dev Team's jailbreak utility, written by planetbeing. The OktoPrep package created a node for the operating system, essentially copying /dev/rdisk0s1 to /private/var/root/Media/rdisk0s1. Since the 1.1.2 ramdisk did not check for this, it would remain in 1.1.2, and the operating system could be downloaded, jailbroken, and re-uploaded through iPHUC, similar to the symlink and TIFF exploits. The most popular method of TIFF jailbreak, jailbreakme.com, later updated their payload to automatically apply OktoPrep for easier 1.1.2 jailbreaking. This was in response to complaints about how long it took to jailbreak 1.1.3, which originally had to be jailbroken through a long process involving jailbreaking 1.1.1, moving on to 1.1.2, and finally upgrading to 1.1.3.&lt;br /&gt;
&lt;br /&gt;
This exploit was closed in 1.1.3 when /etc/fstab was changed so that /private/var was mounted with the 'nodev' flag in addition to the others.&lt;br /&gt;
&lt;br /&gt;
[[Category:Jailbreaks]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Mknod&amp;diff=3358</id>
		<title>Mknod</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Mknod&amp;diff=3358"/>
		<updated>2009-04-07T14:48:11Z</updated>

		<summary type="html">&lt;p&gt;AriX: 1.1.2 jailbreak. Mknod, or OktoPrep. The disk was NOT symlinked, as suggested in the original symlink article, it was created with the mknod command.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This exploit, also known as OktoPrep, after the name of the package used to prepare it, was the standard 1.1.2 jailbreak. Like [[Symlinks]] and [[Soft Upgrade]], this was an update jailbreak that required the user to upgrade from an older to a newer version of the OS to achieve the jailbreak. Essentially, the user would jailbreak 1.1.1 through the [[LibTiff|TIFF]] exploit, install the OktoPrep package in Installer, and update to 1.1.2 in iTunes, and use the iPhone Dev Team's jailbreak utility, written by planetbeing. The OktoPrep package created a node for the operating system, essentially copying /dev/rdisk0s1 to /private/var/root/Media/rdisk0s1. Since the 1.1.2 ramdisk did not check for this, it would remain in 1.1.2, and the operating system could be downloaded, jailbroken, and re-uploaded through iPHUC, similar to the symlink] and TIFF exploits. The most popular method of TIFF jailbreak, jailbreakme.com, later updated their payload to automatically apply OktoPrep for easier 1.1.2 jailbreaking. This was in response to complaints about how long it took to jailbreak 1.1.3, which originally had to be jailbroken through a long process involving jailbreaking 1.1.1, moving on to 1.1.2, and finally upgrading to 1.1.3.&lt;br /&gt;
&lt;br /&gt;
This exploit was closed in 1.1.3 when /etc/fstab was changed so that /private/var was mounted with the 'nodev' flag in addition to the others.&lt;br /&gt;
&lt;br /&gt;
[[Category:Jailbreaks]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=3357</id>
		<title>S5L8900</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8900&amp;diff=3357"/>
		<updated>2009-04-07T14:41:40Z</updated>

		<summary type="html">&lt;p&gt;AriX: /* Exploits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Application Processor shared between the [[iPhone]], [[N45ap|iPod touch]], and the [[iPhone 3G]]. Not much is known about it through official sources.&lt;br /&gt;
&lt;br /&gt;
==Firmware File Formats==&lt;br /&gt;
See [[S5L File Formats|this page]] for more information on the types of firmware files it interprets&lt;br /&gt;
&lt;br /&gt;
==Exploits==&lt;br /&gt;
===Userland===&lt;br /&gt;
* [[Restore Mode]] - Firmware v1.0.2 and below&lt;br /&gt;
* [[symlinks|Symlinks]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[LibTiff|LibTIFF]] - Firmware v1.1.1 and below&lt;br /&gt;
* [[Mknod]] - Firmware v1.1.2 and below&lt;br /&gt;
&lt;br /&gt;
===[[iBoot]] / [[Kernel]]===&lt;br /&gt;
* [[Ramdisk Hack|Ramdisk Exploit]] - Firmware v2.0b3 and below&lt;br /&gt;
* [[diags|Diags Exploit]] - Firmware 2.0b5 and below&lt;br /&gt;
&lt;br /&gt;
===[[VROM (S5L8900)|Bootrom]]===&lt;br /&gt;
* [[pwnage|Pwnage 1.0 (Ramdisk + AppleImage2NORAccess)]]&lt;br /&gt;
* [[pwnage 2.0|Pwnage 2.0 (DFU + Malformed Certificate)]]&lt;br /&gt;
&lt;br /&gt;
==Boot Chain==&lt;br /&gt;
[[VROM]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[System|System Software]]&lt;br /&gt;
&lt;br /&gt;
One of the [[iPhoneLinux]] goals are to replace that Boot Chain after iBoot :&amp;lt;br&amp;gt;&lt;br /&gt;
[[VROM]]-&amp;gt;OpeniBoot-&amp;gt;Linux Kernel-&amp;gt;X Server-&amp;gt;Window Manager&lt;br /&gt;
&lt;br /&gt;
==Upgrade Process==&lt;br /&gt;
&lt;br /&gt;
=== Restore mode ===&lt;br /&gt;
The common upgrade process chain is [[VROM]]-&amp;gt;[[DFU]]-&amp;gt;[[WTF]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Ramdisk]]-&amp;gt;[[Restore Mode|Restore]], also called [[Restore Mode|restore mode]].&lt;br /&gt;
&lt;br /&gt;
== DFU mode ==&lt;br /&gt;
See full article [[DFU|here]]. To flash an older version of the iPhone software you have to let your phone reside in [[DFU]]. In iTunes you have to press the Alt-Key (Mac) or the shift-key (Windows) when pressing 'Restore' to be able to manually chose an update file (ipsw file).&lt;br /&gt;
&lt;br /&gt;
=== Boot Chain ===&lt;br /&gt;
[[VROM]]--&amp;gt;[[DFU]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Symlinks&amp;diff=3353</id>
		<title>Symlinks</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Symlinks&amp;diff=3353"/>
		<updated>2009-04-07T14:30:02Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before the discovery of the [[LibTiff]], this was used on 1.1.1 to jailbreak iPhones from 1.0.2. However, this only worked for iPhones, as the new iPod touch could not run 1.0.2 and therefore could not use this jailbreak method. The symlink method involved symlinking /private/var/root/Media, the &amp;quot;jailed&amp;quot; directory that could be accessed via iPHUC, to /, and then downloading, jailbreaking, and reuploading the entire system partition from /dev/rdisk0s1.&lt;br /&gt;
&lt;br /&gt;
This exploit was fixed in 1.1.2, when Apple introduced a check in the update ramdisk that prevented this from happening. Note that this is not the 1.1.2 [[mknod]] exploit. &lt;br /&gt;
&lt;br /&gt;
[[Category:Jailbreaks]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Symlinks&amp;diff=3352</id>
		<title>Symlinks</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Symlinks&amp;diff=3352"/>
		<updated>2009-04-07T14:29:47Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before the discovery of the [[LibTiff]], this was used on 1.1.1 to jailbreak iPhones from 1.0.2. However, this only worked for iPhones, as the new iPod touch could not run 1.0.2 and therefore could not use this jailbreak method. The symlink method involved symlinking /private/var/root/Media, the &amp;quot;jail directory&amp;quot; that could be accessed via iPHUC, to /, and then downloading, jailbreaking, and reuploading the entire system partition from /dev/rdisk0s1.&lt;br /&gt;
&lt;br /&gt;
This exploit was fixed in 1.1.2, when Apple introduced a check in the update ramdisk that prevented this from happening. Note that this is not the 1.1.2 [[mknod]] exploit. &lt;br /&gt;
&lt;br /&gt;
[[Category:Jailbreaks]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Symlinks&amp;diff=3351</id>
		<title>Symlinks</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Symlinks&amp;diff=3351"/>
		<updated>2009-04-07T14:22:20Z</updated>

		<summary type="html">&lt;p&gt;AriX: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before the discovery of the [[LibTiff]], this was used on 1.1.1 to jailbreak iPhones from 1.0.2. However, this only worked for iPhones, as the new iPod touch could not run 1.0.2 and therefore could not use this jailbreak method. The symlink method involved symlinking /private/var/root/Media, the directory that the AFC protocol can access access, to /, and then downloading, jailbreaking, and reuploading the entire system partition from /dev/rdisk0s1.&lt;br /&gt;
&lt;br /&gt;
This exploit was fixed in 1.1.2, when Apple introduced a check in the update ramdisk that prevented this from happening. Note that this is not the 1.1.2 [[mknod]] exploit. &lt;br /&gt;
&lt;br /&gt;
[[Category:Jailbreaks]]&lt;/div&gt;</summary>
		<author><name>AriX</name></author>
		
	</entry>
</feed>