<?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=Iemit737</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=Iemit737"/>
	<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/wiki/Special:Contributions/Iemit737"/>
	<updated>2026-05-16T05:20:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Leftover_Strings&amp;diff=38702</id>
		<title>Leftover Strings</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Leftover_Strings&amp;diff=38702"/>
		<updated>2014-01-13T08:37:44Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: MobileGestalt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apple likes to leave various strings throughout its binaries and libraries in [[iOS]]. You can find them by running &amp;lt;code&amp;gt;strings &amp;lt;binary name&amp;gt;&amp;lt;/code&amp;gt; on OS X. Some of the more interesting/entertaining ones are posted here.&lt;br /&gt;
&lt;br /&gt;
==BackupAgent==&lt;br /&gt;
 Dealing with a 5.0-5.2 inner manifest. Mistakes were made, but we're going to do our best to recover&lt;br /&gt;
 Refusing to backup with a 5.0-5.2 inner manifest. You're going to have to throw this out and do it over again, buddy.&lt;br /&gt;
 *** REFUSING TO BACKUP USING OLD BACKUP SERVICE. INSTALL THE IPHONE SDK 4.0. ***&lt;br /&gt;
 The safe harbor data for %@ has overstayed its welcome (%@). Mothballing it&lt;br /&gt;
 We were handed an encrypted backup but we don't have a password. Throwing out this manifest and creating a fresh, unencrypted one&lt;br /&gt;
 Backup request received from a new backup protocol version. Let's do the versioning dance. Our version: %@&lt;br /&gt;
 Talking to an old version. Jumping straight to the action and sending files&lt;br /&gt;
 Ok, that was fun. Really beginning the backup.&lt;br /&gt;
 Could not flock the restore running file at %@. This restore may be a bit bumpy...&lt;br /&gt;
 Looks like this is a magic restore. We'll be keeping all your settings intact for this one...&lt;br /&gt;
 Thanks for the Memories&lt;br /&gt;
 %s is being feisty. Sending it a SIGKILL&lt;br /&gt;
 %s decided it didn't want to play well with others and refused to exit. We're going to continue with the backup/restore anyway and hope for the best.&lt;br /&gt;
 No help is available for BackupAgent at this time. You probably don't need to pass any arguments anyway.&lt;br /&gt;
 Could not get the mobile user's passwd struct. We'll try %@ just in case, but things will probably go downhill from here.&lt;br /&gt;
&lt;br /&gt;
==[[Kernelcache]]==&lt;br /&gt;
===2.1.1===&lt;br /&gt;
They like to say &amp;quot;WTF?&amp;quot; in here. The context doesn't exactly suggest they're referring to [[WTF]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[%u.%09u] : %s:%s(): Chip Failure, Smacking WiFi chip! (count = %lu / %lu)&lt;br /&gt;
%s: WTF?  Timer handler expired and there is no pending command&lt;br /&gt;
%s::%s(): super failed to init!&lt;br /&gt;
%s::%s(): WTF?  The beacon list is NULL&lt;br /&gt;
%s::%s(): WTF?  Got a BRCM packet but an OUI/SUBTYPE mismatch&lt;br /&gt;
%s::%s(): WTF?? Got an event packet!!!&lt;br /&gt;
%s::%s(): ACK, there are outstanding commands to process!!!&lt;br /&gt;
%s::%s(): WTF, the command wasn't sent, nothing is safe now!&lt;br /&gt;
%s::%s(): WTF, there is no pending command&lt;br /&gt;
%s::%s(): WTF, the pending command hasn't been sent&lt;br /&gt;
%s::%s(): ACK, no free commands left!!!!&lt;br /&gt;
AppleMRVL868x: super failed to init!&lt;br /&gt;
%s::%s(): Command (%s) Timeout! - invoking hand of god&lt;br /&gt;
AppleMRVL868x: WTF?  Our Provider isn't an IOSDIOIoCardDevice?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.0===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AppleUSBEthernetDevice::%s: super failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===IOP Firmware===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
console is dead, Jim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Keybagd==&lt;br /&gt;
===4.1===&lt;br /&gt;
 Can't load the keybag. tears in rain... Time to die&lt;br /&gt;
 Oh No! Kernel doesn't like this keybag:0x%08x. System is probably lost.&lt;br /&gt;
 Huh? can't load the bag. That makes no sense&lt;br /&gt;
 Doh! Can't rename %s to %s: %s&lt;br /&gt;
 Gah! Can't remove %s: %s&lt;br /&gt;
 Out of Memory!!! Dying!...so...cold....&lt;br /&gt;
&lt;br /&gt;
==[[installd]]==&lt;br /&gt;
===4.3.5===&lt;br /&gt;
 Out of Memory!!! Dying!...so...cold....&lt;br /&gt;
 Weird. Can't determine my device class&lt;br /&gt;
 Weird- can't find identifier for removal&lt;br /&gt;
 Uh, prisoner %s got away!?&lt;br /&gt;
 walk_the_green_mile&lt;br /&gt;
&lt;br /&gt;
==[[lockdownd]]==&lt;br /&gt;
===4.0===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Really!? Can't determine the device name!? Really!?&lt;br /&gt;
Invalid ack! Ack. Ack. Ack.&lt;br /&gt;
fetch_me_brains&lt;br /&gt;
OkilyDokily&lt;br /&gt;
Wakey Wakey Buddy!&lt;br /&gt;
HOWDY&lt;br /&gt;
Suck it, McBain.&lt;br /&gt;
Not waking buddy because wireless sync is not allowed right now&lt;br /&gt;
Here's to the crazy ones.&lt;br /&gt;
Up shit creek. No paddle.&lt;br /&gt;
I am ignoring your unlock code. There is nothing you can do about it.&lt;br /&gt;
That being said, I am setting the activation state to Unlocked.&lt;br /&gt;
Setting the activation state to MismatchedIMEI. Dude, where's your baseband?&lt;br /&gt;
Setting the activation state to MismatchedICCID. Put that other SIM back in.&lt;br /&gt;
Setting the activation state to MissingSIM. Put that SIM back in, dude.&lt;br /&gt;
Setting the activation state to FactoryActivated. Helloq OQC.&lt;br /&gt;
Setting the activation state to SoftActivation. Hello AppleCare.&lt;br /&gt;
This is some kinda fpga: %s&lt;br /&gt;
DisableHactivation&lt;br /&gt;
Disabling activation short-circuit because DisableHactivation is set &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===4.1===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Our buddy went away&lt;br /&gt;
Our buddy is here!&lt;br /&gt;
Might wake my buddy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===4.3.3===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Timezone shenanigans&lt;br /&gt;
dirtied by changing %s&lt;br /&gt;
FPGA workaround enabled, no fairplay bringup&lt;br /&gt;
iPhone3,2&lt;br /&gt;
iPhone4,1 &lt;br /&gt;
Short circuiting activation state to Activated.&lt;br /&gt;
Hmmm, we're missing the post URL but continuing.&lt;br /&gt;
Turned airplane mode off since we're unactivated&lt;br /&gt;
But allowing simless activation&lt;br /&gt;
This host ID is lame&lt;br /&gt;
The activation record did not contain the necessary key data thingy&lt;br /&gt;
HEY!!!!! %s attempting to get [%s]:[%s]- Use MobileOracle instead of lockdown please!&lt;br /&gt;
Gah! Can't create mutable copy&lt;br /&gt;
Weird. Missing the pair record.&lt;br /&gt;
Must be within a session to enter recovery mode via WiFi&lt;br /&gt;
Could not determine whether or not we support WiFi syncing!&lt;br /&gt;
Very bad.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===4.3.5===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Could not create mutable dictionary! We are dead!&lt;br /&gt;
 Could not allocate key list. We are dead.&lt;br /&gt;
 Could not create mutable copy! We are dead!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.0===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set_time_since_bowie&lt;br /&gt;
copy_time_since_bowie&lt;br /&gt;
kIOMessageSystemHasPoweredOn (%s): Now witness the firepower of this fully ARMED and OPERATIONAL battle station!&lt;br /&gt;
Mayday&lt;br /&gt;
Bzzz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==libMobileGestalt==&lt;br /&gt;
===7.0===&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
diagnostic data isn't chicken, it's beef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mobile_obliterator [http://code.google.com/p/chronicdev/wiki/MobileObliterator]==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;buffy_summers&amp;quot;, &amp;quot;Could not kill the daemons: %d&amp;quot;&lt;br /&gt;
begin_fakery&lt;br /&gt;
end_fakery&lt;br /&gt;
And you will know my name is the Lord when I lay my vengeance upon thee.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===4.3.3===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lol, wut: %s&lt;br /&gt;
Could not find Revocable Storage! Reverting to stupid wipe.&lt;br /&gt;
The USB device controller could not be found. It's cool.&lt;br /&gt;
Erasing all Image3 firmware images, Firmware is gone?!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:5urd&amp;diff=35033</id>
		<title>User talk:5urd</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:5urd&amp;diff=35033"/>
		<updated>2013-09-10T23:26:15Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Mediawiki.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Talk Archive|2011|2012}}&lt;br /&gt;
&lt;br /&gt;
== iBook ==&lt;br /&gt;
Hey I'm taking on another project, I'm writing a iBook on the internals of jailbreaking. I was wondering if you might be interested on editing/giving ideas/or correcting information. You seem very educated in jailbreaking. --[[User:Haifisch|Haifisch]] 00:23, 29 January 2012 (MST)&lt;br /&gt;
: I don't want to be arrogant, but I think I could help you more ;) --[[User:Rud0lf77|rud0lf77]] 06:43, 29 January 2012 (MST)&lt;br /&gt;
:Ya I can help --[[User:5urd|5urd]] 16:39, 29 January 2012 (MST)&lt;br /&gt;
::I have a proof of the book [http://www.ra1n.net/hah/1.ibooks here] --[[User:Dylan Laws|Dylan Laws]] 16:50, 29 January 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
== Minor keypage edits ==&lt;br /&gt;
You just made a ton of minor edits of the key pages (firmware pages) editing just empty lines or spaces (even invisible in diff). I understand that you do this for your own purpose so that one of your tools can lookup keys. But I would rather suggest to fix your parser instead of useless editing of these pages. Thank you. -- [[User:Http|http]] 00:51, 1 February 2012 (MST)&lt;br /&gt;
:Sorry about this. I should have spaced it out a it wider than a few days. --[[User:5urd|5urd]] 16:15, 1 February 2012 (MST)&lt;br /&gt;
::Or just leave it? --[[User:Http|http]] 17:30, 1 February 2012 (MST)&lt;br /&gt;
:::Or, yeah... --[[User:5urd|5urd]] 20:53, 1 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
== Beta firmware kernelcache keys ==&lt;br /&gt;
I noticed you added keys for the iPhone3,1 and 3,3 for SundanceVail 10A5316k. However, the list is incomplete, you are missing the kernelcache keys. In the future, could you please make sure all the keys are there before you submit the page? Thank you, [[User:Acfrazier|Austen Frazier]] 19:22, 13 June 2012 (MDT)&lt;br /&gt;
:That was not me, but I see how you thought that. [[User:INeal11|iNeal11]] added them, I just went through and lowercased them to follow the standard format (&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{FULLURL:SundanceVail 10A5316k (iPhone 4)|action=history}} iPhone3,1], [{{FULLURL:SundanceVail 10A5316k (iPhone 4 CDMA)|action=history}} iPhone3,3]&amp;lt;/span&amp;gt;) --[[User:5urd|5urd]] 19:38, 13 June 2012 (MDT)&lt;br /&gt;
&lt;br /&gt;
== PurpleRestore Discussion Page ==&lt;br /&gt;
But.. why did you delete [{{FULLURL:User talk:Martepato|diff=0&amp;amp;oldid=28641}} my last edit]?? --[[User:Jaggions|Jaggions]] 11:19, 18 December 2012 (MST)&lt;br /&gt;
:It was encouraging illegal file share. --[[User:5urd|5urd]] ([[User talk:5urd|talk]]) 05:23, 24 December 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Administrator ==&lt;br /&gt;
Want to be one? You pretty much fill the role of one already. --[[User:Geohot|geohot]] ([[User talk:Geohot|talk]]) 19:57, 23 December 2012 (UTC)&lt;br /&gt;
:Ooh! Yes! Please! --[[User:5urd|5urd]] ([[User talk:5urd|talk]]) 20:34, 23 December 2012 (UTC)&lt;br /&gt;
::Done, keep up the good work. --[[User:Geohot|geohot]] ([[User talk:Geohot|talk]]) 20:40, 23 December 2012 (UTC)&lt;br /&gt;
:::*claps* Congrats! --[[User:Haifisch|Haifisch]] ([[User talk:Haifisch|talk]]) 00:04, 24 December 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Page deletion. ==&lt;br /&gt;
Is it possible for me to delete a page if it is not used etc or is it an admin only feature? --[[User:IAdam1n|iAdam1n]] ([[User talk:IAdam1n|talk]]) 19:12, 24 December 2012 (UTC)&lt;br /&gt;
:It's an admin only feature. If you feel a page should be deleted, add the [[Template:delete|delete template]] to the top of it. --[[User:5urd|5urd]] ([[User talk:5urd|talk]]) 19:13, 24 December 2012 (UTC)&lt;br /&gt;
::Ok thanks. --[[User:IAdam1n|iAdam1n]] ([[User talk:IAdam1n|talk]]) 19:17, 24 December 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Betas ==&lt;br /&gt;
There is definitely beta for 6.1 2-4 [[User:IAdam1n|iAdam1n]] ([[User talk:IAdam1n|talk]])16:29, December 25, 2012 (MST)}}&lt;br /&gt;
:Do you have any evidence other than the OTA updates? --[[User:5urd|5urd]] ([[User talk:5urd|talk]]) 00:10, 26 December 2012 (UTC)&lt;br /&gt;
::There is a beta 4. --[[User:Haifisch|Haifisch]] ([[User talk:Haifisch|talk]]) 00:16, 26 December 2012 (UTC)&lt;br /&gt;
:::Well, no duh. --[[User:5urd|5urd]] ([[User talk:5urd|talk]]) 02:17, 26 December 2012 (UTC)&lt;br /&gt;
::::Im confused ._. --[[User:Haifisch|Haifisch]] ([[User talk:Haifisch|talk]]) 02:40, 26 December 2012 (UTC)&lt;br /&gt;
:::::No but OTA is enough evidence. --[[User:IAdam1n|iAdam1n]] ([[User talk:IAdam1n|talk]]) 11:16, 26 December 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
== PurpleTools ==&lt;br /&gt;
I have managed to find screenshots of the PurpleTools (PurpleRestore, etc.) on the internet. If you're interested in adding them to the Wiki, I can send them to you. --[[User:Srb21103|Srb21103]] ([[User talk:Srb21103|talk]]) 19:27, 2 January 2013 (MST)&lt;br /&gt;
:Sure! --[[User:5urd|5urd]] ([[User talk:5urd|talk]]) 02:31, 3 January 2013 (UTC)&lt;br /&gt;
:Hi, I saw you uploaded a [[:File:PurpleRestore.jpg|PurpleRestore]] image. Two questions:&lt;br /&gt;
:* It has a watermark from @TechSight in it. Did you obtain the permission to add it to the wiki? Or do you think this falls under the US-only &amp;quot;fair-use&amp;quot; usage?&lt;br /&gt;
:* Why is it a jpg and not a png? I mean it's a screenshot and pngs are smaller and have full quality.&lt;br /&gt;
:--[[User:Http|http]] ([[User talk:Http|talk]]) 01:28, 4 January 2013 (UTC)&lt;br /&gt;
::I would think it falls under fair use. Fair use say something along the lines of its legal if it is used for educational purposes. Also, they are not mine, they are Srb21103's. --[[User:5urd|5urd]] ([[User talk:5urd|talk]]) 01:46, 4 January 2013 (UTC)&lt;br /&gt;
:::I can get you screenshots of it, using my devices (I dont care what info on them leaks) --[[User:Haifisch|Haifisch]] ([[User talk:Haifisch|talk]]) 02:14, 4 January 2013 (UTC)&lt;br /&gt;
::::Thanks --[[User:5urd|5urd]] ([[User talk:5urd|talk]]) 18:30, 22 January 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Evad3rs ==&lt;br /&gt;
Why did you delete this page? --[[User:IAdam1n|iAdam1n]] ([[User talk:IAdam1n|talk]]) 01:19, 26 January 2013 (UTC)&lt;br /&gt;
: Due to no reply and/or  reason for deletion, I will make it again. If you have an issues with the page please say them on the talk page first. This is like [[Dream Team]] so should stay. [[User:IAdam1n|iAdam1n]] ([[User talk:IAdam1n|talk]])11:48, 26 January 2013 (UTC)}}&lt;br /&gt;
:: How fast do you expect a reply? It's still the same day! --[[User:Http|http]] ([[User talk:Http|talk]]) 12:04, 26 January 2013 (UTC)&lt;br /&gt;
::: Well he was on since I made this so should have seen it. --[[User:IAdam1n|iAdam1n]] ([[User talk:IAdam1n|talk]]) 12:05, 26 January 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Last edit. ==&lt;br /&gt;
Why did you revert? The rest of the page has rowspan with no complaints. Please discuss first. --[[User:IAdam1n|iAdam1n]] ([[User talk:IAdam1n|talk]]) 20:15, 24 March 2013 (UTC)&lt;br /&gt;
:I agree with his undo. Rowspans over different tools are confusing. --[[User:Http|http]] ([[User talk:Http|talk]]) 20:58, 24 March 2013 (UTC)&lt;br /&gt;
:: Ah ok. I will do this layout for the others too then. --[[User:IAdam1n|iAdam1n]] ([[User talk:IAdam1n|talk]]) 22:14, 24 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
== A6 file deletion ==&lt;br /&gt;
You deleted the File:A6.jpg with comment &amp;quot;Copyright violation&amp;quot;. Can you give details? The author explicitely allowed redistribution etc. under Creative Commons license or something like that. Anything wrong with that? We have several other images with same license still here. --[[User:Http|http]] ([[User talk:Http|talk]]) 05:58, 25 April 2013 (UTC)&lt;br /&gt;
:My apologies. It was not a copyright violation. It was marked for deletion for being unused. If you want to add it back, feel free to. I was half awake, and I guess I accidentally clicked &amp;quot;Copyright violation&amp;quot;. --[[User:5urd|5urd]] ([[User talk:5urd|talk]]) 14:37, 25 April 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Mediawiki markup ==&lt;br /&gt;
No, I don't know Mediawiki. I contribute words / content and someone else who understands Mediawiki markup better than I do can fix them. Sorry&lt;br /&gt;
--[[User:Iemit737|Iemit737]] ([[User talk:Iemit737|talk]]) 23:26, 10 September 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=35018</id>
		<title>Touch ID</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=35018"/>
		<updated>2013-09-10T21:26:38Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: *slice not segment...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[iPhone 5s]] comes equipped with '''Touch ID''', a fingerprint scanner. Currently, there is no official developer API for it, because it is intended for unlocking the device and purchasing items on [[iTunes Store]] only.&lt;br /&gt;
&lt;br /&gt;
However there is a private API for it; its dylib file is in [[Xcode]] 5 in the path &lt;br /&gt;
&amp;lt;pre&amp;gt;Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/BiometricKit.framework/BiometricKit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since it contains a 64-bit ARM slice only, the common disassembly tools cannot process the file (beyond basic header and data segment analysis). &lt;br /&gt;
&lt;br /&gt;
==Inferred Information==&lt;br /&gt;
Based on a string dump, here is what is implied.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The codename for it was &amp;quot;mesa&amp;quot; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It communicates over XPC to a binary that handles access to it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's a kernel extension to interface with it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The kernel extension communicates to the secure keystore to set and verify fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner calibrates itself and has upgradable firmware  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner uses normal image formats (i.e. UIImage) before setting and verifying fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's biometric lockout as well as passcode lockout  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; The A7 chip contains a secure element marketed as the Secure Enclave. The string dump refers to SEP, the Secure Element Protocol. This chip is most likely one sourced from NXP. It contains physical security to ensure that the only operations of the chip involve setting new fingerprints and verifying fingerprints against the ones stored in it (i.e. challenge-response). This way, the fingerprint data cannot be extracted from it. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== String Dump ==&lt;br /&gt;
Below there is a full string dump of the framework, which can hint at its functionalities.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initWithMachServiceName:options:&lt;br /&gt;
connectWithReplyBlock:&lt;br /&gt;
registerDelegate:withReplyBlock:&lt;br /&gt;
suspendWork:withReplyBlock:&lt;br /&gt;
enroll:withAuthToken:withReplyBlock:&lt;br /&gt;
match:withReplyBlock:&lt;br /&gt;
match:withOptions:withReplyBlock:&lt;br /&gt;
matchIdentities:withReplyBlock:&lt;br /&gt;
cancelWithReplyBlock:&lt;br /&gt;
updateIdentity:withReplyBlock:&lt;br /&gt;
removeIdentity:withReplyBlock:&lt;br /&gt;
getIdentityFromUUID:withReplyBlock:&lt;br /&gt;
identities:withReplyBlock:&lt;br /&gt;
resetEngineWithReplyBlock:&lt;br /&gt;
registerDSID:withAuthToken:withReplyBlock:&lt;br /&gt;
registerStoreToken:withReplyBlock:&lt;br /&gt;
getCountersignedStoreTokenWithReplyBlock:&lt;br /&gt;
getMaxIdentityCount:withReplyBlock:&lt;br /&gt;
enrollContinueWithReplyBlock:&lt;br /&gt;
pullAlignmentDataWithReplyBlock:&lt;br /&gt;
pullMatchTopologyDataWithReplyBlock:&lt;br /&gt;
getNodeTopologyForIdentity:withReplyBlock:&lt;br /&gt;
preventAutonomousMatchingMode:withReplyBlock:&lt;br /&gt;
getProvisioningStateWithReplyBlock:&lt;br /&gt;
getCalBlobVersionWithReplyBlock:&lt;br /&gt;
getSensorCalibrationStatusWithReplyBlock:&lt;br /&gt;
getCalibrationDataStateWithReplyBlock:&lt;br /&gt;
setDebugImages:withReplyBlock:&lt;br /&gt;
pullCaptureBufferWithReplyBlock:&lt;br /&gt;
pullDebugImageData:withReplyBlock:&lt;br /&gt;
provisionSensorWithReplyBlock:&lt;br /&gt;
unpairSensorWithReplyBlock:&lt;br /&gt;
lockSensorWithReplyBlock:&lt;br /&gt;
getSerialisedTemplateForIdentity:withReplyBlock:&lt;br /&gt;
interfaceWithProtocol:&lt;br /&gt;
setRemoteObjectInterface:&lt;br /&gt;
remoteObjectInterface&lt;br /&gt;
setWithObject:&lt;br /&gt;
setClasses:forSelector:argumentIndex:ofReply:&lt;br /&gt;
setWithObjects:&lt;br /&gt;
enrollResult:&lt;br /&gt;
matchResult:&lt;br /&gt;
statusMessage:&lt;br /&gt;
homeButtonPressed&lt;br /&gt;
setExportedInterface:&lt;br /&gt;
setExportedObject:&lt;br /&gt;
setInterruptionHandler:&lt;br /&gt;
resume&lt;br /&gt;
invalidate&lt;br /&gt;
remoteObjectProxyWithErrorHandler:&lt;br /&gt;
code&lt;br /&gt;
respondsToSelector:&lt;br /&gt;
connect&lt;br /&gt;
registerDelegate:&lt;br /&gt;
suspendWork:&lt;br /&gt;
enroll:withAuthToken:&lt;br /&gt;
match:&lt;br /&gt;
match:withOptions:&lt;br /&gt;
matchIdentities:&lt;br /&gt;
cancel&lt;br /&gt;
updateIdentity:&lt;br /&gt;
removeIdentity:&lt;br /&gt;
getIdentityFromUUID:&lt;br /&gt;
identities:&lt;br /&gt;
getMaxIdentityCount:&lt;br /&gt;
resetEngine&lt;br /&gt;
enrollContinue&lt;br /&gt;
pullAlignmentData&lt;br /&gt;
pullMatchTopologyData&lt;br /&gt;
getNodeTopologyForIdentity:&lt;br /&gt;
preventAutonomousMatchingMode:&lt;br /&gt;
getProvisioningState&lt;br /&gt;
registerDSID:withAuthToken:&lt;br /&gt;
registerStoreToken:&lt;br /&gt;
getCountersignedStoreToken:&lt;br /&gt;
getCalBlobVersion&lt;br /&gt;
getSensorCalibrationStatus&lt;br /&gt;
getCalibrationDataState&lt;br /&gt;
pullCaptureBuffer&lt;br /&gt;
pullDebugImageData:imageWidth:imageHeight:&lt;br /&gt;
provisionSensor&lt;br /&gt;
unpairSensor&lt;br /&gt;
lockSensor&lt;br /&gt;
setDebugImages:&lt;br /&gt;
getSerialisedTemplateForIdentity:&lt;br /&gt;
delegate&lt;br /&gt;
setDelegate:&lt;br /&gt;
interruptionHandler&lt;br /&gt;
_connection&lt;br /&gt;
_delegate&lt;br /&gt;
_interruptionHandler&lt;br /&gt;
setTopology:&lt;br /&gt;
setDetails:&lt;br /&gt;
topology&lt;br /&gt;
details&lt;br /&gt;
_topology&lt;br /&gt;
_details&lt;br /&gt;
initEnrollmentValues&lt;br /&gt;
message&lt;br /&gt;
messageDetails&lt;br /&gt;
objectForKeyedSubscript:&lt;br /&gt;
currentPrimaryComponentID&lt;br /&gt;
integerValue&lt;br /&gt;
doubleValue&lt;br /&gt;
statistics&lt;br /&gt;
enroll:&lt;br /&gt;
enrollResult:componentSet:&lt;br /&gt;
enrollProgress:&lt;br /&gt;
_fingerOn&lt;br /&gt;
_enrolling&lt;br /&gt;
_badImagePerFingerDown&lt;br /&gt;
_enrollmentStarTime&lt;br /&gt;
_touchesPerEnroll&lt;br /&gt;
_badImagesPerEnroll&lt;br /&gt;
_rejectedImagesPerEnroll&lt;br /&gt;
_primaryClusterAdditions&lt;br /&gt;
_primaryClusterFailedAdditions&lt;br /&gt;
_otherClustersAdditions&lt;br /&gt;
_joinEvents&lt;br /&gt;
_area&lt;br /&gt;
_primaryClusterArea&lt;br /&gt;
numberWithBool:&lt;br /&gt;
preferencesGetStringValue:&lt;br /&gt;
preferencesGetBOOLValue:&lt;br /&gt;
enableLogger:toPath:&lt;br /&gt;
manager&lt;br /&gt;
defaultCenter&lt;br /&gt;
appDidEnterBackground:&lt;br /&gt;
addObserver:selector:name:object:&lt;br /&gt;
appWillEnterForeground:&lt;br /&gt;
bundleForClass:&lt;br /&gt;
imageNamed:inBundle:&lt;br /&gt;
updateEnableLogger&lt;br /&gt;
dataWithBytes:length:&lt;br /&gt;
startEnrollLog&lt;br /&gt;
data&lt;br /&gt;
logRemoveIdentity:&lt;br /&gt;
bytes&lt;br /&gt;
imageFromRawImageData:&lt;br /&gt;
imageFromBitmapData:inRect:&lt;br /&gt;
pullDebugImageData:target:&lt;br /&gt;
getRadarAtachmentsForLastEnrollment&lt;br /&gt;
getRadarAtachmentsForLastMatch&lt;br /&gt;
length&lt;br /&gt;
stringWithString:&lt;br /&gt;
getModulationRatio&lt;br /&gt;
stringForProvisioningState:&lt;br /&gt;
getSensorPatchVersion&lt;br /&gt;
stringWithFormat:&lt;br /&gt;
getLogsForProcess:&lt;br /&gt;
sharedConnection&lt;br /&gt;
isFingerprintUnlockAllowed&lt;br /&gt;
setGracePeriod:passcode:completionBlock:&lt;br /&gt;
finishEnrollLogWithStatus:withIdentity:withTemplate:&lt;br /&gt;
matchResult:withDetails:&lt;br /&gt;
createMatchInfo:withTopology:withMatchImage:&lt;br /&gt;
logMatchResult:withTopology:withImage:withCaptureBuffer:withTemplate:&lt;br /&gt;
getBytes:length:&lt;br /&gt;
logEnrollMessage:withTopology:withImage:withCaptureBuffer:&lt;br /&gt;
logStatus:&lt;br /&gt;
enrollProgressMessage:&lt;br /&gt;
logRejectedImage:&lt;br /&gt;
size&lt;br /&gt;
drawInRect:&lt;br /&gt;
drawInRect:blendMode:alpha:&lt;br /&gt;
CGImage&lt;br /&gt;
scale&lt;br /&gt;
imageOrientation&lt;br /&gt;
imageWithCGImage:scale:orientation:&lt;br /&gt;
imageWithImage:inRect:&lt;br /&gt;
identityImage:&lt;br /&gt;
imageWithImage:withNode:withRect:alpha:&lt;br /&gt;
compositeTopologyImage:&lt;br /&gt;
imageTopology:forGroup:&lt;br /&gt;
imageFauxprint:withTheta:withLamda:&lt;br /&gt;
greenColor&lt;br /&gt;
imageWithImage:withTintColor:&lt;br /&gt;
dataWithData:&lt;br /&gt;
imageWithCGImage:&lt;br /&gt;
preferencesSetBOOLValue:forKey:&lt;br /&gt;
pullDebugImage:&lt;br /&gt;
getLoggerAttachmentsForRadar:&lt;br /&gt;
stringFromSensorConfiguration&lt;br /&gt;
matchIdentity:&lt;br /&gt;
topologyImage:&lt;br /&gt;
imageWithImage:withMaskImage:&lt;br /&gt;
inUse&lt;br /&gt;
setInUse:&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
setEnrollProgressConfigRenderMode:&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
setEnrollProgressConfigRenderViewSize:&lt;br /&gt;
renderMode&lt;br /&gt;
setRenderMode:&lt;br /&gt;
opacity&lt;br /&gt;
setOpacity:&lt;br /&gt;
_xpcClient&lt;br /&gt;
_enrollingMode&lt;br /&gt;
_matchingMode&lt;br /&gt;
_statistics&lt;br /&gt;
_scanbedImage&lt;br /&gt;
_fauxprintImage&lt;br /&gt;
_nodeRect&lt;br /&gt;
_images&lt;br /&gt;
_compSet&lt;br /&gt;
_rejectTouchCount&lt;br /&gt;
_rejectTouch&lt;br /&gt;
_showDebugImages&lt;br /&gt;
_enableLogger&lt;br /&gt;
_enrollImageSet&lt;br /&gt;
_isInternalInstall&lt;br /&gt;
_inUse&lt;br /&gt;
_enrollProgressConfigRenderMode&lt;br /&gt;
_renderMode&lt;br /&gt;
_opacity&lt;br /&gt;
_enrollProgressConfigRenderViewSize&lt;br /&gt;
setUuid:&lt;br /&gt;
decodeBytesForKey:returnedLength:&lt;br /&gt;
initWithUUIDBytes:&lt;br /&gt;
decodeIntForKey:&lt;br /&gt;
decodeObjectOfClass:forKey:&lt;br /&gt;
copy&lt;br /&gt;
getUUIDBytes:&lt;br /&gt;
encodeBytes:length:forKey:&lt;br /&gt;
encodeInt:forKey:&lt;br /&gt;
encodeObject:forKey:&lt;br /&gt;
biometricKitIdentity&lt;br /&gt;
supportsSecureCoding&lt;br /&gt;
encodeWithCoder:&lt;br /&gt;
initWithCoder:&lt;br /&gt;
uuid&lt;br /&gt;
type&lt;br /&gt;
setType:&lt;br /&gt;
attribute&lt;br /&gt;
setAttribute:&lt;br /&gt;
entity&lt;br /&gt;
setEntity:&lt;br /&gt;
name&lt;br /&gt;
setName:&lt;br /&gt;
stringByReplacingOccurrencesOfString:withString:&lt;br /&gt;
initWithCapacity:&lt;br /&gt;
setLength:&lt;br /&gt;
mutableBytes&lt;br /&gt;
defaultManager&lt;br /&gt;
createDirectoryAtPath:withIntermediateDirectories:attributes:error:&lt;br /&gt;
removeItemAtPath:error:&lt;br /&gt;
UUIDString&lt;br /&gt;
setMessageDetails:&lt;br /&gt;
setCaptureImage:&lt;br /&gt;
setRenderedImage:&lt;br /&gt;
progress&lt;br /&gt;
setProgress:&lt;br /&gt;
setCurrentPrimaryComponentID:&lt;br /&gt;
captureImage&lt;br /&gt;
renderedImage&lt;br /&gt;
setMessage:&lt;br /&gt;
_message&lt;br /&gt;
_progress&lt;br /&gt;
_currentPrimaryComponentID&lt;br /&gt;
_captureImage&lt;br /&gt;
_renderedImage&lt;br /&gt;
_messageDetails&lt;br /&gt;
setX:&lt;br /&gt;
setY:&lt;br /&gt;
angle&lt;br /&gt;
setAngle:&lt;br /&gt;
_angle&lt;br /&gt;
setTransformationCoordinates:&lt;br /&gt;
componentID&lt;br /&gt;
setComponentID:&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
_componentID&lt;br /&gt;
_transformationCoordinates&lt;br /&gt;
pathComponents&lt;br /&gt;
com.apple.biometrickitd&lt;br /&gt;
T@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;,N,V_delegate&lt;br /&gt;
interruptionHandler&lt;br /&gt;
T@?,C,N,V_interruptionHandler&lt;br /&gt;
topology&lt;br /&gt;
T@&amp;quot;NSDictionary&amp;quot;,&amp;amp;,N,V_details&lt;br /&gt;
com.apple.fingerprint.enroll.attempts&lt;br /&gt;
com.apple.fingerprint.enroll.passes&lt;br /&gt;
com.apple.fingerprint.enroll.touchesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.badImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.rejectedImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterFailedAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.otherClustersAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.joinEvents&lt;br /&gt;
com.apple.fingerprint.enroll.clusterCount&lt;br /&gt;
com.apple.fingerprint.enroll.nodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterNodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.area&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterArea&lt;br /&gt;
com.apple.fingerprint.enroll.passTime&lt;br /&gt;
com.apple.fingerprint.enroll.fails&lt;br /&gt;
com.apple.fingerprint.enroll.failTime&lt;br /&gt;
com.apple.ManagedConfiguration.profileListChanged&lt;br /&gt;
com.apple.biometrickitd.debugLogEnabled&lt;br /&gt;
com.apple.biometrickitd.debugLogPath&lt;br /&gt;
debugLogEnabled&lt;br /&gt;
debugLogPath&lt;br /&gt;
BKOptionSuppressHapticFeedback&lt;br /&gt;
BKOptionFilterOutHomeButtonEvents&lt;br /&gt;
BKOptionMatchForUnlock&lt;br /&gt;
InternalBuild&lt;br /&gt;
scanbed&lt;br /&gt;
synthetic&lt;br /&gt;
Uninitialized&lt;br /&gt;
Not Provisioned&lt;br /&gt;
Unprovisioned&lt;br /&gt;
Provisioned&lt;br /&gt;
Provisioned Locked&lt;br /&gt;
Unpaired&lt;br /&gt;
Unknown&lt;br /&gt;
biosensor,mesa&lt;br /&gt;
modulation-ratio&lt;br /&gt;
AppleBiometricSensor&lt;br /&gt;
patch-version&lt;br /&gt;
Mesa configuration:&lt;br /&gt;
Provisioning Status: %@&lt;br /&gt;
Calibrated: &lt;br /&gt;
- Version: &lt;br /&gt;
- Signed: &lt;br /&gt;
Modulation ratio: &lt;br /&gt;
Kernel: &lt;br /&gt;
Thick kernel&lt;br /&gt;
Thin kernel&lt;br /&gt;
Sensor Patch Version: &lt;br /&gt;
Steps to Reproduce:&lt;br /&gt;
inUse&lt;br /&gt;
TB,V_inUse&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
Ti,N,V_enrollProgressConfigRenderMode&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
T{CGSize=dd},N,V_enrollProgressConfigRenderViewSize&lt;br /&gt;
renderMode&lt;br /&gt;
Ti,N,V_renderMode&lt;br /&gt;
opacity&lt;br /&gt;
Tf,N,V_opacity&lt;br /&gt;
Notification callback.&lt;br /&gt;
BiometricKitErrorDomain&lt;br /&gt;
BKIdentityUUID&lt;br /&gt;
BKIdentityType&lt;br /&gt;
BKIdentityAttribute&lt;br /&gt;
BKIdentityEntityNumber&lt;br /&gt;
BKIdentityName&lt;br /&gt;
/var/mobile/BiometricKit/biometrickitd&lt;br /&gt;
BKEPDReason&lt;br /&gt;
BKEPDNewNodeID&lt;br /&gt;
BKEPDNewComponentID&lt;br /&gt;
BKEPDNewNodeCoordinates&lt;br /&gt;
BKEPDRemovedNodeID&lt;br /&gt;
BKEPDRemovedComponentID&lt;br /&gt;
BKEPDExtendedComponentID&lt;br /&gt;
BKEPDResultComponentID&lt;br /&gt;
BKEPDMergedInComponents&lt;br /&gt;
BKEPDRedundantNode&lt;br /&gt;
BKTDLargestCompArea&lt;br /&gt;
BKTDLargestCompNodes&lt;br /&gt;
BKTDTotalArea&lt;br /&gt;
BKTDTotalNodes&lt;br /&gt;
BKTemplateUpdated&lt;br /&gt;
Td,N,V_x&lt;br /&gt;
Td,N,V_y&lt;br /&gt;
angle&lt;br /&gt;
Td,N,V_angle&lt;br /&gt;
componentID&lt;br /&gt;
Tq,N,V_componentID&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
T@&amp;quot;BiometricKitEnrollProgressCoordinates&amp;quot;,&amp;amp;,N,V_transformationCoordinates&lt;br /&gt;
Remove identity: %@&lt;br /&gt;
Log package:%@&lt;br /&gt;
biometrickitd&lt;br /&gt;
%@.tar.gz&lt;br /&gt;
cd %@ &amp;amp;&amp;amp; tar -cjf %@ %@&lt;br /&gt;
Time: % 8.3f&lt;br /&gt;
PASS&lt;br /&gt;
FAIL&lt;br /&gt;
Closing log with result %@&lt;br /&gt;
Template identity:&lt;br /&gt;
UUID  : %@&lt;br /&gt;
Type  : %i&lt;br /&gt;
Attrib: %i&lt;br /&gt;
Entity: %i&lt;br /&gt;
Error: Unable to get identity&lt;br /&gt;
Serialised template: %@&lt;br /&gt;
%@_%04d.bin&lt;br /&gt;
Status message: %@&lt;br /&gt;
Progress %i&lt;br /&gt;
Count of enrollments: %i&lt;br /&gt;
BiometricKitErrorTaskCancelled&lt;br /&gt;
BiometricKitErrorIdentityInvalid&lt;br /&gt;
BiometricKitErrorIdentityNotAllowed&lt;br /&gt;
BiometricKitErrorIdentityErrorInvalidData&lt;br /&gt;
BiometricKitErrorIdentityErrorUnknown&lt;br /&gt;
BiometricKitStatusFingerOn&lt;br /&gt;
BiometricKitStatusFingerOff&lt;br /&gt;
BiometricKitStatusEnrollmentComplete&lt;br /&gt;
BiometricKitStatusEnrollmentCancelled&lt;br /&gt;
BiometricKitStatusEnrollmentFailed&lt;br /&gt;
BiometricKitStatusEnrollmentTimeout&lt;br /&gt;
BiometricKitStatusUnknownError&lt;br /&gt;
BiometricKitStatusImageRejected&lt;br /&gt;
BiometricKitStatusNoCalibration&lt;br /&gt;
BiometricKitImageForProcessing&lt;br /&gt;
BiometricKitStatusTemplateListUpdated&lt;br /&gt;
BiometricKitStatusRequestFingerOff&lt;br /&gt;
BiometricKitStatusAutoMatchingStarted&lt;br /&gt;
BiometricKitStatusAutoMatchingStopped&lt;br /&gt;
BiometricKitStatusCaptureRestart&lt;br /&gt;
BiometricKitStatusScanTooShort&lt;br /&gt;
BiometricKitStatusAutoMatchingStartByHomeButton&lt;br /&gt;
BiometricKitStatusMatchingCancelled&lt;br /&gt;
BiometricKitStatusFingerOnBeforeFirstPasscodeUnlock&lt;br /&gt;
BiometricKitStatusFingerOnInPasscodeLockout&lt;br /&gt;
BiometricKitStatusFingerOnInBioLockout&lt;br /&gt;
BiometricKitStatusFingerOnTokenExpired&lt;br /&gt;
BiometricKitStatusESDRecovery&lt;br /&gt;
BiometricKitStatusImageRejectedUnknown&lt;br /&gt;
BiometricKitStatusImageRejectedBadBlocks&lt;br /&gt;
BiometricKitStatusImageRejectedChFPN&lt;br /&gt;
BiometricKitStatusImageRejectedCaFPN&lt;br /&gt;
BiometricKitStatusSensorOperationModeIdle&lt;br /&gt;
BiometricKitStatusSensorOperationModeCapture&lt;br /&gt;
BiometricKitStatusSensorOperationModePause&lt;br /&gt;
Other unknown status %i&lt;br /&gt;
Image #%i was rejected&lt;br /&gt;
Sensor patch version: %ld&lt;br /&gt;
Sensor patch version: unknown&lt;br /&gt;
Calibration Data: %@&lt;br /&gt;
Capture buffer: %@&lt;br /&gt;
Matcher: image refused&lt;br /&gt;
Matcher: image %s node %u&lt;br /&gt;
added as&lt;br /&gt;
replaced&lt;br /&gt;
Coordinates: %s[%i, %i, %i]&lt;br /&gt;
inverse of &lt;br /&gt;
Parent: %i&lt;br /&gt;
Processed image: %@&lt;br /&gt;
Enroll debug log, version 7&lt;br /&gt;
static const node_placement_t table_%02i = &lt;br /&gt;
%@{%i,%i,%i,%i,%i,%i,{&lt;br /&gt;
%@{%i,%i,%i,%i,%i}&lt;br /&gt;
%@},%i,%i,%i,%i,%i,0x%04x};&lt;br /&gt;
bin8&lt;br /&gt;
bin16&lt;br /&gt;
binXX&lt;br /&gt;
calibdata.bin&lt;br /&gt;
calibration-blob&lt;br /&gt;
Image #%i%s&lt;br /&gt;
 was sent to matcher&lt;br /&gt;
Match result&lt;br /&gt;
Match details:&lt;br /&gt;
Matching score: %i&lt;br /&gt;
Match S2S count: %i&lt;br /&gt;
Matching node: %i&lt;br /&gt;
Updated node: %i&lt;br /&gt;
Not available&lt;br /&gt;
No match (artificial)&lt;br /&gt;
No match&lt;br /&gt;
Image #%i&lt;br /&gt;
Warning: the log is not complete, previous part of the log was deleted.&lt;br /&gt;
Starting enrollment&lt;br /&gt;
Starting matching&lt;br /&gt;
No known identities with enroll log are available.&lt;br /&gt;
Known identities with enroll log available:&lt;br /&gt;
%@ : %@&lt;br /&gt;
Match debug log, version 7&lt;br /&gt;
messages.log&lt;br /&gt;
OS version: %@ (%@)&lt;br /&gt;
Mesa: %@&lt;br /&gt;
Process name:%@&lt;br /&gt;
PrimaryUsagePage&lt;br /&gt;
PrimaryUsage&lt;br /&gt;
com.apple.iokit.hid.displayStatus&lt;br /&gt;
com.apple.mobile.keybagd.lock_status&lt;br /&gt;
AppleMesaSEPDriver&lt;br /&gt;
IOGeneralInterest&lt;br /&gt;
ScanningState&lt;br /&gt;
ScanningStateIdle&lt;br /&gt;
ScanningStateShortScanning&lt;br /&gt;
ScanningStateLongScanning&lt;br /&gt;
Unknown scanning state %i&lt;br /&gt;
Event: %@&lt;br /&gt;
HomeButtonPress&lt;br /&gt;
ExtendedDeviceLockState&lt;br /&gt;
MobileKeyBagDeviceIsUnlocked&lt;br /&gt;
MobileKeyBagDeviceIsLocked&lt;br /&gt;
MobileKeyBagDeviceIsLocking&lt;br /&gt;
MobileKeyBagDisabled&lt;br /&gt;
MobileKeyBagDeviceUnlockInProgress&lt;br /&gt;
MobileKeyBagDeviceInGracePeriod&lt;br /&gt;
MobileKeyBagDeviceInAssertDelay&lt;br /&gt;
MobileKeyBagDeviceInBioUnlock&lt;br /&gt;
Unknown lock state %i&lt;br /&gt;
DisplayOn&lt;br /&gt;
DisplayOff&lt;br /&gt;
/SourceCache/Mesa/Mesa-152/AppleBiometricServices/BiometricKit/BiometricKitDebugLog.m&lt;br /&gt;
/var/mobile/Library/Logs/CrashReporter/BiometricKit&lt;br /&gt;
v24@0:8@&amp;quot;BiometricKitIdentity&amp;quot;16&lt;br /&gt;
@&amp;quot;NSXPCConnection&amp;quot;&lt;br /&gt;
@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitXPCClient&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitStatistics&amp;quot;&lt;br /&gt;
@&amp;quot;UIImage&amp;quot;&lt;br /&gt;
[25{CGRect=&amp;quot;origin&amp;quot;{CGPoint=&amp;quot;x&amp;quot;d&amp;quot;y&amp;quot;d}&amp;quot;size&amp;quot;{CGSize=&amp;quot;width&amp;quot;d&amp;quot;height&amp;quot;d}}]&lt;br /&gt;
[25@&amp;quot;UIImage&amp;quot;]&lt;br /&gt;
{?=&amp;quot;count&amp;quot;i&amp;quot;capa&amp;quot;i&amp;quot;items&amp;quot;^^{?}&amp;quot;unusedImageCount&amp;quot;i&amp;quot;componentCount&amp;quot;i&amp;quot;componentCapa&amp;quot;i&amp;quot;bestComponentIndex&amp;quot;i&amp;quot;bestMapiComponentIndex&amp;quot;i&amp;quot;components&amp;quot;^^{?}&amp;quot;mapiNodeAddedIndex&amp;quot;s&amp;quot;mapiNodeRemovedIndex&amp;quot;s&amp;quot;updateCount&amp;quot;i&amp;quot;structureIsInconsistent&amp;quot;B}&lt;br /&gt;
{?=&amp;quot;nodes&amp;quot;[25{?=&amp;quot;imageData&amp;quot;@&amp;quot;NSData&amp;quot;&amp;quot;width&amp;quot;I&amp;quot;height&amp;quot;I}]}&lt;br /&gt;
BiometricKitXpcProtocol&lt;br /&gt;
BiometricKitDelegateXpcProtocol&lt;br /&gt;
BiometricKitXPCClient&lt;br /&gt;
BiometricKitTemplateInfo&lt;br /&gt;
BiometricKitStatistics&lt;br /&gt;
BiometricKit&lt;br /&gt;
BiometricKitDelegate&lt;br /&gt;
BiometricKitIdentity&lt;br /&gt;
NSSecureCoding&lt;br /&gt;
NSCoding&lt;br /&gt;
BiometricKitMatchInfo&lt;br /&gt;
BiometricKitEnrollProgressInfo&lt;br /&gt;
BiometricKitEnrollProgressCoordinates&lt;br /&gt;
BiometricKitEnrollProgressMergedComponent&lt;br /&gt;
BiometricKitDebugLog&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{stub|hardware}}&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=35007</id>
		<title>Touch ID</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=35007"/>
		<updated>2013-09-10T20:47:43Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Being specific because Hopper can still open it as a raw binary.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[iPhone 5s]] comes equipped with '''Touch ID''', a fingerprint scanner. Currently, there is no official developer API for it, because it is intended for unlocking the device and purchasing items on [[iTunes Store]] only.&lt;br /&gt;
&lt;br /&gt;
However there is a private API for it; its dylib file is in [[Xcode]] 5 in the path &lt;br /&gt;
&amp;lt;pre&amp;gt;Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/BiometricKit.framework/BiometricKit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since it contains a 64-bit ARM segment only, the common disassembly tools cannot process the file (beyond basic header and data segment analysis). &lt;br /&gt;
&lt;br /&gt;
==Inferred Information==&lt;br /&gt;
Based on a string dump, here is what is implied.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The codename for it was &amp;quot;mesa&amp;quot; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It communicates over XPC to a binary that handles access to it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's a kernel extension to interface with it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The kernel extension communicates to the secure keystore to set and verify fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner calibrates itself and has upgradable firmware  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner uses normal image formats (i.e. UIImage) before setting and verifying fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's biometric lockout as well as passcode lockout  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; The A7 chip contains a secure element marketed as the Secure Enclave. The string dump refers to SEP, the Secure Element Protocol. This chip is most likely one sourced from NXP. It contains physical security to ensure that the only operations of the chip involve setting new fingerprints and verifying fingerprints against the ones stored in it (i.e. challenge-response). This way, the fingerprint data cannot be extracted from it. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== String Dump ==&lt;br /&gt;
Below there is a full string dump of the framework, which can hint at its functionalities.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initWithMachServiceName:options:&lt;br /&gt;
connectWithReplyBlock:&lt;br /&gt;
registerDelegate:withReplyBlock:&lt;br /&gt;
suspendWork:withReplyBlock:&lt;br /&gt;
enroll:withAuthToken:withReplyBlock:&lt;br /&gt;
match:withReplyBlock:&lt;br /&gt;
match:withOptions:withReplyBlock:&lt;br /&gt;
matchIdentities:withReplyBlock:&lt;br /&gt;
cancelWithReplyBlock:&lt;br /&gt;
updateIdentity:withReplyBlock:&lt;br /&gt;
removeIdentity:withReplyBlock:&lt;br /&gt;
getIdentityFromUUID:withReplyBlock:&lt;br /&gt;
identities:withReplyBlock:&lt;br /&gt;
resetEngineWithReplyBlock:&lt;br /&gt;
registerDSID:withAuthToken:withReplyBlock:&lt;br /&gt;
registerStoreToken:withReplyBlock:&lt;br /&gt;
getCountersignedStoreTokenWithReplyBlock:&lt;br /&gt;
getMaxIdentityCount:withReplyBlock:&lt;br /&gt;
enrollContinueWithReplyBlock:&lt;br /&gt;
pullAlignmentDataWithReplyBlock:&lt;br /&gt;
pullMatchTopologyDataWithReplyBlock:&lt;br /&gt;
getNodeTopologyForIdentity:withReplyBlock:&lt;br /&gt;
preventAutonomousMatchingMode:withReplyBlock:&lt;br /&gt;
getProvisioningStateWithReplyBlock:&lt;br /&gt;
getCalBlobVersionWithReplyBlock:&lt;br /&gt;
getSensorCalibrationStatusWithReplyBlock:&lt;br /&gt;
getCalibrationDataStateWithReplyBlock:&lt;br /&gt;
setDebugImages:withReplyBlock:&lt;br /&gt;
pullCaptureBufferWithReplyBlock:&lt;br /&gt;
pullDebugImageData:withReplyBlock:&lt;br /&gt;
provisionSensorWithReplyBlock:&lt;br /&gt;
unpairSensorWithReplyBlock:&lt;br /&gt;
lockSensorWithReplyBlock:&lt;br /&gt;
getSerialisedTemplateForIdentity:withReplyBlock:&lt;br /&gt;
interfaceWithProtocol:&lt;br /&gt;
setRemoteObjectInterface:&lt;br /&gt;
remoteObjectInterface&lt;br /&gt;
setWithObject:&lt;br /&gt;
setClasses:forSelector:argumentIndex:ofReply:&lt;br /&gt;
setWithObjects:&lt;br /&gt;
enrollResult:&lt;br /&gt;
matchResult:&lt;br /&gt;
statusMessage:&lt;br /&gt;
homeButtonPressed&lt;br /&gt;
setExportedInterface:&lt;br /&gt;
setExportedObject:&lt;br /&gt;
setInterruptionHandler:&lt;br /&gt;
resume&lt;br /&gt;
invalidate&lt;br /&gt;
remoteObjectProxyWithErrorHandler:&lt;br /&gt;
code&lt;br /&gt;
respondsToSelector:&lt;br /&gt;
connect&lt;br /&gt;
registerDelegate:&lt;br /&gt;
suspendWork:&lt;br /&gt;
enroll:withAuthToken:&lt;br /&gt;
match:&lt;br /&gt;
match:withOptions:&lt;br /&gt;
matchIdentities:&lt;br /&gt;
cancel&lt;br /&gt;
updateIdentity:&lt;br /&gt;
removeIdentity:&lt;br /&gt;
getIdentityFromUUID:&lt;br /&gt;
identities:&lt;br /&gt;
getMaxIdentityCount:&lt;br /&gt;
resetEngine&lt;br /&gt;
enrollContinue&lt;br /&gt;
pullAlignmentData&lt;br /&gt;
pullMatchTopologyData&lt;br /&gt;
getNodeTopologyForIdentity:&lt;br /&gt;
preventAutonomousMatchingMode:&lt;br /&gt;
getProvisioningState&lt;br /&gt;
registerDSID:withAuthToken:&lt;br /&gt;
registerStoreToken:&lt;br /&gt;
getCountersignedStoreToken:&lt;br /&gt;
getCalBlobVersion&lt;br /&gt;
getSensorCalibrationStatus&lt;br /&gt;
getCalibrationDataState&lt;br /&gt;
pullCaptureBuffer&lt;br /&gt;
pullDebugImageData:imageWidth:imageHeight:&lt;br /&gt;
provisionSensor&lt;br /&gt;
unpairSensor&lt;br /&gt;
lockSensor&lt;br /&gt;
setDebugImages:&lt;br /&gt;
getSerialisedTemplateForIdentity:&lt;br /&gt;
delegate&lt;br /&gt;
setDelegate:&lt;br /&gt;
interruptionHandler&lt;br /&gt;
_connection&lt;br /&gt;
_delegate&lt;br /&gt;
_interruptionHandler&lt;br /&gt;
setTopology:&lt;br /&gt;
setDetails:&lt;br /&gt;
topology&lt;br /&gt;
details&lt;br /&gt;
_topology&lt;br /&gt;
_details&lt;br /&gt;
initEnrollmentValues&lt;br /&gt;
message&lt;br /&gt;
messageDetails&lt;br /&gt;
objectForKeyedSubscript:&lt;br /&gt;
currentPrimaryComponentID&lt;br /&gt;
integerValue&lt;br /&gt;
doubleValue&lt;br /&gt;
statistics&lt;br /&gt;
enroll:&lt;br /&gt;
enrollResult:componentSet:&lt;br /&gt;
enrollProgress:&lt;br /&gt;
_fingerOn&lt;br /&gt;
_enrolling&lt;br /&gt;
_badImagePerFingerDown&lt;br /&gt;
_enrollmentStarTime&lt;br /&gt;
_touchesPerEnroll&lt;br /&gt;
_badImagesPerEnroll&lt;br /&gt;
_rejectedImagesPerEnroll&lt;br /&gt;
_primaryClusterAdditions&lt;br /&gt;
_primaryClusterFailedAdditions&lt;br /&gt;
_otherClustersAdditions&lt;br /&gt;
_joinEvents&lt;br /&gt;
_area&lt;br /&gt;
_primaryClusterArea&lt;br /&gt;
numberWithBool:&lt;br /&gt;
preferencesGetStringValue:&lt;br /&gt;
preferencesGetBOOLValue:&lt;br /&gt;
enableLogger:toPath:&lt;br /&gt;
manager&lt;br /&gt;
defaultCenter&lt;br /&gt;
appDidEnterBackground:&lt;br /&gt;
addObserver:selector:name:object:&lt;br /&gt;
appWillEnterForeground:&lt;br /&gt;
bundleForClass:&lt;br /&gt;
imageNamed:inBundle:&lt;br /&gt;
updateEnableLogger&lt;br /&gt;
dataWithBytes:length:&lt;br /&gt;
startEnrollLog&lt;br /&gt;
data&lt;br /&gt;
logRemoveIdentity:&lt;br /&gt;
bytes&lt;br /&gt;
imageFromRawImageData:&lt;br /&gt;
imageFromBitmapData:inRect:&lt;br /&gt;
pullDebugImageData:target:&lt;br /&gt;
getRadarAtachmentsForLastEnrollment&lt;br /&gt;
getRadarAtachmentsForLastMatch&lt;br /&gt;
length&lt;br /&gt;
stringWithString:&lt;br /&gt;
getModulationRatio&lt;br /&gt;
stringForProvisioningState:&lt;br /&gt;
getSensorPatchVersion&lt;br /&gt;
stringWithFormat:&lt;br /&gt;
getLogsForProcess:&lt;br /&gt;
sharedConnection&lt;br /&gt;
isFingerprintUnlockAllowed&lt;br /&gt;
setGracePeriod:passcode:completionBlock:&lt;br /&gt;
finishEnrollLogWithStatus:withIdentity:withTemplate:&lt;br /&gt;
matchResult:withDetails:&lt;br /&gt;
createMatchInfo:withTopology:withMatchImage:&lt;br /&gt;
logMatchResult:withTopology:withImage:withCaptureBuffer:withTemplate:&lt;br /&gt;
getBytes:length:&lt;br /&gt;
logEnrollMessage:withTopology:withImage:withCaptureBuffer:&lt;br /&gt;
logStatus:&lt;br /&gt;
enrollProgressMessage:&lt;br /&gt;
logRejectedImage:&lt;br /&gt;
size&lt;br /&gt;
drawInRect:&lt;br /&gt;
drawInRect:blendMode:alpha:&lt;br /&gt;
CGImage&lt;br /&gt;
scale&lt;br /&gt;
imageOrientation&lt;br /&gt;
imageWithCGImage:scale:orientation:&lt;br /&gt;
imageWithImage:inRect:&lt;br /&gt;
identityImage:&lt;br /&gt;
imageWithImage:withNode:withRect:alpha:&lt;br /&gt;
compositeTopologyImage:&lt;br /&gt;
imageTopology:forGroup:&lt;br /&gt;
imageFauxprint:withTheta:withLamda:&lt;br /&gt;
greenColor&lt;br /&gt;
imageWithImage:withTintColor:&lt;br /&gt;
dataWithData:&lt;br /&gt;
imageWithCGImage:&lt;br /&gt;
preferencesSetBOOLValue:forKey:&lt;br /&gt;
pullDebugImage:&lt;br /&gt;
getLoggerAttachmentsForRadar:&lt;br /&gt;
stringFromSensorConfiguration&lt;br /&gt;
matchIdentity:&lt;br /&gt;
topologyImage:&lt;br /&gt;
imageWithImage:withMaskImage:&lt;br /&gt;
inUse&lt;br /&gt;
setInUse:&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
setEnrollProgressConfigRenderMode:&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
setEnrollProgressConfigRenderViewSize:&lt;br /&gt;
renderMode&lt;br /&gt;
setRenderMode:&lt;br /&gt;
opacity&lt;br /&gt;
setOpacity:&lt;br /&gt;
_xpcClient&lt;br /&gt;
_enrollingMode&lt;br /&gt;
_matchingMode&lt;br /&gt;
_statistics&lt;br /&gt;
_scanbedImage&lt;br /&gt;
_fauxprintImage&lt;br /&gt;
_nodeRect&lt;br /&gt;
_images&lt;br /&gt;
_compSet&lt;br /&gt;
_rejectTouchCount&lt;br /&gt;
_rejectTouch&lt;br /&gt;
_showDebugImages&lt;br /&gt;
_enableLogger&lt;br /&gt;
_enrollImageSet&lt;br /&gt;
_isInternalInstall&lt;br /&gt;
_inUse&lt;br /&gt;
_enrollProgressConfigRenderMode&lt;br /&gt;
_renderMode&lt;br /&gt;
_opacity&lt;br /&gt;
_enrollProgressConfigRenderViewSize&lt;br /&gt;
setUuid:&lt;br /&gt;
decodeBytesForKey:returnedLength:&lt;br /&gt;
initWithUUIDBytes:&lt;br /&gt;
decodeIntForKey:&lt;br /&gt;
decodeObjectOfClass:forKey:&lt;br /&gt;
copy&lt;br /&gt;
getUUIDBytes:&lt;br /&gt;
encodeBytes:length:forKey:&lt;br /&gt;
encodeInt:forKey:&lt;br /&gt;
encodeObject:forKey:&lt;br /&gt;
biometricKitIdentity&lt;br /&gt;
supportsSecureCoding&lt;br /&gt;
encodeWithCoder:&lt;br /&gt;
initWithCoder:&lt;br /&gt;
uuid&lt;br /&gt;
type&lt;br /&gt;
setType:&lt;br /&gt;
attribute&lt;br /&gt;
setAttribute:&lt;br /&gt;
entity&lt;br /&gt;
setEntity:&lt;br /&gt;
name&lt;br /&gt;
setName:&lt;br /&gt;
stringByReplacingOccurrencesOfString:withString:&lt;br /&gt;
initWithCapacity:&lt;br /&gt;
setLength:&lt;br /&gt;
mutableBytes&lt;br /&gt;
defaultManager&lt;br /&gt;
createDirectoryAtPath:withIntermediateDirectories:attributes:error:&lt;br /&gt;
removeItemAtPath:error:&lt;br /&gt;
UUIDString&lt;br /&gt;
setMessageDetails:&lt;br /&gt;
setCaptureImage:&lt;br /&gt;
setRenderedImage:&lt;br /&gt;
progress&lt;br /&gt;
setProgress:&lt;br /&gt;
setCurrentPrimaryComponentID:&lt;br /&gt;
captureImage&lt;br /&gt;
renderedImage&lt;br /&gt;
setMessage:&lt;br /&gt;
_message&lt;br /&gt;
_progress&lt;br /&gt;
_currentPrimaryComponentID&lt;br /&gt;
_captureImage&lt;br /&gt;
_renderedImage&lt;br /&gt;
_messageDetails&lt;br /&gt;
setX:&lt;br /&gt;
setY:&lt;br /&gt;
angle&lt;br /&gt;
setAngle:&lt;br /&gt;
_angle&lt;br /&gt;
setTransformationCoordinates:&lt;br /&gt;
componentID&lt;br /&gt;
setComponentID:&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
_componentID&lt;br /&gt;
_transformationCoordinates&lt;br /&gt;
pathComponents&lt;br /&gt;
com.apple.biometrickitd&lt;br /&gt;
T@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;,N,V_delegate&lt;br /&gt;
interruptionHandler&lt;br /&gt;
T@?,C,N,V_interruptionHandler&lt;br /&gt;
topology&lt;br /&gt;
T@&amp;quot;NSDictionary&amp;quot;,&amp;amp;,N,V_details&lt;br /&gt;
com.apple.fingerprint.enroll.attempts&lt;br /&gt;
com.apple.fingerprint.enroll.passes&lt;br /&gt;
com.apple.fingerprint.enroll.touchesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.badImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.rejectedImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterFailedAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.otherClustersAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.joinEvents&lt;br /&gt;
com.apple.fingerprint.enroll.clusterCount&lt;br /&gt;
com.apple.fingerprint.enroll.nodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterNodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.area&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterArea&lt;br /&gt;
com.apple.fingerprint.enroll.passTime&lt;br /&gt;
com.apple.fingerprint.enroll.fails&lt;br /&gt;
com.apple.fingerprint.enroll.failTime&lt;br /&gt;
com.apple.ManagedConfiguration.profileListChanged&lt;br /&gt;
com.apple.biometrickitd.debugLogEnabled&lt;br /&gt;
com.apple.biometrickitd.debugLogPath&lt;br /&gt;
debugLogEnabled&lt;br /&gt;
debugLogPath&lt;br /&gt;
BKOptionSuppressHapticFeedback&lt;br /&gt;
BKOptionFilterOutHomeButtonEvents&lt;br /&gt;
BKOptionMatchForUnlock&lt;br /&gt;
InternalBuild&lt;br /&gt;
scanbed&lt;br /&gt;
synthetic&lt;br /&gt;
Uninitialized&lt;br /&gt;
Not Provisioned&lt;br /&gt;
Unprovisioned&lt;br /&gt;
Provisioned&lt;br /&gt;
Provisioned Locked&lt;br /&gt;
Unpaired&lt;br /&gt;
Unknown&lt;br /&gt;
biosensor,mesa&lt;br /&gt;
modulation-ratio&lt;br /&gt;
AppleBiometricSensor&lt;br /&gt;
patch-version&lt;br /&gt;
Mesa configuration:&lt;br /&gt;
Provisioning Status: %@&lt;br /&gt;
Calibrated: &lt;br /&gt;
- Version: &lt;br /&gt;
- Signed: &lt;br /&gt;
Modulation ratio: &lt;br /&gt;
Kernel: &lt;br /&gt;
Thick kernel&lt;br /&gt;
Thin kernel&lt;br /&gt;
Sensor Patch Version: &lt;br /&gt;
Steps to Reproduce:&lt;br /&gt;
inUse&lt;br /&gt;
TB,V_inUse&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
Ti,N,V_enrollProgressConfigRenderMode&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
T{CGSize=dd},N,V_enrollProgressConfigRenderViewSize&lt;br /&gt;
renderMode&lt;br /&gt;
Ti,N,V_renderMode&lt;br /&gt;
opacity&lt;br /&gt;
Tf,N,V_opacity&lt;br /&gt;
Notification callback.&lt;br /&gt;
BiometricKitErrorDomain&lt;br /&gt;
BKIdentityUUID&lt;br /&gt;
BKIdentityType&lt;br /&gt;
BKIdentityAttribute&lt;br /&gt;
BKIdentityEntityNumber&lt;br /&gt;
BKIdentityName&lt;br /&gt;
/var/mobile/BiometricKit/biometrickitd&lt;br /&gt;
BKEPDReason&lt;br /&gt;
BKEPDNewNodeID&lt;br /&gt;
BKEPDNewComponentID&lt;br /&gt;
BKEPDNewNodeCoordinates&lt;br /&gt;
BKEPDRemovedNodeID&lt;br /&gt;
BKEPDRemovedComponentID&lt;br /&gt;
BKEPDExtendedComponentID&lt;br /&gt;
BKEPDResultComponentID&lt;br /&gt;
BKEPDMergedInComponents&lt;br /&gt;
BKEPDRedundantNode&lt;br /&gt;
BKTDLargestCompArea&lt;br /&gt;
BKTDLargestCompNodes&lt;br /&gt;
BKTDTotalArea&lt;br /&gt;
BKTDTotalNodes&lt;br /&gt;
BKTemplateUpdated&lt;br /&gt;
Td,N,V_x&lt;br /&gt;
Td,N,V_y&lt;br /&gt;
angle&lt;br /&gt;
Td,N,V_angle&lt;br /&gt;
componentID&lt;br /&gt;
Tq,N,V_componentID&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
T@&amp;quot;BiometricKitEnrollProgressCoordinates&amp;quot;,&amp;amp;,N,V_transformationCoordinates&lt;br /&gt;
Remove identity: %@&lt;br /&gt;
Log package:%@&lt;br /&gt;
biometrickitd&lt;br /&gt;
%@.tar.gz&lt;br /&gt;
cd %@ &amp;amp;&amp;amp; tar -cjf %@ %@&lt;br /&gt;
Time: % 8.3f&lt;br /&gt;
PASS&lt;br /&gt;
FAIL&lt;br /&gt;
Closing log with result %@&lt;br /&gt;
Template identity:&lt;br /&gt;
UUID  : %@&lt;br /&gt;
Type  : %i&lt;br /&gt;
Attrib: %i&lt;br /&gt;
Entity: %i&lt;br /&gt;
Error: Unable to get identity&lt;br /&gt;
Serialised template: %@&lt;br /&gt;
%@_%04d.bin&lt;br /&gt;
Status message: %@&lt;br /&gt;
Progress %i&lt;br /&gt;
Count of enrollments: %i&lt;br /&gt;
BiometricKitErrorTaskCancelled&lt;br /&gt;
BiometricKitErrorIdentityInvalid&lt;br /&gt;
BiometricKitErrorIdentityNotAllowed&lt;br /&gt;
BiometricKitErrorIdentityErrorInvalidData&lt;br /&gt;
BiometricKitErrorIdentityErrorUnknown&lt;br /&gt;
BiometricKitStatusFingerOn&lt;br /&gt;
BiometricKitStatusFingerOff&lt;br /&gt;
BiometricKitStatusEnrollmentComplete&lt;br /&gt;
BiometricKitStatusEnrollmentCancelled&lt;br /&gt;
BiometricKitStatusEnrollmentFailed&lt;br /&gt;
BiometricKitStatusEnrollmentTimeout&lt;br /&gt;
BiometricKitStatusUnknownError&lt;br /&gt;
BiometricKitStatusImageRejected&lt;br /&gt;
BiometricKitStatusNoCalibration&lt;br /&gt;
BiometricKitImageForProcessing&lt;br /&gt;
BiometricKitStatusTemplateListUpdated&lt;br /&gt;
BiometricKitStatusRequestFingerOff&lt;br /&gt;
BiometricKitStatusAutoMatchingStarted&lt;br /&gt;
BiometricKitStatusAutoMatchingStopped&lt;br /&gt;
BiometricKitStatusCaptureRestart&lt;br /&gt;
BiometricKitStatusScanTooShort&lt;br /&gt;
BiometricKitStatusAutoMatchingStartByHomeButton&lt;br /&gt;
BiometricKitStatusMatchingCancelled&lt;br /&gt;
BiometricKitStatusFingerOnBeforeFirstPasscodeUnlock&lt;br /&gt;
BiometricKitStatusFingerOnInPasscodeLockout&lt;br /&gt;
BiometricKitStatusFingerOnInBioLockout&lt;br /&gt;
BiometricKitStatusFingerOnTokenExpired&lt;br /&gt;
BiometricKitStatusESDRecovery&lt;br /&gt;
BiometricKitStatusImageRejectedUnknown&lt;br /&gt;
BiometricKitStatusImageRejectedBadBlocks&lt;br /&gt;
BiometricKitStatusImageRejectedChFPN&lt;br /&gt;
BiometricKitStatusImageRejectedCaFPN&lt;br /&gt;
BiometricKitStatusSensorOperationModeIdle&lt;br /&gt;
BiometricKitStatusSensorOperationModeCapture&lt;br /&gt;
BiometricKitStatusSensorOperationModePause&lt;br /&gt;
Other unknown status %i&lt;br /&gt;
Image #%i was rejected&lt;br /&gt;
Sensor patch version: %ld&lt;br /&gt;
Sensor patch version: unknown&lt;br /&gt;
Calibration Data: %@&lt;br /&gt;
Capture buffer: %@&lt;br /&gt;
Matcher: image refused&lt;br /&gt;
Matcher: image %s node %u&lt;br /&gt;
added as&lt;br /&gt;
replaced&lt;br /&gt;
Coordinates: %s[%i, %i, %i]&lt;br /&gt;
inverse of &lt;br /&gt;
Parent: %i&lt;br /&gt;
Processed image: %@&lt;br /&gt;
Enroll debug log, version 7&lt;br /&gt;
static const node_placement_t table_%02i = &lt;br /&gt;
%@{%i,%i,%i,%i,%i,%i,{&lt;br /&gt;
%@{%i,%i,%i,%i,%i}&lt;br /&gt;
%@},%i,%i,%i,%i,%i,0x%04x};&lt;br /&gt;
bin8&lt;br /&gt;
bin16&lt;br /&gt;
binXX&lt;br /&gt;
calibdata.bin&lt;br /&gt;
calibration-blob&lt;br /&gt;
Image #%i%s&lt;br /&gt;
 was sent to matcher&lt;br /&gt;
Match result&lt;br /&gt;
Match details:&lt;br /&gt;
Matching score: %i&lt;br /&gt;
Match S2S count: %i&lt;br /&gt;
Matching node: %i&lt;br /&gt;
Updated node: %i&lt;br /&gt;
Not available&lt;br /&gt;
No match (artificial)&lt;br /&gt;
No match&lt;br /&gt;
Image #%i&lt;br /&gt;
Warning: the log is not complete, previous part of the log was deleted.&lt;br /&gt;
Starting enrollment&lt;br /&gt;
Starting matching&lt;br /&gt;
No known identities with enroll log are available.&lt;br /&gt;
Known identities with enroll log available:&lt;br /&gt;
%@ : %@&lt;br /&gt;
Match debug log, version 7&lt;br /&gt;
messages.log&lt;br /&gt;
OS version: %@ (%@)&lt;br /&gt;
Mesa: %@&lt;br /&gt;
Process name:%@&lt;br /&gt;
PrimaryUsagePage&lt;br /&gt;
PrimaryUsage&lt;br /&gt;
com.apple.iokit.hid.displayStatus&lt;br /&gt;
com.apple.mobile.keybagd.lock_status&lt;br /&gt;
AppleMesaSEPDriver&lt;br /&gt;
IOGeneralInterest&lt;br /&gt;
ScanningState&lt;br /&gt;
ScanningStateIdle&lt;br /&gt;
ScanningStateShortScanning&lt;br /&gt;
ScanningStateLongScanning&lt;br /&gt;
Unknown scanning state %i&lt;br /&gt;
Event: %@&lt;br /&gt;
HomeButtonPress&lt;br /&gt;
ExtendedDeviceLockState&lt;br /&gt;
MobileKeyBagDeviceIsUnlocked&lt;br /&gt;
MobileKeyBagDeviceIsLocked&lt;br /&gt;
MobileKeyBagDeviceIsLocking&lt;br /&gt;
MobileKeyBagDisabled&lt;br /&gt;
MobileKeyBagDeviceUnlockInProgress&lt;br /&gt;
MobileKeyBagDeviceInGracePeriod&lt;br /&gt;
MobileKeyBagDeviceInAssertDelay&lt;br /&gt;
MobileKeyBagDeviceInBioUnlock&lt;br /&gt;
Unknown lock state %i&lt;br /&gt;
DisplayOn&lt;br /&gt;
DisplayOff&lt;br /&gt;
/SourceCache/Mesa/Mesa-152/AppleBiometricServices/BiometricKit/BiometricKitDebugLog.m&lt;br /&gt;
/var/mobile/Library/Logs/CrashReporter/BiometricKit&lt;br /&gt;
v24@0:8@&amp;quot;BiometricKitIdentity&amp;quot;16&lt;br /&gt;
@&amp;quot;NSXPCConnection&amp;quot;&lt;br /&gt;
@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitXPCClient&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitStatistics&amp;quot;&lt;br /&gt;
@&amp;quot;UIImage&amp;quot;&lt;br /&gt;
[25{CGRect=&amp;quot;origin&amp;quot;{CGPoint=&amp;quot;x&amp;quot;d&amp;quot;y&amp;quot;d}&amp;quot;size&amp;quot;{CGSize=&amp;quot;width&amp;quot;d&amp;quot;height&amp;quot;d}}]&lt;br /&gt;
[25@&amp;quot;UIImage&amp;quot;]&lt;br /&gt;
{?=&amp;quot;count&amp;quot;i&amp;quot;capa&amp;quot;i&amp;quot;items&amp;quot;^^{?}&amp;quot;unusedImageCount&amp;quot;i&amp;quot;componentCount&amp;quot;i&amp;quot;componentCapa&amp;quot;i&amp;quot;bestComponentIndex&amp;quot;i&amp;quot;bestMapiComponentIndex&amp;quot;i&amp;quot;components&amp;quot;^^{?}&amp;quot;mapiNodeAddedIndex&amp;quot;s&amp;quot;mapiNodeRemovedIndex&amp;quot;s&amp;quot;updateCount&amp;quot;i&amp;quot;structureIsInconsistent&amp;quot;B}&lt;br /&gt;
{?=&amp;quot;nodes&amp;quot;[25{?=&amp;quot;imageData&amp;quot;@&amp;quot;NSData&amp;quot;&amp;quot;width&amp;quot;I&amp;quot;height&amp;quot;I}]}&lt;br /&gt;
BiometricKitXpcProtocol&lt;br /&gt;
BiometricKitDelegateXpcProtocol&lt;br /&gt;
BiometricKitXPCClient&lt;br /&gt;
BiometricKitTemplateInfo&lt;br /&gt;
BiometricKitStatistics&lt;br /&gt;
BiometricKit&lt;br /&gt;
BiometricKitDelegate&lt;br /&gt;
BiometricKitIdentity&lt;br /&gt;
NSSecureCoding&lt;br /&gt;
NSCoding&lt;br /&gt;
BiometricKitMatchInfo&lt;br /&gt;
BiometricKitEnrollProgressInfo&lt;br /&gt;
BiometricKitEnrollProgressCoordinates&lt;br /&gt;
BiometricKitEnrollProgressMergedComponent&lt;br /&gt;
BiometricKitDebugLog&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{stub|hardware}}&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=35005</id>
		<title>Touch ID</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=35005"/>
		<updated>2013-09-10T20:45:49Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Detailing the &amp;quot;Secure Enclave&amp;quot; with suspected technology derived from String Dump and a source who worked with NXP &amp;amp; fingerprint hardware.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[iPhone 5s]] comes equipped with '''Touch ID''', a fingerprint scanner. Currently, there is no official developer API for it, because it is intended for unlocking the device and purchasing items on [[iTunes Store]] only.&lt;br /&gt;
&lt;br /&gt;
However there is a private API for it; its dylib file is in [[Xcode]] 5 in the path &lt;br /&gt;
&amp;lt;pre&amp;gt;Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/BiometricKit.framework/BiometricKit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since it contains a 64-bit ARM segment only, the common disassembly tools cannot process the file.&lt;br /&gt;
&lt;br /&gt;
==Inferred Information==&lt;br /&gt;
Based on a string dump, here is what is implied.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The codename for it was &amp;quot;mesa&amp;quot; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It communicates over XPC to a binary that handles access to it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's a kernel extension to interface with it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The kernel extension communicates to the secure keystore to set and verify fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner calibrates itself and has upgradable firmware  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner uses normal image formats (i.e. UIImage) before setting and verifying fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's biometric lockout as well as passcode lockout  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; The A7 chip contains a secure element marketed as the Secure Enclave. The string dump refers to SEP, the Secure Element Protocol. This chip is most likely one sourced from NXP. It contains physical security to ensure that the only operations of the chip involve setting new fingerprints and verifying fingerprints against the ones stored in it (i.e. challenge-response). This way, the fingerprint data cannot be extracted from it. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== String Dump ==&lt;br /&gt;
Below there is a full string dump of the framework, which can hint at its functionalities.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initWithMachServiceName:options:&lt;br /&gt;
connectWithReplyBlock:&lt;br /&gt;
registerDelegate:withReplyBlock:&lt;br /&gt;
suspendWork:withReplyBlock:&lt;br /&gt;
enroll:withAuthToken:withReplyBlock:&lt;br /&gt;
match:withReplyBlock:&lt;br /&gt;
match:withOptions:withReplyBlock:&lt;br /&gt;
matchIdentities:withReplyBlock:&lt;br /&gt;
cancelWithReplyBlock:&lt;br /&gt;
updateIdentity:withReplyBlock:&lt;br /&gt;
removeIdentity:withReplyBlock:&lt;br /&gt;
getIdentityFromUUID:withReplyBlock:&lt;br /&gt;
identities:withReplyBlock:&lt;br /&gt;
resetEngineWithReplyBlock:&lt;br /&gt;
registerDSID:withAuthToken:withReplyBlock:&lt;br /&gt;
registerStoreToken:withReplyBlock:&lt;br /&gt;
getCountersignedStoreTokenWithReplyBlock:&lt;br /&gt;
getMaxIdentityCount:withReplyBlock:&lt;br /&gt;
enrollContinueWithReplyBlock:&lt;br /&gt;
pullAlignmentDataWithReplyBlock:&lt;br /&gt;
pullMatchTopologyDataWithReplyBlock:&lt;br /&gt;
getNodeTopologyForIdentity:withReplyBlock:&lt;br /&gt;
preventAutonomousMatchingMode:withReplyBlock:&lt;br /&gt;
getProvisioningStateWithReplyBlock:&lt;br /&gt;
getCalBlobVersionWithReplyBlock:&lt;br /&gt;
getSensorCalibrationStatusWithReplyBlock:&lt;br /&gt;
getCalibrationDataStateWithReplyBlock:&lt;br /&gt;
setDebugImages:withReplyBlock:&lt;br /&gt;
pullCaptureBufferWithReplyBlock:&lt;br /&gt;
pullDebugImageData:withReplyBlock:&lt;br /&gt;
provisionSensorWithReplyBlock:&lt;br /&gt;
unpairSensorWithReplyBlock:&lt;br /&gt;
lockSensorWithReplyBlock:&lt;br /&gt;
getSerialisedTemplateForIdentity:withReplyBlock:&lt;br /&gt;
interfaceWithProtocol:&lt;br /&gt;
setRemoteObjectInterface:&lt;br /&gt;
remoteObjectInterface&lt;br /&gt;
setWithObject:&lt;br /&gt;
setClasses:forSelector:argumentIndex:ofReply:&lt;br /&gt;
setWithObjects:&lt;br /&gt;
enrollResult:&lt;br /&gt;
matchResult:&lt;br /&gt;
statusMessage:&lt;br /&gt;
homeButtonPressed&lt;br /&gt;
setExportedInterface:&lt;br /&gt;
setExportedObject:&lt;br /&gt;
setInterruptionHandler:&lt;br /&gt;
resume&lt;br /&gt;
invalidate&lt;br /&gt;
remoteObjectProxyWithErrorHandler:&lt;br /&gt;
code&lt;br /&gt;
respondsToSelector:&lt;br /&gt;
connect&lt;br /&gt;
registerDelegate:&lt;br /&gt;
suspendWork:&lt;br /&gt;
enroll:withAuthToken:&lt;br /&gt;
match:&lt;br /&gt;
match:withOptions:&lt;br /&gt;
matchIdentities:&lt;br /&gt;
cancel&lt;br /&gt;
updateIdentity:&lt;br /&gt;
removeIdentity:&lt;br /&gt;
getIdentityFromUUID:&lt;br /&gt;
identities:&lt;br /&gt;
getMaxIdentityCount:&lt;br /&gt;
resetEngine&lt;br /&gt;
enrollContinue&lt;br /&gt;
pullAlignmentData&lt;br /&gt;
pullMatchTopologyData&lt;br /&gt;
getNodeTopologyForIdentity:&lt;br /&gt;
preventAutonomousMatchingMode:&lt;br /&gt;
getProvisioningState&lt;br /&gt;
registerDSID:withAuthToken:&lt;br /&gt;
registerStoreToken:&lt;br /&gt;
getCountersignedStoreToken:&lt;br /&gt;
getCalBlobVersion&lt;br /&gt;
getSensorCalibrationStatus&lt;br /&gt;
getCalibrationDataState&lt;br /&gt;
pullCaptureBuffer&lt;br /&gt;
pullDebugImageData:imageWidth:imageHeight:&lt;br /&gt;
provisionSensor&lt;br /&gt;
unpairSensor&lt;br /&gt;
lockSensor&lt;br /&gt;
setDebugImages:&lt;br /&gt;
getSerialisedTemplateForIdentity:&lt;br /&gt;
delegate&lt;br /&gt;
setDelegate:&lt;br /&gt;
interruptionHandler&lt;br /&gt;
_connection&lt;br /&gt;
_delegate&lt;br /&gt;
_interruptionHandler&lt;br /&gt;
setTopology:&lt;br /&gt;
setDetails:&lt;br /&gt;
topology&lt;br /&gt;
details&lt;br /&gt;
_topology&lt;br /&gt;
_details&lt;br /&gt;
initEnrollmentValues&lt;br /&gt;
message&lt;br /&gt;
messageDetails&lt;br /&gt;
objectForKeyedSubscript:&lt;br /&gt;
currentPrimaryComponentID&lt;br /&gt;
integerValue&lt;br /&gt;
doubleValue&lt;br /&gt;
statistics&lt;br /&gt;
enroll:&lt;br /&gt;
enrollResult:componentSet:&lt;br /&gt;
enrollProgress:&lt;br /&gt;
_fingerOn&lt;br /&gt;
_enrolling&lt;br /&gt;
_badImagePerFingerDown&lt;br /&gt;
_enrollmentStarTime&lt;br /&gt;
_touchesPerEnroll&lt;br /&gt;
_badImagesPerEnroll&lt;br /&gt;
_rejectedImagesPerEnroll&lt;br /&gt;
_primaryClusterAdditions&lt;br /&gt;
_primaryClusterFailedAdditions&lt;br /&gt;
_otherClustersAdditions&lt;br /&gt;
_joinEvents&lt;br /&gt;
_area&lt;br /&gt;
_primaryClusterArea&lt;br /&gt;
numberWithBool:&lt;br /&gt;
preferencesGetStringValue:&lt;br /&gt;
preferencesGetBOOLValue:&lt;br /&gt;
enableLogger:toPath:&lt;br /&gt;
manager&lt;br /&gt;
defaultCenter&lt;br /&gt;
appDidEnterBackground:&lt;br /&gt;
addObserver:selector:name:object:&lt;br /&gt;
appWillEnterForeground:&lt;br /&gt;
bundleForClass:&lt;br /&gt;
imageNamed:inBundle:&lt;br /&gt;
updateEnableLogger&lt;br /&gt;
dataWithBytes:length:&lt;br /&gt;
startEnrollLog&lt;br /&gt;
data&lt;br /&gt;
logRemoveIdentity:&lt;br /&gt;
bytes&lt;br /&gt;
imageFromRawImageData:&lt;br /&gt;
imageFromBitmapData:inRect:&lt;br /&gt;
pullDebugImageData:target:&lt;br /&gt;
getRadarAtachmentsForLastEnrollment&lt;br /&gt;
getRadarAtachmentsForLastMatch&lt;br /&gt;
length&lt;br /&gt;
stringWithString:&lt;br /&gt;
getModulationRatio&lt;br /&gt;
stringForProvisioningState:&lt;br /&gt;
getSensorPatchVersion&lt;br /&gt;
stringWithFormat:&lt;br /&gt;
getLogsForProcess:&lt;br /&gt;
sharedConnection&lt;br /&gt;
isFingerprintUnlockAllowed&lt;br /&gt;
setGracePeriod:passcode:completionBlock:&lt;br /&gt;
finishEnrollLogWithStatus:withIdentity:withTemplate:&lt;br /&gt;
matchResult:withDetails:&lt;br /&gt;
createMatchInfo:withTopology:withMatchImage:&lt;br /&gt;
logMatchResult:withTopology:withImage:withCaptureBuffer:withTemplate:&lt;br /&gt;
getBytes:length:&lt;br /&gt;
logEnrollMessage:withTopology:withImage:withCaptureBuffer:&lt;br /&gt;
logStatus:&lt;br /&gt;
enrollProgressMessage:&lt;br /&gt;
logRejectedImage:&lt;br /&gt;
size&lt;br /&gt;
drawInRect:&lt;br /&gt;
drawInRect:blendMode:alpha:&lt;br /&gt;
CGImage&lt;br /&gt;
scale&lt;br /&gt;
imageOrientation&lt;br /&gt;
imageWithCGImage:scale:orientation:&lt;br /&gt;
imageWithImage:inRect:&lt;br /&gt;
identityImage:&lt;br /&gt;
imageWithImage:withNode:withRect:alpha:&lt;br /&gt;
compositeTopologyImage:&lt;br /&gt;
imageTopology:forGroup:&lt;br /&gt;
imageFauxprint:withTheta:withLamda:&lt;br /&gt;
greenColor&lt;br /&gt;
imageWithImage:withTintColor:&lt;br /&gt;
dataWithData:&lt;br /&gt;
imageWithCGImage:&lt;br /&gt;
preferencesSetBOOLValue:forKey:&lt;br /&gt;
pullDebugImage:&lt;br /&gt;
getLoggerAttachmentsForRadar:&lt;br /&gt;
stringFromSensorConfiguration&lt;br /&gt;
matchIdentity:&lt;br /&gt;
topologyImage:&lt;br /&gt;
imageWithImage:withMaskImage:&lt;br /&gt;
inUse&lt;br /&gt;
setInUse:&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
setEnrollProgressConfigRenderMode:&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
setEnrollProgressConfigRenderViewSize:&lt;br /&gt;
renderMode&lt;br /&gt;
setRenderMode:&lt;br /&gt;
opacity&lt;br /&gt;
setOpacity:&lt;br /&gt;
_xpcClient&lt;br /&gt;
_enrollingMode&lt;br /&gt;
_matchingMode&lt;br /&gt;
_statistics&lt;br /&gt;
_scanbedImage&lt;br /&gt;
_fauxprintImage&lt;br /&gt;
_nodeRect&lt;br /&gt;
_images&lt;br /&gt;
_compSet&lt;br /&gt;
_rejectTouchCount&lt;br /&gt;
_rejectTouch&lt;br /&gt;
_showDebugImages&lt;br /&gt;
_enableLogger&lt;br /&gt;
_enrollImageSet&lt;br /&gt;
_isInternalInstall&lt;br /&gt;
_inUse&lt;br /&gt;
_enrollProgressConfigRenderMode&lt;br /&gt;
_renderMode&lt;br /&gt;
_opacity&lt;br /&gt;
_enrollProgressConfigRenderViewSize&lt;br /&gt;
setUuid:&lt;br /&gt;
decodeBytesForKey:returnedLength:&lt;br /&gt;
initWithUUIDBytes:&lt;br /&gt;
decodeIntForKey:&lt;br /&gt;
decodeObjectOfClass:forKey:&lt;br /&gt;
copy&lt;br /&gt;
getUUIDBytes:&lt;br /&gt;
encodeBytes:length:forKey:&lt;br /&gt;
encodeInt:forKey:&lt;br /&gt;
encodeObject:forKey:&lt;br /&gt;
biometricKitIdentity&lt;br /&gt;
supportsSecureCoding&lt;br /&gt;
encodeWithCoder:&lt;br /&gt;
initWithCoder:&lt;br /&gt;
uuid&lt;br /&gt;
type&lt;br /&gt;
setType:&lt;br /&gt;
attribute&lt;br /&gt;
setAttribute:&lt;br /&gt;
entity&lt;br /&gt;
setEntity:&lt;br /&gt;
name&lt;br /&gt;
setName:&lt;br /&gt;
stringByReplacingOccurrencesOfString:withString:&lt;br /&gt;
initWithCapacity:&lt;br /&gt;
setLength:&lt;br /&gt;
mutableBytes&lt;br /&gt;
defaultManager&lt;br /&gt;
createDirectoryAtPath:withIntermediateDirectories:attributes:error:&lt;br /&gt;
removeItemAtPath:error:&lt;br /&gt;
UUIDString&lt;br /&gt;
setMessageDetails:&lt;br /&gt;
setCaptureImage:&lt;br /&gt;
setRenderedImage:&lt;br /&gt;
progress&lt;br /&gt;
setProgress:&lt;br /&gt;
setCurrentPrimaryComponentID:&lt;br /&gt;
captureImage&lt;br /&gt;
renderedImage&lt;br /&gt;
setMessage:&lt;br /&gt;
_message&lt;br /&gt;
_progress&lt;br /&gt;
_currentPrimaryComponentID&lt;br /&gt;
_captureImage&lt;br /&gt;
_renderedImage&lt;br /&gt;
_messageDetails&lt;br /&gt;
setX:&lt;br /&gt;
setY:&lt;br /&gt;
angle&lt;br /&gt;
setAngle:&lt;br /&gt;
_angle&lt;br /&gt;
setTransformationCoordinates:&lt;br /&gt;
componentID&lt;br /&gt;
setComponentID:&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
_componentID&lt;br /&gt;
_transformationCoordinates&lt;br /&gt;
pathComponents&lt;br /&gt;
com.apple.biometrickitd&lt;br /&gt;
T@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;,N,V_delegate&lt;br /&gt;
interruptionHandler&lt;br /&gt;
T@?,C,N,V_interruptionHandler&lt;br /&gt;
topology&lt;br /&gt;
T@&amp;quot;NSDictionary&amp;quot;,&amp;amp;,N,V_details&lt;br /&gt;
com.apple.fingerprint.enroll.attempts&lt;br /&gt;
com.apple.fingerprint.enroll.passes&lt;br /&gt;
com.apple.fingerprint.enroll.touchesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.badImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.rejectedImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterFailedAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.otherClustersAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.joinEvents&lt;br /&gt;
com.apple.fingerprint.enroll.clusterCount&lt;br /&gt;
com.apple.fingerprint.enroll.nodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterNodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.area&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterArea&lt;br /&gt;
com.apple.fingerprint.enroll.passTime&lt;br /&gt;
com.apple.fingerprint.enroll.fails&lt;br /&gt;
com.apple.fingerprint.enroll.failTime&lt;br /&gt;
com.apple.ManagedConfiguration.profileListChanged&lt;br /&gt;
com.apple.biometrickitd.debugLogEnabled&lt;br /&gt;
com.apple.biometrickitd.debugLogPath&lt;br /&gt;
debugLogEnabled&lt;br /&gt;
debugLogPath&lt;br /&gt;
BKOptionSuppressHapticFeedback&lt;br /&gt;
BKOptionFilterOutHomeButtonEvents&lt;br /&gt;
BKOptionMatchForUnlock&lt;br /&gt;
InternalBuild&lt;br /&gt;
scanbed&lt;br /&gt;
synthetic&lt;br /&gt;
Uninitialized&lt;br /&gt;
Not Provisioned&lt;br /&gt;
Unprovisioned&lt;br /&gt;
Provisioned&lt;br /&gt;
Provisioned Locked&lt;br /&gt;
Unpaired&lt;br /&gt;
Unknown&lt;br /&gt;
biosensor,mesa&lt;br /&gt;
modulation-ratio&lt;br /&gt;
AppleBiometricSensor&lt;br /&gt;
patch-version&lt;br /&gt;
Mesa configuration:&lt;br /&gt;
Provisioning Status: %@&lt;br /&gt;
Calibrated: &lt;br /&gt;
- Version: &lt;br /&gt;
- Signed: &lt;br /&gt;
Modulation ratio: &lt;br /&gt;
Kernel: &lt;br /&gt;
Thick kernel&lt;br /&gt;
Thin kernel&lt;br /&gt;
Sensor Patch Version: &lt;br /&gt;
Steps to Reproduce:&lt;br /&gt;
inUse&lt;br /&gt;
TB,V_inUse&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
Ti,N,V_enrollProgressConfigRenderMode&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
T{CGSize=dd},N,V_enrollProgressConfigRenderViewSize&lt;br /&gt;
renderMode&lt;br /&gt;
Ti,N,V_renderMode&lt;br /&gt;
opacity&lt;br /&gt;
Tf,N,V_opacity&lt;br /&gt;
Notification callback.&lt;br /&gt;
BiometricKitErrorDomain&lt;br /&gt;
BKIdentityUUID&lt;br /&gt;
BKIdentityType&lt;br /&gt;
BKIdentityAttribute&lt;br /&gt;
BKIdentityEntityNumber&lt;br /&gt;
BKIdentityName&lt;br /&gt;
/var/mobile/BiometricKit/biometrickitd&lt;br /&gt;
BKEPDReason&lt;br /&gt;
BKEPDNewNodeID&lt;br /&gt;
BKEPDNewComponentID&lt;br /&gt;
BKEPDNewNodeCoordinates&lt;br /&gt;
BKEPDRemovedNodeID&lt;br /&gt;
BKEPDRemovedComponentID&lt;br /&gt;
BKEPDExtendedComponentID&lt;br /&gt;
BKEPDResultComponentID&lt;br /&gt;
BKEPDMergedInComponents&lt;br /&gt;
BKEPDRedundantNode&lt;br /&gt;
BKTDLargestCompArea&lt;br /&gt;
BKTDLargestCompNodes&lt;br /&gt;
BKTDTotalArea&lt;br /&gt;
BKTDTotalNodes&lt;br /&gt;
BKTemplateUpdated&lt;br /&gt;
Td,N,V_x&lt;br /&gt;
Td,N,V_y&lt;br /&gt;
angle&lt;br /&gt;
Td,N,V_angle&lt;br /&gt;
componentID&lt;br /&gt;
Tq,N,V_componentID&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
T@&amp;quot;BiometricKitEnrollProgressCoordinates&amp;quot;,&amp;amp;,N,V_transformationCoordinates&lt;br /&gt;
Remove identity: %@&lt;br /&gt;
Log package:%@&lt;br /&gt;
biometrickitd&lt;br /&gt;
%@.tar.gz&lt;br /&gt;
cd %@ &amp;amp;&amp;amp; tar -cjf %@ %@&lt;br /&gt;
Time: % 8.3f&lt;br /&gt;
PASS&lt;br /&gt;
FAIL&lt;br /&gt;
Closing log with result %@&lt;br /&gt;
Template identity:&lt;br /&gt;
UUID  : %@&lt;br /&gt;
Type  : %i&lt;br /&gt;
Attrib: %i&lt;br /&gt;
Entity: %i&lt;br /&gt;
Error: Unable to get identity&lt;br /&gt;
Serialised template: %@&lt;br /&gt;
%@_%04d.bin&lt;br /&gt;
Status message: %@&lt;br /&gt;
Progress %i&lt;br /&gt;
Count of enrollments: %i&lt;br /&gt;
BiometricKitErrorTaskCancelled&lt;br /&gt;
BiometricKitErrorIdentityInvalid&lt;br /&gt;
BiometricKitErrorIdentityNotAllowed&lt;br /&gt;
BiometricKitErrorIdentityErrorInvalidData&lt;br /&gt;
BiometricKitErrorIdentityErrorUnknown&lt;br /&gt;
BiometricKitStatusFingerOn&lt;br /&gt;
BiometricKitStatusFingerOff&lt;br /&gt;
BiometricKitStatusEnrollmentComplete&lt;br /&gt;
BiometricKitStatusEnrollmentCancelled&lt;br /&gt;
BiometricKitStatusEnrollmentFailed&lt;br /&gt;
BiometricKitStatusEnrollmentTimeout&lt;br /&gt;
BiometricKitStatusUnknownError&lt;br /&gt;
BiometricKitStatusImageRejected&lt;br /&gt;
BiometricKitStatusNoCalibration&lt;br /&gt;
BiometricKitImageForProcessing&lt;br /&gt;
BiometricKitStatusTemplateListUpdated&lt;br /&gt;
BiometricKitStatusRequestFingerOff&lt;br /&gt;
BiometricKitStatusAutoMatchingStarted&lt;br /&gt;
BiometricKitStatusAutoMatchingStopped&lt;br /&gt;
BiometricKitStatusCaptureRestart&lt;br /&gt;
BiometricKitStatusScanTooShort&lt;br /&gt;
BiometricKitStatusAutoMatchingStartByHomeButton&lt;br /&gt;
BiometricKitStatusMatchingCancelled&lt;br /&gt;
BiometricKitStatusFingerOnBeforeFirstPasscodeUnlock&lt;br /&gt;
BiometricKitStatusFingerOnInPasscodeLockout&lt;br /&gt;
BiometricKitStatusFingerOnInBioLockout&lt;br /&gt;
BiometricKitStatusFingerOnTokenExpired&lt;br /&gt;
BiometricKitStatusESDRecovery&lt;br /&gt;
BiometricKitStatusImageRejectedUnknown&lt;br /&gt;
BiometricKitStatusImageRejectedBadBlocks&lt;br /&gt;
BiometricKitStatusImageRejectedChFPN&lt;br /&gt;
BiometricKitStatusImageRejectedCaFPN&lt;br /&gt;
BiometricKitStatusSensorOperationModeIdle&lt;br /&gt;
BiometricKitStatusSensorOperationModeCapture&lt;br /&gt;
BiometricKitStatusSensorOperationModePause&lt;br /&gt;
Other unknown status %i&lt;br /&gt;
Image #%i was rejected&lt;br /&gt;
Sensor patch version: %ld&lt;br /&gt;
Sensor patch version: unknown&lt;br /&gt;
Calibration Data: %@&lt;br /&gt;
Capture buffer: %@&lt;br /&gt;
Matcher: image refused&lt;br /&gt;
Matcher: image %s node %u&lt;br /&gt;
added as&lt;br /&gt;
replaced&lt;br /&gt;
Coordinates: %s[%i, %i, %i]&lt;br /&gt;
inverse of &lt;br /&gt;
Parent: %i&lt;br /&gt;
Processed image: %@&lt;br /&gt;
Enroll debug log, version 7&lt;br /&gt;
static const node_placement_t table_%02i = &lt;br /&gt;
%@{%i,%i,%i,%i,%i,%i,{&lt;br /&gt;
%@{%i,%i,%i,%i,%i}&lt;br /&gt;
%@},%i,%i,%i,%i,%i,0x%04x};&lt;br /&gt;
bin8&lt;br /&gt;
bin16&lt;br /&gt;
binXX&lt;br /&gt;
calibdata.bin&lt;br /&gt;
calibration-blob&lt;br /&gt;
Image #%i%s&lt;br /&gt;
 was sent to matcher&lt;br /&gt;
Match result&lt;br /&gt;
Match details:&lt;br /&gt;
Matching score: %i&lt;br /&gt;
Match S2S count: %i&lt;br /&gt;
Matching node: %i&lt;br /&gt;
Updated node: %i&lt;br /&gt;
Not available&lt;br /&gt;
No match (artificial)&lt;br /&gt;
No match&lt;br /&gt;
Image #%i&lt;br /&gt;
Warning: the log is not complete, previous part of the log was deleted.&lt;br /&gt;
Starting enrollment&lt;br /&gt;
Starting matching&lt;br /&gt;
No known identities with enroll log are available.&lt;br /&gt;
Known identities with enroll log available:&lt;br /&gt;
%@ : %@&lt;br /&gt;
Match debug log, version 7&lt;br /&gt;
messages.log&lt;br /&gt;
OS version: %@ (%@)&lt;br /&gt;
Mesa: %@&lt;br /&gt;
Process name:%@&lt;br /&gt;
PrimaryUsagePage&lt;br /&gt;
PrimaryUsage&lt;br /&gt;
com.apple.iokit.hid.displayStatus&lt;br /&gt;
com.apple.mobile.keybagd.lock_status&lt;br /&gt;
AppleMesaSEPDriver&lt;br /&gt;
IOGeneralInterest&lt;br /&gt;
ScanningState&lt;br /&gt;
ScanningStateIdle&lt;br /&gt;
ScanningStateShortScanning&lt;br /&gt;
ScanningStateLongScanning&lt;br /&gt;
Unknown scanning state %i&lt;br /&gt;
Event: %@&lt;br /&gt;
HomeButtonPress&lt;br /&gt;
ExtendedDeviceLockState&lt;br /&gt;
MobileKeyBagDeviceIsUnlocked&lt;br /&gt;
MobileKeyBagDeviceIsLocked&lt;br /&gt;
MobileKeyBagDeviceIsLocking&lt;br /&gt;
MobileKeyBagDisabled&lt;br /&gt;
MobileKeyBagDeviceUnlockInProgress&lt;br /&gt;
MobileKeyBagDeviceInGracePeriod&lt;br /&gt;
MobileKeyBagDeviceInAssertDelay&lt;br /&gt;
MobileKeyBagDeviceInBioUnlock&lt;br /&gt;
Unknown lock state %i&lt;br /&gt;
DisplayOn&lt;br /&gt;
DisplayOff&lt;br /&gt;
/SourceCache/Mesa/Mesa-152/AppleBiometricServices/BiometricKit/BiometricKitDebugLog.m&lt;br /&gt;
/var/mobile/Library/Logs/CrashReporter/BiometricKit&lt;br /&gt;
v24@0:8@&amp;quot;BiometricKitIdentity&amp;quot;16&lt;br /&gt;
@&amp;quot;NSXPCConnection&amp;quot;&lt;br /&gt;
@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitXPCClient&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitStatistics&amp;quot;&lt;br /&gt;
@&amp;quot;UIImage&amp;quot;&lt;br /&gt;
[25{CGRect=&amp;quot;origin&amp;quot;{CGPoint=&amp;quot;x&amp;quot;d&amp;quot;y&amp;quot;d}&amp;quot;size&amp;quot;{CGSize=&amp;quot;width&amp;quot;d&amp;quot;height&amp;quot;d}}]&lt;br /&gt;
[25@&amp;quot;UIImage&amp;quot;]&lt;br /&gt;
{?=&amp;quot;count&amp;quot;i&amp;quot;capa&amp;quot;i&amp;quot;items&amp;quot;^^{?}&amp;quot;unusedImageCount&amp;quot;i&amp;quot;componentCount&amp;quot;i&amp;quot;componentCapa&amp;quot;i&amp;quot;bestComponentIndex&amp;quot;i&amp;quot;bestMapiComponentIndex&amp;quot;i&amp;quot;components&amp;quot;^^{?}&amp;quot;mapiNodeAddedIndex&amp;quot;s&amp;quot;mapiNodeRemovedIndex&amp;quot;s&amp;quot;updateCount&amp;quot;i&amp;quot;structureIsInconsistent&amp;quot;B}&lt;br /&gt;
{?=&amp;quot;nodes&amp;quot;[25{?=&amp;quot;imageData&amp;quot;@&amp;quot;NSData&amp;quot;&amp;quot;width&amp;quot;I&amp;quot;height&amp;quot;I}]}&lt;br /&gt;
BiometricKitXpcProtocol&lt;br /&gt;
BiometricKitDelegateXpcProtocol&lt;br /&gt;
BiometricKitXPCClient&lt;br /&gt;
BiometricKitTemplateInfo&lt;br /&gt;
BiometricKitStatistics&lt;br /&gt;
BiometricKit&lt;br /&gt;
BiometricKitDelegate&lt;br /&gt;
BiometricKitIdentity&lt;br /&gt;
NSSecureCoding&lt;br /&gt;
NSCoding&lt;br /&gt;
BiometricKitMatchInfo&lt;br /&gt;
BiometricKitEnrollProgressInfo&lt;br /&gt;
BiometricKitEnrollProgressCoordinates&lt;br /&gt;
BiometricKitEnrollProgressMergedComponent&lt;br /&gt;
BiometricKitDebugLog&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{stub|hardware}}&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=34992</id>
		<title>Touch ID</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=34992"/>
		<updated>2013-09-10T20:31:25Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Inferred Information */ typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The iPhone 5S comes equipped with a fingerprint scanner. There is not an official developer API for it. &lt;br /&gt;
&lt;br /&gt;
However there is a private API for it. The dylib file for it is here: &lt;br /&gt;
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/BiometricKit.framework/BiometricKit&lt;br /&gt;
&lt;br /&gt;
It contains only a 64-bit Arm segment, and so the common disassembly tools cannot process the instructions well. &lt;br /&gt;
&lt;br /&gt;
==Inferred Information==&lt;br /&gt;
Based on the string dump, here is what is implied.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The codename for it was &amp;quot;mesa&amp;quot; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It communicates over XPC to a binary that handles access to it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's a kernel extension to interface with it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The kernel extension communicates to the secure keystore to set and verify fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner calibrates itself and has upgradable firmware  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner uses normal image formats (i.e. UIImage) before setting and verifying fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's biometric lockout as well as passcode lockout  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== String Dump ==&lt;br /&gt;
Here is the long string dump of the contents of the BiometricKit library. These strings hint at the functionality of the framework.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initWithMachServiceName:options:&lt;br /&gt;
connectWithReplyBlock:&lt;br /&gt;
registerDelegate:withReplyBlock:&lt;br /&gt;
suspendWork:withReplyBlock:&lt;br /&gt;
enroll:withAuthToken:withReplyBlock:&lt;br /&gt;
match:withReplyBlock:&lt;br /&gt;
match:withOptions:withReplyBlock:&lt;br /&gt;
matchIdentities:withReplyBlock:&lt;br /&gt;
cancelWithReplyBlock:&lt;br /&gt;
updateIdentity:withReplyBlock:&lt;br /&gt;
removeIdentity:withReplyBlock:&lt;br /&gt;
getIdentityFromUUID:withReplyBlock:&lt;br /&gt;
identities:withReplyBlock:&lt;br /&gt;
resetEngineWithReplyBlock:&lt;br /&gt;
registerDSID:withAuthToken:withReplyBlock:&lt;br /&gt;
registerStoreToken:withReplyBlock:&lt;br /&gt;
getCountersignedStoreTokenWithReplyBlock:&lt;br /&gt;
getMaxIdentityCount:withReplyBlock:&lt;br /&gt;
enrollContinueWithReplyBlock:&lt;br /&gt;
pullAlignmentDataWithReplyBlock:&lt;br /&gt;
pullMatchTopologyDataWithReplyBlock:&lt;br /&gt;
getNodeTopologyForIdentity:withReplyBlock:&lt;br /&gt;
preventAutonomousMatchingMode:withReplyBlock:&lt;br /&gt;
getProvisioningStateWithReplyBlock:&lt;br /&gt;
getCalBlobVersionWithReplyBlock:&lt;br /&gt;
getSensorCalibrationStatusWithReplyBlock:&lt;br /&gt;
getCalibrationDataStateWithReplyBlock:&lt;br /&gt;
setDebugImages:withReplyBlock:&lt;br /&gt;
pullCaptureBufferWithReplyBlock:&lt;br /&gt;
pullDebugImageData:withReplyBlock:&lt;br /&gt;
provisionSensorWithReplyBlock:&lt;br /&gt;
unpairSensorWithReplyBlock:&lt;br /&gt;
lockSensorWithReplyBlock:&lt;br /&gt;
getSerialisedTemplateForIdentity:withReplyBlock:&lt;br /&gt;
interfaceWithProtocol:&lt;br /&gt;
setRemoteObjectInterface:&lt;br /&gt;
remoteObjectInterface&lt;br /&gt;
setWithObject:&lt;br /&gt;
setClasses:forSelector:argumentIndex:ofReply:&lt;br /&gt;
setWithObjects:&lt;br /&gt;
enrollResult:&lt;br /&gt;
matchResult:&lt;br /&gt;
statusMessage:&lt;br /&gt;
homeButtonPressed&lt;br /&gt;
setExportedInterface:&lt;br /&gt;
setExportedObject:&lt;br /&gt;
setInterruptionHandler:&lt;br /&gt;
resume&lt;br /&gt;
invalidate&lt;br /&gt;
remoteObjectProxyWithErrorHandler:&lt;br /&gt;
code&lt;br /&gt;
respondsToSelector:&lt;br /&gt;
connect&lt;br /&gt;
registerDelegate:&lt;br /&gt;
suspendWork:&lt;br /&gt;
enroll:withAuthToken:&lt;br /&gt;
match:&lt;br /&gt;
match:withOptions:&lt;br /&gt;
matchIdentities:&lt;br /&gt;
cancel&lt;br /&gt;
updateIdentity:&lt;br /&gt;
removeIdentity:&lt;br /&gt;
getIdentityFromUUID:&lt;br /&gt;
identities:&lt;br /&gt;
getMaxIdentityCount:&lt;br /&gt;
resetEngine&lt;br /&gt;
enrollContinue&lt;br /&gt;
pullAlignmentData&lt;br /&gt;
pullMatchTopologyData&lt;br /&gt;
getNodeTopologyForIdentity:&lt;br /&gt;
preventAutonomousMatchingMode:&lt;br /&gt;
getProvisioningState&lt;br /&gt;
registerDSID:withAuthToken:&lt;br /&gt;
registerStoreToken:&lt;br /&gt;
getCountersignedStoreToken:&lt;br /&gt;
getCalBlobVersion&lt;br /&gt;
getSensorCalibrationStatus&lt;br /&gt;
getCalibrationDataState&lt;br /&gt;
pullCaptureBuffer&lt;br /&gt;
pullDebugImageData:imageWidth:imageHeight:&lt;br /&gt;
provisionSensor&lt;br /&gt;
unpairSensor&lt;br /&gt;
lockSensor&lt;br /&gt;
setDebugImages:&lt;br /&gt;
getSerialisedTemplateForIdentity:&lt;br /&gt;
delegate&lt;br /&gt;
setDelegate:&lt;br /&gt;
interruptionHandler&lt;br /&gt;
_connection&lt;br /&gt;
_delegate&lt;br /&gt;
_interruptionHandler&lt;br /&gt;
setTopology:&lt;br /&gt;
setDetails:&lt;br /&gt;
topology&lt;br /&gt;
details&lt;br /&gt;
_topology&lt;br /&gt;
_details&lt;br /&gt;
initEnrollmentValues&lt;br /&gt;
message&lt;br /&gt;
messageDetails&lt;br /&gt;
objectForKeyedSubscript:&lt;br /&gt;
currentPrimaryComponentID&lt;br /&gt;
integerValue&lt;br /&gt;
doubleValue&lt;br /&gt;
statistics&lt;br /&gt;
enroll:&lt;br /&gt;
enrollResult:componentSet:&lt;br /&gt;
enrollProgress:&lt;br /&gt;
_fingerOn&lt;br /&gt;
_enrolling&lt;br /&gt;
_badImagePerFingerDown&lt;br /&gt;
_enrollmentStarTime&lt;br /&gt;
_touchesPerEnroll&lt;br /&gt;
_badImagesPerEnroll&lt;br /&gt;
_rejectedImagesPerEnroll&lt;br /&gt;
_primaryClusterAdditions&lt;br /&gt;
_primaryClusterFailedAdditions&lt;br /&gt;
_otherClustersAdditions&lt;br /&gt;
_joinEvents&lt;br /&gt;
_area&lt;br /&gt;
_primaryClusterArea&lt;br /&gt;
numberWithBool:&lt;br /&gt;
preferencesGetStringValue:&lt;br /&gt;
preferencesGetBOOLValue:&lt;br /&gt;
enableLogger:toPath:&lt;br /&gt;
manager&lt;br /&gt;
defaultCenter&lt;br /&gt;
appDidEnterBackground:&lt;br /&gt;
addObserver:selector:name:object:&lt;br /&gt;
appWillEnterForeground:&lt;br /&gt;
bundleForClass:&lt;br /&gt;
imageNamed:inBundle:&lt;br /&gt;
updateEnableLogger&lt;br /&gt;
dataWithBytes:length:&lt;br /&gt;
startEnrollLog&lt;br /&gt;
data&lt;br /&gt;
logRemoveIdentity:&lt;br /&gt;
bytes&lt;br /&gt;
imageFromRawImageData:&lt;br /&gt;
imageFromBitmapData:inRect:&lt;br /&gt;
pullDebugImageData:target:&lt;br /&gt;
getRadarAtachmentsForLastEnrollment&lt;br /&gt;
getRadarAtachmentsForLastMatch&lt;br /&gt;
length&lt;br /&gt;
stringWithString:&lt;br /&gt;
getModulationRatio&lt;br /&gt;
stringForProvisioningState:&lt;br /&gt;
getSensorPatchVersion&lt;br /&gt;
stringWithFormat:&lt;br /&gt;
getLogsForProcess:&lt;br /&gt;
sharedConnection&lt;br /&gt;
isFingerprintUnlockAllowed&lt;br /&gt;
setGracePeriod:passcode:completionBlock:&lt;br /&gt;
finishEnrollLogWithStatus:withIdentity:withTemplate:&lt;br /&gt;
matchResult:withDetails:&lt;br /&gt;
createMatchInfo:withTopology:withMatchImage:&lt;br /&gt;
logMatchResult:withTopology:withImage:withCaptureBuffer:withTemplate:&lt;br /&gt;
getBytes:length:&lt;br /&gt;
logEnrollMessage:withTopology:withImage:withCaptureBuffer:&lt;br /&gt;
logStatus:&lt;br /&gt;
enrollProgressMessage:&lt;br /&gt;
logRejectedImage:&lt;br /&gt;
size&lt;br /&gt;
drawInRect:&lt;br /&gt;
drawInRect:blendMode:alpha:&lt;br /&gt;
CGImage&lt;br /&gt;
scale&lt;br /&gt;
imageOrientation&lt;br /&gt;
imageWithCGImage:scale:orientation:&lt;br /&gt;
imageWithImage:inRect:&lt;br /&gt;
identityImage:&lt;br /&gt;
imageWithImage:withNode:withRect:alpha:&lt;br /&gt;
compositeTopologyImage:&lt;br /&gt;
imageTopology:forGroup:&lt;br /&gt;
imageFauxprint:withTheta:withLamda:&lt;br /&gt;
greenColor&lt;br /&gt;
imageWithImage:withTintColor:&lt;br /&gt;
dataWithData:&lt;br /&gt;
imageWithCGImage:&lt;br /&gt;
preferencesSetBOOLValue:forKey:&lt;br /&gt;
pullDebugImage:&lt;br /&gt;
getLoggerAttachmentsForRadar:&lt;br /&gt;
stringFromSensorConfiguration&lt;br /&gt;
matchIdentity:&lt;br /&gt;
topologyImage:&lt;br /&gt;
imageWithImage:withMaskImage:&lt;br /&gt;
inUse&lt;br /&gt;
setInUse:&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
setEnrollProgressConfigRenderMode:&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
setEnrollProgressConfigRenderViewSize:&lt;br /&gt;
renderMode&lt;br /&gt;
setRenderMode:&lt;br /&gt;
opacity&lt;br /&gt;
setOpacity:&lt;br /&gt;
_xpcClient&lt;br /&gt;
_enrollingMode&lt;br /&gt;
_matchingMode&lt;br /&gt;
_statistics&lt;br /&gt;
_scanbedImage&lt;br /&gt;
_fauxprintImage&lt;br /&gt;
_nodeRect&lt;br /&gt;
_images&lt;br /&gt;
_compSet&lt;br /&gt;
_rejectTouchCount&lt;br /&gt;
_rejectTouch&lt;br /&gt;
_showDebugImages&lt;br /&gt;
_enableLogger&lt;br /&gt;
_enrollImageSet&lt;br /&gt;
_isInternalInstall&lt;br /&gt;
_inUse&lt;br /&gt;
_enrollProgressConfigRenderMode&lt;br /&gt;
_renderMode&lt;br /&gt;
_opacity&lt;br /&gt;
_enrollProgressConfigRenderViewSize&lt;br /&gt;
setUuid:&lt;br /&gt;
decodeBytesForKey:returnedLength:&lt;br /&gt;
initWithUUIDBytes:&lt;br /&gt;
decodeIntForKey:&lt;br /&gt;
decodeObjectOfClass:forKey:&lt;br /&gt;
copy&lt;br /&gt;
getUUIDBytes:&lt;br /&gt;
encodeBytes:length:forKey:&lt;br /&gt;
encodeInt:forKey:&lt;br /&gt;
encodeObject:forKey:&lt;br /&gt;
biometricKitIdentity&lt;br /&gt;
supportsSecureCoding&lt;br /&gt;
encodeWithCoder:&lt;br /&gt;
initWithCoder:&lt;br /&gt;
uuid&lt;br /&gt;
type&lt;br /&gt;
setType:&lt;br /&gt;
attribute&lt;br /&gt;
setAttribute:&lt;br /&gt;
entity&lt;br /&gt;
setEntity:&lt;br /&gt;
name&lt;br /&gt;
setName:&lt;br /&gt;
stringByReplacingOccurrencesOfString:withString:&lt;br /&gt;
initWithCapacity:&lt;br /&gt;
setLength:&lt;br /&gt;
mutableBytes&lt;br /&gt;
defaultManager&lt;br /&gt;
createDirectoryAtPath:withIntermediateDirectories:attributes:error:&lt;br /&gt;
removeItemAtPath:error:&lt;br /&gt;
UUIDString&lt;br /&gt;
setMessageDetails:&lt;br /&gt;
setCaptureImage:&lt;br /&gt;
setRenderedImage:&lt;br /&gt;
progress&lt;br /&gt;
setProgress:&lt;br /&gt;
setCurrentPrimaryComponentID:&lt;br /&gt;
captureImage&lt;br /&gt;
renderedImage&lt;br /&gt;
setMessage:&lt;br /&gt;
_message&lt;br /&gt;
_progress&lt;br /&gt;
_currentPrimaryComponentID&lt;br /&gt;
_captureImage&lt;br /&gt;
_renderedImage&lt;br /&gt;
_messageDetails&lt;br /&gt;
setX:&lt;br /&gt;
setY:&lt;br /&gt;
angle&lt;br /&gt;
setAngle:&lt;br /&gt;
_angle&lt;br /&gt;
setTransformationCoordinates:&lt;br /&gt;
componentID&lt;br /&gt;
setComponentID:&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
_componentID&lt;br /&gt;
_transformationCoordinates&lt;br /&gt;
pathComponents&lt;br /&gt;
com.apple.biometrickitd&lt;br /&gt;
T@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;,N,V_delegate&lt;br /&gt;
interruptionHandler&lt;br /&gt;
T@?,C,N,V_interruptionHandler&lt;br /&gt;
topology&lt;br /&gt;
T@&amp;quot;NSDictionary&amp;quot;,&amp;amp;,N,V_details&lt;br /&gt;
com.apple.fingerprint.enroll.attempts&lt;br /&gt;
com.apple.fingerprint.enroll.passes&lt;br /&gt;
com.apple.fingerprint.enroll.touchesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.badImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.rejectedImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterFailedAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.otherClustersAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.joinEvents&lt;br /&gt;
com.apple.fingerprint.enroll.clusterCount&lt;br /&gt;
com.apple.fingerprint.enroll.nodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterNodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.area&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterArea&lt;br /&gt;
com.apple.fingerprint.enroll.passTime&lt;br /&gt;
com.apple.fingerprint.enroll.fails&lt;br /&gt;
com.apple.fingerprint.enroll.failTime&lt;br /&gt;
com.apple.ManagedConfiguration.profileListChanged&lt;br /&gt;
com.apple.biometrickitd.debugLogEnabled&lt;br /&gt;
com.apple.biometrickitd.debugLogPath&lt;br /&gt;
debugLogEnabled&lt;br /&gt;
debugLogPath&lt;br /&gt;
BKOptionSuppressHapticFeedback&lt;br /&gt;
BKOptionFilterOutHomeButtonEvents&lt;br /&gt;
BKOptionMatchForUnlock&lt;br /&gt;
InternalBuild&lt;br /&gt;
scanbed&lt;br /&gt;
synthetic&lt;br /&gt;
Uninitialized&lt;br /&gt;
Not Provisioned&lt;br /&gt;
Unprovisioned&lt;br /&gt;
Provisioned&lt;br /&gt;
Provisioned Locked&lt;br /&gt;
Unpaired&lt;br /&gt;
Unknown&lt;br /&gt;
biosensor,mesa&lt;br /&gt;
modulation-ratio&lt;br /&gt;
AppleBiometricSensor&lt;br /&gt;
patch-version&lt;br /&gt;
Mesa configuration:&lt;br /&gt;
Provisioning Status: %@&lt;br /&gt;
Calibrated: &lt;br /&gt;
- Version: &lt;br /&gt;
- Signed: &lt;br /&gt;
Modulation ratio: &lt;br /&gt;
Kernel: &lt;br /&gt;
Thick kernel&lt;br /&gt;
Thin kernel&lt;br /&gt;
Sensor Patch Version: &lt;br /&gt;
Steps to Reproduce:&lt;br /&gt;
inUse&lt;br /&gt;
TB,V_inUse&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
Ti,N,V_enrollProgressConfigRenderMode&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
T{CGSize=dd},N,V_enrollProgressConfigRenderViewSize&lt;br /&gt;
renderMode&lt;br /&gt;
Ti,N,V_renderMode&lt;br /&gt;
opacity&lt;br /&gt;
Tf,N,V_opacity&lt;br /&gt;
Notification callback.&lt;br /&gt;
BiometricKitErrorDomain&lt;br /&gt;
BKIdentityUUID&lt;br /&gt;
BKIdentityType&lt;br /&gt;
BKIdentityAttribute&lt;br /&gt;
BKIdentityEntityNumber&lt;br /&gt;
BKIdentityName&lt;br /&gt;
/var/mobile/BiometricKit/biometrickitd&lt;br /&gt;
BKEPDReason&lt;br /&gt;
BKEPDNewNodeID&lt;br /&gt;
BKEPDNewComponentID&lt;br /&gt;
BKEPDNewNodeCoordinates&lt;br /&gt;
BKEPDRemovedNodeID&lt;br /&gt;
BKEPDRemovedComponentID&lt;br /&gt;
BKEPDExtendedComponentID&lt;br /&gt;
BKEPDResultComponentID&lt;br /&gt;
BKEPDMergedInComponents&lt;br /&gt;
BKEPDRedundantNode&lt;br /&gt;
BKTDLargestCompArea&lt;br /&gt;
BKTDLargestCompNodes&lt;br /&gt;
BKTDTotalArea&lt;br /&gt;
BKTDTotalNodes&lt;br /&gt;
BKTemplateUpdated&lt;br /&gt;
Td,N,V_x&lt;br /&gt;
Td,N,V_y&lt;br /&gt;
angle&lt;br /&gt;
Td,N,V_angle&lt;br /&gt;
componentID&lt;br /&gt;
Tq,N,V_componentID&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
T@&amp;quot;BiometricKitEnrollProgressCoordinates&amp;quot;,&amp;amp;,N,V_transformationCoordinates&lt;br /&gt;
Remove identity: %@&lt;br /&gt;
Log package:%@&lt;br /&gt;
biometrickitd&lt;br /&gt;
%@.tar.gz&lt;br /&gt;
cd %@ &amp;amp;&amp;amp; tar -cjf %@ %@&lt;br /&gt;
Time: % 8.3f&lt;br /&gt;
PASS&lt;br /&gt;
FAIL&lt;br /&gt;
Closing log with result %@&lt;br /&gt;
Template identity:&lt;br /&gt;
UUID  : %@&lt;br /&gt;
Type  : %i&lt;br /&gt;
Attrib: %i&lt;br /&gt;
Entity: %i&lt;br /&gt;
Error: Unable to get identity&lt;br /&gt;
Serialised template: %@&lt;br /&gt;
%@_%04d.bin&lt;br /&gt;
Status message: %@&lt;br /&gt;
Progress %i&lt;br /&gt;
Count of enrollments: %i&lt;br /&gt;
BiometricKitErrorTaskCancelled&lt;br /&gt;
BiometricKitErrorIdentityInvalid&lt;br /&gt;
BiometricKitErrorIdentityNotAllowed&lt;br /&gt;
BiometricKitErrorIdentityErrorInvalidData&lt;br /&gt;
BiometricKitErrorIdentityErrorUnknown&lt;br /&gt;
BiometricKitStatusFingerOn&lt;br /&gt;
BiometricKitStatusFingerOff&lt;br /&gt;
BiometricKitStatusEnrollmentComplete&lt;br /&gt;
BiometricKitStatusEnrollmentCancelled&lt;br /&gt;
BiometricKitStatusEnrollmentFailed&lt;br /&gt;
BiometricKitStatusEnrollmentTimeout&lt;br /&gt;
BiometricKitStatusUnknownError&lt;br /&gt;
BiometricKitStatusImageRejected&lt;br /&gt;
BiometricKitStatusNoCalibration&lt;br /&gt;
BiometricKitImageForProcessing&lt;br /&gt;
BiometricKitStatusTemplateListUpdated&lt;br /&gt;
BiometricKitStatusRequestFingerOff&lt;br /&gt;
BiometricKitStatusAutoMatchingStarted&lt;br /&gt;
BiometricKitStatusAutoMatchingStopped&lt;br /&gt;
BiometricKitStatusCaptureRestart&lt;br /&gt;
BiometricKitStatusScanTooShort&lt;br /&gt;
BiometricKitStatusAutoMatchingStartByHomeButton&lt;br /&gt;
BiometricKitStatusMatchingCancelled&lt;br /&gt;
BiometricKitStatusFingerOnBeforeFirstPasscodeUnlock&lt;br /&gt;
BiometricKitStatusFingerOnInPasscodeLockout&lt;br /&gt;
BiometricKitStatusFingerOnInBioLockout&lt;br /&gt;
BiometricKitStatusFingerOnTokenExpired&lt;br /&gt;
BiometricKitStatusESDRecovery&lt;br /&gt;
BiometricKitStatusImageRejectedUnknown&lt;br /&gt;
BiometricKitStatusImageRejectedBadBlocks&lt;br /&gt;
BiometricKitStatusImageRejectedChFPN&lt;br /&gt;
BiometricKitStatusImageRejectedCaFPN&lt;br /&gt;
BiometricKitStatusSensorOperationModeIdle&lt;br /&gt;
BiometricKitStatusSensorOperationModeCapture&lt;br /&gt;
BiometricKitStatusSensorOperationModePause&lt;br /&gt;
Other unknown status %i&lt;br /&gt;
Image #%i was rejected&lt;br /&gt;
Sensor patch version: %ld&lt;br /&gt;
Sensor patch version: unknown&lt;br /&gt;
Calibration Data: %@&lt;br /&gt;
Capture buffer: %@&lt;br /&gt;
Matcher: image refused&lt;br /&gt;
Matcher: image %s node %u&lt;br /&gt;
added as&lt;br /&gt;
replaced&lt;br /&gt;
Coordinates: %s[%i, %i, %i]&lt;br /&gt;
inverse of &lt;br /&gt;
Parent: %i&lt;br /&gt;
Processed image: %@&lt;br /&gt;
Enroll debug log, version 7&lt;br /&gt;
static const node_placement_t table_%02i = &lt;br /&gt;
%@{%i,%i,%i,%i,%i,%i,{&lt;br /&gt;
%@{%i,%i,%i,%i,%i}&lt;br /&gt;
%@},%i,%i,%i,%i,%i,0x%04x};&lt;br /&gt;
bin8&lt;br /&gt;
bin16&lt;br /&gt;
binXX&lt;br /&gt;
calibdata.bin&lt;br /&gt;
calibration-blob&lt;br /&gt;
Image #%i%s&lt;br /&gt;
 was sent to matcher&lt;br /&gt;
Match result&lt;br /&gt;
Match details:&lt;br /&gt;
Matching score: %i&lt;br /&gt;
Match S2S count: %i&lt;br /&gt;
Matching node: %i&lt;br /&gt;
Updated node: %i&lt;br /&gt;
Not available&lt;br /&gt;
No match (artificial)&lt;br /&gt;
No match&lt;br /&gt;
Image #%i&lt;br /&gt;
Warning: the log is not complete, previous part of the log was deleted.&lt;br /&gt;
Starting enrollment&lt;br /&gt;
Starting matching&lt;br /&gt;
No known identities with enroll log are available.&lt;br /&gt;
Known identities with enroll log available:&lt;br /&gt;
%@ : %@&lt;br /&gt;
Match debug log, version 7&lt;br /&gt;
messages.log&lt;br /&gt;
OS version: %@ (%@)&lt;br /&gt;
Mesa: %@&lt;br /&gt;
Process name:%@&lt;br /&gt;
PrimaryUsagePage&lt;br /&gt;
PrimaryUsage&lt;br /&gt;
com.apple.iokit.hid.displayStatus&lt;br /&gt;
com.apple.mobile.keybagd.lock_status&lt;br /&gt;
AppleMesaSEPDriver&lt;br /&gt;
IOGeneralInterest&lt;br /&gt;
ScanningState&lt;br /&gt;
ScanningStateIdle&lt;br /&gt;
ScanningStateShortScanning&lt;br /&gt;
ScanningStateLongScanning&lt;br /&gt;
Unknown scanning state %i&lt;br /&gt;
Event: %@&lt;br /&gt;
HomeButtonPress&lt;br /&gt;
ExtendedDeviceLockState&lt;br /&gt;
MobileKeyBagDeviceIsUnlocked&lt;br /&gt;
MobileKeyBagDeviceIsLocked&lt;br /&gt;
MobileKeyBagDeviceIsLocking&lt;br /&gt;
MobileKeyBagDisabled&lt;br /&gt;
MobileKeyBagDeviceUnlockInProgress&lt;br /&gt;
MobileKeyBagDeviceInGracePeriod&lt;br /&gt;
MobileKeyBagDeviceInAssertDelay&lt;br /&gt;
MobileKeyBagDeviceInBioUnlock&lt;br /&gt;
Unknown lock state %i&lt;br /&gt;
DisplayOn&lt;br /&gt;
DisplayOff&lt;br /&gt;
/SourceCache/Mesa/Mesa-152/AppleBiometricServices/BiometricKit/BiometricKitDebugLog.m&lt;br /&gt;
/var/mobile/Library/Logs/CrashReporter/BiometricKit&lt;br /&gt;
v24@0:8@&amp;quot;BiometricKitIdentity&amp;quot;16&lt;br /&gt;
@&amp;quot;NSXPCConnection&amp;quot;&lt;br /&gt;
@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitXPCClient&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitStatistics&amp;quot;&lt;br /&gt;
@&amp;quot;UIImage&amp;quot;&lt;br /&gt;
[25{CGRect=&amp;quot;origin&amp;quot;{CGPoint=&amp;quot;x&amp;quot;d&amp;quot;y&amp;quot;d}&amp;quot;size&amp;quot;{CGSize=&amp;quot;width&amp;quot;d&amp;quot;height&amp;quot;d}}]&lt;br /&gt;
[25@&amp;quot;UIImage&amp;quot;]&lt;br /&gt;
{?=&amp;quot;count&amp;quot;i&amp;quot;capa&amp;quot;i&amp;quot;items&amp;quot;^^{?}&amp;quot;unusedImageCount&amp;quot;i&amp;quot;componentCount&amp;quot;i&amp;quot;componentCapa&amp;quot;i&amp;quot;bestComponentIndex&amp;quot;i&amp;quot;bestMapiComponentIndex&amp;quot;i&amp;quot;components&amp;quot;^^{?}&amp;quot;mapiNodeAddedIndex&amp;quot;s&amp;quot;mapiNodeRemovedIndex&amp;quot;s&amp;quot;updateCount&amp;quot;i&amp;quot;structureIsInconsistent&amp;quot;B}&lt;br /&gt;
{?=&amp;quot;nodes&amp;quot;[25{?=&amp;quot;imageData&amp;quot;@&amp;quot;NSData&amp;quot;&amp;quot;width&amp;quot;I&amp;quot;height&amp;quot;I}]}&lt;br /&gt;
BiometricKitXpcProtocol&lt;br /&gt;
BiometricKitDelegateXpcProtocol&lt;br /&gt;
BiometricKitXPCClient&lt;br /&gt;
BiometricKitTemplateInfo&lt;br /&gt;
BiometricKitStatistics&lt;br /&gt;
BiometricKit&lt;br /&gt;
BiometricKitDelegate&lt;br /&gt;
BiometricKitIdentity&lt;br /&gt;
NSSecureCoding&lt;br /&gt;
NSCoding&lt;br /&gt;
BiometricKitMatchInfo&lt;br /&gt;
BiometricKitEnrollProgressInfo&lt;br /&gt;
BiometricKitEnrollProgressCoordinates&lt;br /&gt;
BiometricKitEnrollProgressMergedComponent&lt;br /&gt;
BiometricKitDebugLog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=34990</id>
		<title>Touch ID</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=34990"/>
		<updated>2013-09-10T20:30:35Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Inferred Information */  Switch to unordered list. Oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The iPhone 5S comes equipped with a fingerprint scanner. There is not an official developer API for it. &lt;br /&gt;
&lt;br /&gt;
However there is a private API for it. The dylib file for it is here: &lt;br /&gt;
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/BiometricKit.framework/BiometricKit&lt;br /&gt;
&lt;br /&gt;
It contains only a 64-bit Arm segment, and so the common disassembly tools cannot process the instructions well. &lt;br /&gt;
&lt;br /&gt;
==Inferred Information==&lt;br /&gt;
Based on the string dump, here is what is implied.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The codename for it was &amp;quot;mesa&amp;quot; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It communicates over XPC to a binary that handles access to it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's a kernel extension to interface with it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The kernel extension communicates to the secure keystore to set and verify fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner calibrates itself and has upgradable firmware  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner works involves normal image formats (i.e. UIImage) before settings and verifying fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's biometric lockout as well as passcode lockout  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== String Dump ==&lt;br /&gt;
Here is the long string dump of the contents of the BiometricKit library. These strings hint at the functionality of the framework.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initWithMachServiceName:options:&lt;br /&gt;
connectWithReplyBlock:&lt;br /&gt;
registerDelegate:withReplyBlock:&lt;br /&gt;
suspendWork:withReplyBlock:&lt;br /&gt;
enroll:withAuthToken:withReplyBlock:&lt;br /&gt;
match:withReplyBlock:&lt;br /&gt;
match:withOptions:withReplyBlock:&lt;br /&gt;
matchIdentities:withReplyBlock:&lt;br /&gt;
cancelWithReplyBlock:&lt;br /&gt;
updateIdentity:withReplyBlock:&lt;br /&gt;
removeIdentity:withReplyBlock:&lt;br /&gt;
getIdentityFromUUID:withReplyBlock:&lt;br /&gt;
identities:withReplyBlock:&lt;br /&gt;
resetEngineWithReplyBlock:&lt;br /&gt;
registerDSID:withAuthToken:withReplyBlock:&lt;br /&gt;
registerStoreToken:withReplyBlock:&lt;br /&gt;
getCountersignedStoreTokenWithReplyBlock:&lt;br /&gt;
getMaxIdentityCount:withReplyBlock:&lt;br /&gt;
enrollContinueWithReplyBlock:&lt;br /&gt;
pullAlignmentDataWithReplyBlock:&lt;br /&gt;
pullMatchTopologyDataWithReplyBlock:&lt;br /&gt;
getNodeTopologyForIdentity:withReplyBlock:&lt;br /&gt;
preventAutonomousMatchingMode:withReplyBlock:&lt;br /&gt;
getProvisioningStateWithReplyBlock:&lt;br /&gt;
getCalBlobVersionWithReplyBlock:&lt;br /&gt;
getSensorCalibrationStatusWithReplyBlock:&lt;br /&gt;
getCalibrationDataStateWithReplyBlock:&lt;br /&gt;
setDebugImages:withReplyBlock:&lt;br /&gt;
pullCaptureBufferWithReplyBlock:&lt;br /&gt;
pullDebugImageData:withReplyBlock:&lt;br /&gt;
provisionSensorWithReplyBlock:&lt;br /&gt;
unpairSensorWithReplyBlock:&lt;br /&gt;
lockSensorWithReplyBlock:&lt;br /&gt;
getSerialisedTemplateForIdentity:withReplyBlock:&lt;br /&gt;
interfaceWithProtocol:&lt;br /&gt;
setRemoteObjectInterface:&lt;br /&gt;
remoteObjectInterface&lt;br /&gt;
setWithObject:&lt;br /&gt;
setClasses:forSelector:argumentIndex:ofReply:&lt;br /&gt;
setWithObjects:&lt;br /&gt;
enrollResult:&lt;br /&gt;
matchResult:&lt;br /&gt;
statusMessage:&lt;br /&gt;
homeButtonPressed&lt;br /&gt;
setExportedInterface:&lt;br /&gt;
setExportedObject:&lt;br /&gt;
setInterruptionHandler:&lt;br /&gt;
resume&lt;br /&gt;
invalidate&lt;br /&gt;
remoteObjectProxyWithErrorHandler:&lt;br /&gt;
code&lt;br /&gt;
respondsToSelector:&lt;br /&gt;
connect&lt;br /&gt;
registerDelegate:&lt;br /&gt;
suspendWork:&lt;br /&gt;
enroll:withAuthToken:&lt;br /&gt;
match:&lt;br /&gt;
match:withOptions:&lt;br /&gt;
matchIdentities:&lt;br /&gt;
cancel&lt;br /&gt;
updateIdentity:&lt;br /&gt;
removeIdentity:&lt;br /&gt;
getIdentityFromUUID:&lt;br /&gt;
identities:&lt;br /&gt;
getMaxIdentityCount:&lt;br /&gt;
resetEngine&lt;br /&gt;
enrollContinue&lt;br /&gt;
pullAlignmentData&lt;br /&gt;
pullMatchTopologyData&lt;br /&gt;
getNodeTopologyForIdentity:&lt;br /&gt;
preventAutonomousMatchingMode:&lt;br /&gt;
getProvisioningState&lt;br /&gt;
registerDSID:withAuthToken:&lt;br /&gt;
registerStoreToken:&lt;br /&gt;
getCountersignedStoreToken:&lt;br /&gt;
getCalBlobVersion&lt;br /&gt;
getSensorCalibrationStatus&lt;br /&gt;
getCalibrationDataState&lt;br /&gt;
pullCaptureBuffer&lt;br /&gt;
pullDebugImageData:imageWidth:imageHeight:&lt;br /&gt;
provisionSensor&lt;br /&gt;
unpairSensor&lt;br /&gt;
lockSensor&lt;br /&gt;
setDebugImages:&lt;br /&gt;
getSerialisedTemplateForIdentity:&lt;br /&gt;
delegate&lt;br /&gt;
setDelegate:&lt;br /&gt;
interruptionHandler&lt;br /&gt;
_connection&lt;br /&gt;
_delegate&lt;br /&gt;
_interruptionHandler&lt;br /&gt;
setTopology:&lt;br /&gt;
setDetails:&lt;br /&gt;
topology&lt;br /&gt;
details&lt;br /&gt;
_topology&lt;br /&gt;
_details&lt;br /&gt;
initEnrollmentValues&lt;br /&gt;
message&lt;br /&gt;
messageDetails&lt;br /&gt;
objectForKeyedSubscript:&lt;br /&gt;
currentPrimaryComponentID&lt;br /&gt;
integerValue&lt;br /&gt;
doubleValue&lt;br /&gt;
statistics&lt;br /&gt;
enroll:&lt;br /&gt;
enrollResult:componentSet:&lt;br /&gt;
enrollProgress:&lt;br /&gt;
_fingerOn&lt;br /&gt;
_enrolling&lt;br /&gt;
_badImagePerFingerDown&lt;br /&gt;
_enrollmentStarTime&lt;br /&gt;
_touchesPerEnroll&lt;br /&gt;
_badImagesPerEnroll&lt;br /&gt;
_rejectedImagesPerEnroll&lt;br /&gt;
_primaryClusterAdditions&lt;br /&gt;
_primaryClusterFailedAdditions&lt;br /&gt;
_otherClustersAdditions&lt;br /&gt;
_joinEvents&lt;br /&gt;
_area&lt;br /&gt;
_primaryClusterArea&lt;br /&gt;
numberWithBool:&lt;br /&gt;
preferencesGetStringValue:&lt;br /&gt;
preferencesGetBOOLValue:&lt;br /&gt;
enableLogger:toPath:&lt;br /&gt;
manager&lt;br /&gt;
defaultCenter&lt;br /&gt;
appDidEnterBackground:&lt;br /&gt;
addObserver:selector:name:object:&lt;br /&gt;
appWillEnterForeground:&lt;br /&gt;
bundleForClass:&lt;br /&gt;
imageNamed:inBundle:&lt;br /&gt;
updateEnableLogger&lt;br /&gt;
dataWithBytes:length:&lt;br /&gt;
startEnrollLog&lt;br /&gt;
data&lt;br /&gt;
logRemoveIdentity:&lt;br /&gt;
bytes&lt;br /&gt;
imageFromRawImageData:&lt;br /&gt;
imageFromBitmapData:inRect:&lt;br /&gt;
pullDebugImageData:target:&lt;br /&gt;
getRadarAtachmentsForLastEnrollment&lt;br /&gt;
getRadarAtachmentsForLastMatch&lt;br /&gt;
length&lt;br /&gt;
stringWithString:&lt;br /&gt;
getModulationRatio&lt;br /&gt;
stringForProvisioningState:&lt;br /&gt;
getSensorPatchVersion&lt;br /&gt;
stringWithFormat:&lt;br /&gt;
getLogsForProcess:&lt;br /&gt;
sharedConnection&lt;br /&gt;
isFingerprintUnlockAllowed&lt;br /&gt;
setGracePeriod:passcode:completionBlock:&lt;br /&gt;
finishEnrollLogWithStatus:withIdentity:withTemplate:&lt;br /&gt;
matchResult:withDetails:&lt;br /&gt;
createMatchInfo:withTopology:withMatchImage:&lt;br /&gt;
logMatchResult:withTopology:withImage:withCaptureBuffer:withTemplate:&lt;br /&gt;
getBytes:length:&lt;br /&gt;
logEnrollMessage:withTopology:withImage:withCaptureBuffer:&lt;br /&gt;
logStatus:&lt;br /&gt;
enrollProgressMessage:&lt;br /&gt;
logRejectedImage:&lt;br /&gt;
size&lt;br /&gt;
drawInRect:&lt;br /&gt;
drawInRect:blendMode:alpha:&lt;br /&gt;
CGImage&lt;br /&gt;
scale&lt;br /&gt;
imageOrientation&lt;br /&gt;
imageWithCGImage:scale:orientation:&lt;br /&gt;
imageWithImage:inRect:&lt;br /&gt;
identityImage:&lt;br /&gt;
imageWithImage:withNode:withRect:alpha:&lt;br /&gt;
compositeTopologyImage:&lt;br /&gt;
imageTopology:forGroup:&lt;br /&gt;
imageFauxprint:withTheta:withLamda:&lt;br /&gt;
greenColor&lt;br /&gt;
imageWithImage:withTintColor:&lt;br /&gt;
dataWithData:&lt;br /&gt;
imageWithCGImage:&lt;br /&gt;
preferencesSetBOOLValue:forKey:&lt;br /&gt;
pullDebugImage:&lt;br /&gt;
getLoggerAttachmentsForRadar:&lt;br /&gt;
stringFromSensorConfiguration&lt;br /&gt;
matchIdentity:&lt;br /&gt;
topologyImage:&lt;br /&gt;
imageWithImage:withMaskImage:&lt;br /&gt;
inUse&lt;br /&gt;
setInUse:&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
setEnrollProgressConfigRenderMode:&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
setEnrollProgressConfigRenderViewSize:&lt;br /&gt;
renderMode&lt;br /&gt;
setRenderMode:&lt;br /&gt;
opacity&lt;br /&gt;
setOpacity:&lt;br /&gt;
_xpcClient&lt;br /&gt;
_enrollingMode&lt;br /&gt;
_matchingMode&lt;br /&gt;
_statistics&lt;br /&gt;
_scanbedImage&lt;br /&gt;
_fauxprintImage&lt;br /&gt;
_nodeRect&lt;br /&gt;
_images&lt;br /&gt;
_compSet&lt;br /&gt;
_rejectTouchCount&lt;br /&gt;
_rejectTouch&lt;br /&gt;
_showDebugImages&lt;br /&gt;
_enableLogger&lt;br /&gt;
_enrollImageSet&lt;br /&gt;
_isInternalInstall&lt;br /&gt;
_inUse&lt;br /&gt;
_enrollProgressConfigRenderMode&lt;br /&gt;
_renderMode&lt;br /&gt;
_opacity&lt;br /&gt;
_enrollProgressConfigRenderViewSize&lt;br /&gt;
setUuid:&lt;br /&gt;
decodeBytesForKey:returnedLength:&lt;br /&gt;
initWithUUIDBytes:&lt;br /&gt;
decodeIntForKey:&lt;br /&gt;
decodeObjectOfClass:forKey:&lt;br /&gt;
copy&lt;br /&gt;
getUUIDBytes:&lt;br /&gt;
encodeBytes:length:forKey:&lt;br /&gt;
encodeInt:forKey:&lt;br /&gt;
encodeObject:forKey:&lt;br /&gt;
biometricKitIdentity&lt;br /&gt;
supportsSecureCoding&lt;br /&gt;
encodeWithCoder:&lt;br /&gt;
initWithCoder:&lt;br /&gt;
uuid&lt;br /&gt;
type&lt;br /&gt;
setType:&lt;br /&gt;
attribute&lt;br /&gt;
setAttribute:&lt;br /&gt;
entity&lt;br /&gt;
setEntity:&lt;br /&gt;
name&lt;br /&gt;
setName:&lt;br /&gt;
stringByReplacingOccurrencesOfString:withString:&lt;br /&gt;
initWithCapacity:&lt;br /&gt;
setLength:&lt;br /&gt;
mutableBytes&lt;br /&gt;
defaultManager&lt;br /&gt;
createDirectoryAtPath:withIntermediateDirectories:attributes:error:&lt;br /&gt;
removeItemAtPath:error:&lt;br /&gt;
UUIDString&lt;br /&gt;
setMessageDetails:&lt;br /&gt;
setCaptureImage:&lt;br /&gt;
setRenderedImage:&lt;br /&gt;
progress&lt;br /&gt;
setProgress:&lt;br /&gt;
setCurrentPrimaryComponentID:&lt;br /&gt;
captureImage&lt;br /&gt;
renderedImage&lt;br /&gt;
setMessage:&lt;br /&gt;
_message&lt;br /&gt;
_progress&lt;br /&gt;
_currentPrimaryComponentID&lt;br /&gt;
_captureImage&lt;br /&gt;
_renderedImage&lt;br /&gt;
_messageDetails&lt;br /&gt;
setX:&lt;br /&gt;
setY:&lt;br /&gt;
angle&lt;br /&gt;
setAngle:&lt;br /&gt;
_angle&lt;br /&gt;
setTransformationCoordinates:&lt;br /&gt;
componentID&lt;br /&gt;
setComponentID:&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
_componentID&lt;br /&gt;
_transformationCoordinates&lt;br /&gt;
pathComponents&lt;br /&gt;
com.apple.biometrickitd&lt;br /&gt;
T@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;,N,V_delegate&lt;br /&gt;
interruptionHandler&lt;br /&gt;
T@?,C,N,V_interruptionHandler&lt;br /&gt;
topology&lt;br /&gt;
T@&amp;quot;NSDictionary&amp;quot;,&amp;amp;,N,V_details&lt;br /&gt;
com.apple.fingerprint.enroll.attempts&lt;br /&gt;
com.apple.fingerprint.enroll.passes&lt;br /&gt;
com.apple.fingerprint.enroll.touchesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.badImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.rejectedImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterFailedAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.otherClustersAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.joinEvents&lt;br /&gt;
com.apple.fingerprint.enroll.clusterCount&lt;br /&gt;
com.apple.fingerprint.enroll.nodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterNodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.area&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterArea&lt;br /&gt;
com.apple.fingerprint.enroll.passTime&lt;br /&gt;
com.apple.fingerprint.enroll.fails&lt;br /&gt;
com.apple.fingerprint.enroll.failTime&lt;br /&gt;
com.apple.ManagedConfiguration.profileListChanged&lt;br /&gt;
com.apple.biometrickitd.debugLogEnabled&lt;br /&gt;
com.apple.biometrickitd.debugLogPath&lt;br /&gt;
debugLogEnabled&lt;br /&gt;
debugLogPath&lt;br /&gt;
BKOptionSuppressHapticFeedback&lt;br /&gt;
BKOptionFilterOutHomeButtonEvents&lt;br /&gt;
BKOptionMatchForUnlock&lt;br /&gt;
InternalBuild&lt;br /&gt;
scanbed&lt;br /&gt;
synthetic&lt;br /&gt;
Uninitialized&lt;br /&gt;
Not Provisioned&lt;br /&gt;
Unprovisioned&lt;br /&gt;
Provisioned&lt;br /&gt;
Provisioned Locked&lt;br /&gt;
Unpaired&lt;br /&gt;
Unknown&lt;br /&gt;
biosensor,mesa&lt;br /&gt;
modulation-ratio&lt;br /&gt;
AppleBiometricSensor&lt;br /&gt;
patch-version&lt;br /&gt;
Mesa configuration:&lt;br /&gt;
Provisioning Status: %@&lt;br /&gt;
Calibrated: &lt;br /&gt;
- Version: &lt;br /&gt;
- Signed: &lt;br /&gt;
Modulation ratio: &lt;br /&gt;
Kernel: &lt;br /&gt;
Thick kernel&lt;br /&gt;
Thin kernel&lt;br /&gt;
Sensor Patch Version: &lt;br /&gt;
Steps to Reproduce:&lt;br /&gt;
inUse&lt;br /&gt;
TB,V_inUse&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
Ti,N,V_enrollProgressConfigRenderMode&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
T{CGSize=dd},N,V_enrollProgressConfigRenderViewSize&lt;br /&gt;
renderMode&lt;br /&gt;
Ti,N,V_renderMode&lt;br /&gt;
opacity&lt;br /&gt;
Tf,N,V_opacity&lt;br /&gt;
Notification callback.&lt;br /&gt;
BiometricKitErrorDomain&lt;br /&gt;
BKIdentityUUID&lt;br /&gt;
BKIdentityType&lt;br /&gt;
BKIdentityAttribute&lt;br /&gt;
BKIdentityEntityNumber&lt;br /&gt;
BKIdentityName&lt;br /&gt;
/var/mobile/BiometricKit/biometrickitd&lt;br /&gt;
BKEPDReason&lt;br /&gt;
BKEPDNewNodeID&lt;br /&gt;
BKEPDNewComponentID&lt;br /&gt;
BKEPDNewNodeCoordinates&lt;br /&gt;
BKEPDRemovedNodeID&lt;br /&gt;
BKEPDRemovedComponentID&lt;br /&gt;
BKEPDExtendedComponentID&lt;br /&gt;
BKEPDResultComponentID&lt;br /&gt;
BKEPDMergedInComponents&lt;br /&gt;
BKEPDRedundantNode&lt;br /&gt;
BKTDLargestCompArea&lt;br /&gt;
BKTDLargestCompNodes&lt;br /&gt;
BKTDTotalArea&lt;br /&gt;
BKTDTotalNodes&lt;br /&gt;
BKTemplateUpdated&lt;br /&gt;
Td,N,V_x&lt;br /&gt;
Td,N,V_y&lt;br /&gt;
angle&lt;br /&gt;
Td,N,V_angle&lt;br /&gt;
componentID&lt;br /&gt;
Tq,N,V_componentID&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
T@&amp;quot;BiometricKitEnrollProgressCoordinates&amp;quot;,&amp;amp;,N,V_transformationCoordinates&lt;br /&gt;
Remove identity: %@&lt;br /&gt;
Log package:%@&lt;br /&gt;
biometrickitd&lt;br /&gt;
%@.tar.gz&lt;br /&gt;
cd %@ &amp;amp;&amp;amp; tar -cjf %@ %@&lt;br /&gt;
Time: % 8.3f&lt;br /&gt;
PASS&lt;br /&gt;
FAIL&lt;br /&gt;
Closing log with result %@&lt;br /&gt;
Template identity:&lt;br /&gt;
UUID  : %@&lt;br /&gt;
Type  : %i&lt;br /&gt;
Attrib: %i&lt;br /&gt;
Entity: %i&lt;br /&gt;
Error: Unable to get identity&lt;br /&gt;
Serialised template: %@&lt;br /&gt;
%@_%04d.bin&lt;br /&gt;
Status message: %@&lt;br /&gt;
Progress %i&lt;br /&gt;
Count of enrollments: %i&lt;br /&gt;
BiometricKitErrorTaskCancelled&lt;br /&gt;
BiometricKitErrorIdentityInvalid&lt;br /&gt;
BiometricKitErrorIdentityNotAllowed&lt;br /&gt;
BiometricKitErrorIdentityErrorInvalidData&lt;br /&gt;
BiometricKitErrorIdentityErrorUnknown&lt;br /&gt;
BiometricKitStatusFingerOn&lt;br /&gt;
BiometricKitStatusFingerOff&lt;br /&gt;
BiometricKitStatusEnrollmentComplete&lt;br /&gt;
BiometricKitStatusEnrollmentCancelled&lt;br /&gt;
BiometricKitStatusEnrollmentFailed&lt;br /&gt;
BiometricKitStatusEnrollmentTimeout&lt;br /&gt;
BiometricKitStatusUnknownError&lt;br /&gt;
BiometricKitStatusImageRejected&lt;br /&gt;
BiometricKitStatusNoCalibration&lt;br /&gt;
BiometricKitImageForProcessing&lt;br /&gt;
BiometricKitStatusTemplateListUpdated&lt;br /&gt;
BiometricKitStatusRequestFingerOff&lt;br /&gt;
BiometricKitStatusAutoMatchingStarted&lt;br /&gt;
BiometricKitStatusAutoMatchingStopped&lt;br /&gt;
BiometricKitStatusCaptureRestart&lt;br /&gt;
BiometricKitStatusScanTooShort&lt;br /&gt;
BiometricKitStatusAutoMatchingStartByHomeButton&lt;br /&gt;
BiometricKitStatusMatchingCancelled&lt;br /&gt;
BiometricKitStatusFingerOnBeforeFirstPasscodeUnlock&lt;br /&gt;
BiometricKitStatusFingerOnInPasscodeLockout&lt;br /&gt;
BiometricKitStatusFingerOnInBioLockout&lt;br /&gt;
BiometricKitStatusFingerOnTokenExpired&lt;br /&gt;
BiometricKitStatusESDRecovery&lt;br /&gt;
BiometricKitStatusImageRejectedUnknown&lt;br /&gt;
BiometricKitStatusImageRejectedBadBlocks&lt;br /&gt;
BiometricKitStatusImageRejectedChFPN&lt;br /&gt;
BiometricKitStatusImageRejectedCaFPN&lt;br /&gt;
BiometricKitStatusSensorOperationModeIdle&lt;br /&gt;
BiometricKitStatusSensorOperationModeCapture&lt;br /&gt;
BiometricKitStatusSensorOperationModePause&lt;br /&gt;
Other unknown status %i&lt;br /&gt;
Image #%i was rejected&lt;br /&gt;
Sensor patch version: %ld&lt;br /&gt;
Sensor patch version: unknown&lt;br /&gt;
Calibration Data: %@&lt;br /&gt;
Capture buffer: %@&lt;br /&gt;
Matcher: image refused&lt;br /&gt;
Matcher: image %s node %u&lt;br /&gt;
added as&lt;br /&gt;
replaced&lt;br /&gt;
Coordinates: %s[%i, %i, %i]&lt;br /&gt;
inverse of &lt;br /&gt;
Parent: %i&lt;br /&gt;
Processed image: %@&lt;br /&gt;
Enroll debug log, version 7&lt;br /&gt;
static const node_placement_t table_%02i = &lt;br /&gt;
%@{%i,%i,%i,%i,%i,%i,{&lt;br /&gt;
%@{%i,%i,%i,%i,%i}&lt;br /&gt;
%@},%i,%i,%i,%i,%i,0x%04x};&lt;br /&gt;
bin8&lt;br /&gt;
bin16&lt;br /&gt;
binXX&lt;br /&gt;
calibdata.bin&lt;br /&gt;
calibration-blob&lt;br /&gt;
Image #%i%s&lt;br /&gt;
 was sent to matcher&lt;br /&gt;
Match result&lt;br /&gt;
Match details:&lt;br /&gt;
Matching score: %i&lt;br /&gt;
Match S2S count: %i&lt;br /&gt;
Matching node: %i&lt;br /&gt;
Updated node: %i&lt;br /&gt;
Not available&lt;br /&gt;
No match (artificial)&lt;br /&gt;
No match&lt;br /&gt;
Image #%i&lt;br /&gt;
Warning: the log is not complete, previous part of the log was deleted.&lt;br /&gt;
Starting enrollment&lt;br /&gt;
Starting matching&lt;br /&gt;
No known identities with enroll log are available.&lt;br /&gt;
Known identities with enroll log available:&lt;br /&gt;
%@ : %@&lt;br /&gt;
Match debug log, version 7&lt;br /&gt;
messages.log&lt;br /&gt;
OS version: %@ (%@)&lt;br /&gt;
Mesa: %@&lt;br /&gt;
Process name:%@&lt;br /&gt;
PrimaryUsagePage&lt;br /&gt;
PrimaryUsage&lt;br /&gt;
com.apple.iokit.hid.displayStatus&lt;br /&gt;
com.apple.mobile.keybagd.lock_status&lt;br /&gt;
AppleMesaSEPDriver&lt;br /&gt;
IOGeneralInterest&lt;br /&gt;
ScanningState&lt;br /&gt;
ScanningStateIdle&lt;br /&gt;
ScanningStateShortScanning&lt;br /&gt;
ScanningStateLongScanning&lt;br /&gt;
Unknown scanning state %i&lt;br /&gt;
Event: %@&lt;br /&gt;
HomeButtonPress&lt;br /&gt;
ExtendedDeviceLockState&lt;br /&gt;
MobileKeyBagDeviceIsUnlocked&lt;br /&gt;
MobileKeyBagDeviceIsLocked&lt;br /&gt;
MobileKeyBagDeviceIsLocking&lt;br /&gt;
MobileKeyBagDisabled&lt;br /&gt;
MobileKeyBagDeviceUnlockInProgress&lt;br /&gt;
MobileKeyBagDeviceInGracePeriod&lt;br /&gt;
MobileKeyBagDeviceInAssertDelay&lt;br /&gt;
MobileKeyBagDeviceInBioUnlock&lt;br /&gt;
Unknown lock state %i&lt;br /&gt;
DisplayOn&lt;br /&gt;
DisplayOff&lt;br /&gt;
/SourceCache/Mesa/Mesa-152/AppleBiometricServices/BiometricKit/BiometricKitDebugLog.m&lt;br /&gt;
/var/mobile/Library/Logs/CrashReporter/BiometricKit&lt;br /&gt;
v24@0:8@&amp;quot;BiometricKitIdentity&amp;quot;16&lt;br /&gt;
@&amp;quot;NSXPCConnection&amp;quot;&lt;br /&gt;
@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitXPCClient&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitStatistics&amp;quot;&lt;br /&gt;
@&amp;quot;UIImage&amp;quot;&lt;br /&gt;
[25{CGRect=&amp;quot;origin&amp;quot;{CGPoint=&amp;quot;x&amp;quot;d&amp;quot;y&amp;quot;d}&amp;quot;size&amp;quot;{CGSize=&amp;quot;width&amp;quot;d&amp;quot;height&amp;quot;d}}]&lt;br /&gt;
[25@&amp;quot;UIImage&amp;quot;]&lt;br /&gt;
{?=&amp;quot;count&amp;quot;i&amp;quot;capa&amp;quot;i&amp;quot;items&amp;quot;^^{?}&amp;quot;unusedImageCount&amp;quot;i&amp;quot;componentCount&amp;quot;i&amp;quot;componentCapa&amp;quot;i&amp;quot;bestComponentIndex&amp;quot;i&amp;quot;bestMapiComponentIndex&amp;quot;i&amp;quot;components&amp;quot;^^{?}&amp;quot;mapiNodeAddedIndex&amp;quot;s&amp;quot;mapiNodeRemovedIndex&amp;quot;s&amp;quot;updateCount&amp;quot;i&amp;quot;structureIsInconsistent&amp;quot;B}&lt;br /&gt;
{?=&amp;quot;nodes&amp;quot;[25{?=&amp;quot;imageData&amp;quot;@&amp;quot;NSData&amp;quot;&amp;quot;width&amp;quot;I&amp;quot;height&amp;quot;I}]}&lt;br /&gt;
BiometricKitXpcProtocol&lt;br /&gt;
BiometricKitDelegateXpcProtocol&lt;br /&gt;
BiometricKitXPCClient&lt;br /&gt;
BiometricKitTemplateInfo&lt;br /&gt;
BiometricKitStatistics&lt;br /&gt;
BiometricKit&lt;br /&gt;
BiometricKitDelegate&lt;br /&gt;
BiometricKitIdentity&lt;br /&gt;
NSSecureCoding&lt;br /&gt;
NSCoding&lt;br /&gt;
BiometricKitMatchInfo&lt;br /&gt;
BiometricKitEnrollProgressInfo&lt;br /&gt;
BiometricKitEnrollProgressCoordinates&lt;br /&gt;
BiometricKitEnrollProgressMergedComponent&lt;br /&gt;
BiometricKitDebugLog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=34989</id>
		<title>Touch ID</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=34989"/>
		<updated>2013-09-10T20:30:16Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Inferred info - basic analysis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The iPhone 5S comes equipped with a fingerprint scanner. There is not an official developer API for it. &lt;br /&gt;
&lt;br /&gt;
However there is a private API for it. The dylib file for it is here: &lt;br /&gt;
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/BiometricKit.framework/BiometricKit&lt;br /&gt;
&lt;br /&gt;
It contains only a 64-bit Arm segment, and so the common disassembly tools cannot process the instructions well. &lt;br /&gt;
&lt;br /&gt;
==Inferred Information==&lt;br /&gt;
Based on the string dump, here is what is implied.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The codename for it was &amp;quot;mesa&amp;quot; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It communicates over XPC to a binary that handles access to it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's a kernel extension to interface with it  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The kernel extension communicates to the secure keystore to set and verify fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner calibrates itself and has upgradable firmware  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The fingerprint scanner works involves normal image formats (i.e. UIImage) before settings and verifying fingerprints  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There's biometric lockout as well as passcode lockout  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== String Dump ==&lt;br /&gt;
Here is the long string dump of the contents of the BiometricKit library. These strings hint at the functionality of the framework.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initWithMachServiceName:options:&lt;br /&gt;
connectWithReplyBlock:&lt;br /&gt;
registerDelegate:withReplyBlock:&lt;br /&gt;
suspendWork:withReplyBlock:&lt;br /&gt;
enroll:withAuthToken:withReplyBlock:&lt;br /&gt;
match:withReplyBlock:&lt;br /&gt;
match:withOptions:withReplyBlock:&lt;br /&gt;
matchIdentities:withReplyBlock:&lt;br /&gt;
cancelWithReplyBlock:&lt;br /&gt;
updateIdentity:withReplyBlock:&lt;br /&gt;
removeIdentity:withReplyBlock:&lt;br /&gt;
getIdentityFromUUID:withReplyBlock:&lt;br /&gt;
identities:withReplyBlock:&lt;br /&gt;
resetEngineWithReplyBlock:&lt;br /&gt;
registerDSID:withAuthToken:withReplyBlock:&lt;br /&gt;
registerStoreToken:withReplyBlock:&lt;br /&gt;
getCountersignedStoreTokenWithReplyBlock:&lt;br /&gt;
getMaxIdentityCount:withReplyBlock:&lt;br /&gt;
enrollContinueWithReplyBlock:&lt;br /&gt;
pullAlignmentDataWithReplyBlock:&lt;br /&gt;
pullMatchTopologyDataWithReplyBlock:&lt;br /&gt;
getNodeTopologyForIdentity:withReplyBlock:&lt;br /&gt;
preventAutonomousMatchingMode:withReplyBlock:&lt;br /&gt;
getProvisioningStateWithReplyBlock:&lt;br /&gt;
getCalBlobVersionWithReplyBlock:&lt;br /&gt;
getSensorCalibrationStatusWithReplyBlock:&lt;br /&gt;
getCalibrationDataStateWithReplyBlock:&lt;br /&gt;
setDebugImages:withReplyBlock:&lt;br /&gt;
pullCaptureBufferWithReplyBlock:&lt;br /&gt;
pullDebugImageData:withReplyBlock:&lt;br /&gt;
provisionSensorWithReplyBlock:&lt;br /&gt;
unpairSensorWithReplyBlock:&lt;br /&gt;
lockSensorWithReplyBlock:&lt;br /&gt;
getSerialisedTemplateForIdentity:withReplyBlock:&lt;br /&gt;
interfaceWithProtocol:&lt;br /&gt;
setRemoteObjectInterface:&lt;br /&gt;
remoteObjectInterface&lt;br /&gt;
setWithObject:&lt;br /&gt;
setClasses:forSelector:argumentIndex:ofReply:&lt;br /&gt;
setWithObjects:&lt;br /&gt;
enrollResult:&lt;br /&gt;
matchResult:&lt;br /&gt;
statusMessage:&lt;br /&gt;
homeButtonPressed&lt;br /&gt;
setExportedInterface:&lt;br /&gt;
setExportedObject:&lt;br /&gt;
setInterruptionHandler:&lt;br /&gt;
resume&lt;br /&gt;
invalidate&lt;br /&gt;
remoteObjectProxyWithErrorHandler:&lt;br /&gt;
code&lt;br /&gt;
respondsToSelector:&lt;br /&gt;
connect&lt;br /&gt;
registerDelegate:&lt;br /&gt;
suspendWork:&lt;br /&gt;
enroll:withAuthToken:&lt;br /&gt;
match:&lt;br /&gt;
match:withOptions:&lt;br /&gt;
matchIdentities:&lt;br /&gt;
cancel&lt;br /&gt;
updateIdentity:&lt;br /&gt;
removeIdentity:&lt;br /&gt;
getIdentityFromUUID:&lt;br /&gt;
identities:&lt;br /&gt;
getMaxIdentityCount:&lt;br /&gt;
resetEngine&lt;br /&gt;
enrollContinue&lt;br /&gt;
pullAlignmentData&lt;br /&gt;
pullMatchTopologyData&lt;br /&gt;
getNodeTopologyForIdentity:&lt;br /&gt;
preventAutonomousMatchingMode:&lt;br /&gt;
getProvisioningState&lt;br /&gt;
registerDSID:withAuthToken:&lt;br /&gt;
registerStoreToken:&lt;br /&gt;
getCountersignedStoreToken:&lt;br /&gt;
getCalBlobVersion&lt;br /&gt;
getSensorCalibrationStatus&lt;br /&gt;
getCalibrationDataState&lt;br /&gt;
pullCaptureBuffer&lt;br /&gt;
pullDebugImageData:imageWidth:imageHeight:&lt;br /&gt;
provisionSensor&lt;br /&gt;
unpairSensor&lt;br /&gt;
lockSensor&lt;br /&gt;
setDebugImages:&lt;br /&gt;
getSerialisedTemplateForIdentity:&lt;br /&gt;
delegate&lt;br /&gt;
setDelegate:&lt;br /&gt;
interruptionHandler&lt;br /&gt;
_connection&lt;br /&gt;
_delegate&lt;br /&gt;
_interruptionHandler&lt;br /&gt;
setTopology:&lt;br /&gt;
setDetails:&lt;br /&gt;
topology&lt;br /&gt;
details&lt;br /&gt;
_topology&lt;br /&gt;
_details&lt;br /&gt;
initEnrollmentValues&lt;br /&gt;
message&lt;br /&gt;
messageDetails&lt;br /&gt;
objectForKeyedSubscript:&lt;br /&gt;
currentPrimaryComponentID&lt;br /&gt;
integerValue&lt;br /&gt;
doubleValue&lt;br /&gt;
statistics&lt;br /&gt;
enroll:&lt;br /&gt;
enrollResult:componentSet:&lt;br /&gt;
enrollProgress:&lt;br /&gt;
_fingerOn&lt;br /&gt;
_enrolling&lt;br /&gt;
_badImagePerFingerDown&lt;br /&gt;
_enrollmentStarTime&lt;br /&gt;
_touchesPerEnroll&lt;br /&gt;
_badImagesPerEnroll&lt;br /&gt;
_rejectedImagesPerEnroll&lt;br /&gt;
_primaryClusterAdditions&lt;br /&gt;
_primaryClusterFailedAdditions&lt;br /&gt;
_otherClustersAdditions&lt;br /&gt;
_joinEvents&lt;br /&gt;
_area&lt;br /&gt;
_primaryClusterArea&lt;br /&gt;
numberWithBool:&lt;br /&gt;
preferencesGetStringValue:&lt;br /&gt;
preferencesGetBOOLValue:&lt;br /&gt;
enableLogger:toPath:&lt;br /&gt;
manager&lt;br /&gt;
defaultCenter&lt;br /&gt;
appDidEnterBackground:&lt;br /&gt;
addObserver:selector:name:object:&lt;br /&gt;
appWillEnterForeground:&lt;br /&gt;
bundleForClass:&lt;br /&gt;
imageNamed:inBundle:&lt;br /&gt;
updateEnableLogger&lt;br /&gt;
dataWithBytes:length:&lt;br /&gt;
startEnrollLog&lt;br /&gt;
data&lt;br /&gt;
logRemoveIdentity:&lt;br /&gt;
bytes&lt;br /&gt;
imageFromRawImageData:&lt;br /&gt;
imageFromBitmapData:inRect:&lt;br /&gt;
pullDebugImageData:target:&lt;br /&gt;
getRadarAtachmentsForLastEnrollment&lt;br /&gt;
getRadarAtachmentsForLastMatch&lt;br /&gt;
length&lt;br /&gt;
stringWithString:&lt;br /&gt;
getModulationRatio&lt;br /&gt;
stringForProvisioningState:&lt;br /&gt;
getSensorPatchVersion&lt;br /&gt;
stringWithFormat:&lt;br /&gt;
getLogsForProcess:&lt;br /&gt;
sharedConnection&lt;br /&gt;
isFingerprintUnlockAllowed&lt;br /&gt;
setGracePeriod:passcode:completionBlock:&lt;br /&gt;
finishEnrollLogWithStatus:withIdentity:withTemplate:&lt;br /&gt;
matchResult:withDetails:&lt;br /&gt;
createMatchInfo:withTopology:withMatchImage:&lt;br /&gt;
logMatchResult:withTopology:withImage:withCaptureBuffer:withTemplate:&lt;br /&gt;
getBytes:length:&lt;br /&gt;
logEnrollMessage:withTopology:withImage:withCaptureBuffer:&lt;br /&gt;
logStatus:&lt;br /&gt;
enrollProgressMessage:&lt;br /&gt;
logRejectedImage:&lt;br /&gt;
size&lt;br /&gt;
drawInRect:&lt;br /&gt;
drawInRect:blendMode:alpha:&lt;br /&gt;
CGImage&lt;br /&gt;
scale&lt;br /&gt;
imageOrientation&lt;br /&gt;
imageWithCGImage:scale:orientation:&lt;br /&gt;
imageWithImage:inRect:&lt;br /&gt;
identityImage:&lt;br /&gt;
imageWithImage:withNode:withRect:alpha:&lt;br /&gt;
compositeTopologyImage:&lt;br /&gt;
imageTopology:forGroup:&lt;br /&gt;
imageFauxprint:withTheta:withLamda:&lt;br /&gt;
greenColor&lt;br /&gt;
imageWithImage:withTintColor:&lt;br /&gt;
dataWithData:&lt;br /&gt;
imageWithCGImage:&lt;br /&gt;
preferencesSetBOOLValue:forKey:&lt;br /&gt;
pullDebugImage:&lt;br /&gt;
getLoggerAttachmentsForRadar:&lt;br /&gt;
stringFromSensorConfiguration&lt;br /&gt;
matchIdentity:&lt;br /&gt;
topologyImage:&lt;br /&gt;
imageWithImage:withMaskImage:&lt;br /&gt;
inUse&lt;br /&gt;
setInUse:&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
setEnrollProgressConfigRenderMode:&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
setEnrollProgressConfigRenderViewSize:&lt;br /&gt;
renderMode&lt;br /&gt;
setRenderMode:&lt;br /&gt;
opacity&lt;br /&gt;
setOpacity:&lt;br /&gt;
_xpcClient&lt;br /&gt;
_enrollingMode&lt;br /&gt;
_matchingMode&lt;br /&gt;
_statistics&lt;br /&gt;
_scanbedImage&lt;br /&gt;
_fauxprintImage&lt;br /&gt;
_nodeRect&lt;br /&gt;
_images&lt;br /&gt;
_compSet&lt;br /&gt;
_rejectTouchCount&lt;br /&gt;
_rejectTouch&lt;br /&gt;
_showDebugImages&lt;br /&gt;
_enableLogger&lt;br /&gt;
_enrollImageSet&lt;br /&gt;
_isInternalInstall&lt;br /&gt;
_inUse&lt;br /&gt;
_enrollProgressConfigRenderMode&lt;br /&gt;
_renderMode&lt;br /&gt;
_opacity&lt;br /&gt;
_enrollProgressConfigRenderViewSize&lt;br /&gt;
setUuid:&lt;br /&gt;
decodeBytesForKey:returnedLength:&lt;br /&gt;
initWithUUIDBytes:&lt;br /&gt;
decodeIntForKey:&lt;br /&gt;
decodeObjectOfClass:forKey:&lt;br /&gt;
copy&lt;br /&gt;
getUUIDBytes:&lt;br /&gt;
encodeBytes:length:forKey:&lt;br /&gt;
encodeInt:forKey:&lt;br /&gt;
encodeObject:forKey:&lt;br /&gt;
biometricKitIdentity&lt;br /&gt;
supportsSecureCoding&lt;br /&gt;
encodeWithCoder:&lt;br /&gt;
initWithCoder:&lt;br /&gt;
uuid&lt;br /&gt;
type&lt;br /&gt;
setType:&lt;br /&gt;
attribute&lt;br /&gt;
setAttribute:&lt;br /&gt;
entity&lt;br /&gt;
setEntity:&lt;br /&gt;
name&lt;br /&gt;
setName:&lt;br /&gt;
stringByReplacingOccurrencesOfString:withString:&lt;br /&gt;
initWithCapacity:&lt;br /&gt;
setLength:&lt;br /&gt;
mutableBytes&lt;br /&gt;
defaultManager&lt;br /&gt;
createDirectoryAtPath:withIntermediateDirectories:attributes:error:&lt;br /&gt;
removeItemAtPath:error:&lt;br /&gt;
UUIDString&lt;br /&gt;
setMessageDetails:&lt;br /&gt;
setCaptureImage:&lt;br /&gt;
setRenderedImage:&lt;br /&gt;
progress&lt;br /&gt;
setProgress:&lt;br /&gt;
setCurrentPrimaryComponentID:&lt;br /&gt;
captureImage&lt;br /&gt;
renderedImage&lt;br /&gt;
setMessage:&lt;br /&gt;
_message&lt;br /&gt;
_progress&lt;br /&gt;
_currentPrimaryComponentID&lt;br /&gt;
_captureImage&lt;br /&gt;
_renderedImage&lt;br /&gt;
_messageDetails&lt;br /&gt;
setX:&lt;br /&gt;
setY:&lt;br /&gt;
angle&lt;br /&gt;
setAngle:&lt;br /&gt;
_angle&lt;br /&gt;
setTransformationCoordinates:&lt;br /&gt;
componentID&lt;br /&gt;
setComponentID:&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
_componentID&lt;br /&gt;
_transformationCoordinates&lt;br /&gt;
pathComponents&lt;br /&gt;
com.apple.biometrickitd&lt;br /&gt;
T@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;,N,V_delegate&lt;br /&gt;
interruptionHandler&lt;br /&gt;
T@?,C,N,V_interruptionHandler&lt;br /&gt;
topology&lt;br /&gt;
T@&amp;quot;NSDictionary&amp;quot;,&amp;amp;,N,V_details&lt;br /&gt;
com.apple.fingerprint.enroll.attempts&lt;br /&gt;
com.apple.fingerprint.enroll.passes&lt;br /&gt;
com.apple.fingerprint.enroll.touchesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.badImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.rejectedImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterFailedAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.otherClustersAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.joinEvents&lt;br /&gt;
com.apple.fingerprint.enroll.clusterCount&lt;br /&gt;
com.apple.fingerprint.enroll.nodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterNodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.area&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterArea&lt;br /&gt;
com.apple.fingerprint.enroll.passTime&lt;br /&gt;
com.apple.fingerprint.enroll.fails&lt;br /&gt;
com.apple.fingerprint.enroll.failTime&lt;br /&gt;
com.apple.ManagedConfiguration.profileListChanged&lt;br /&gt;
com.apple.biometrickitd.debugLogEnabled&lt;br /&gt;
com.apple.biometrickitd.debugLogPath&lt;br /&gt;
debugLogEnabled&lt;br /&gt;
debugLogPath&lt;br /&gt;
BKOptionSuppressHapticFeedback&lt;br /&gt;
BKOptionFilterOutHomeButtonEvents&lt;br /&gt;
BKOptionMatchForUnlock&lt;br /&gt;
InternalBuild&lt;br /&gt;
scanbed&lt;br /&gt;
synthetic&lt;br /&gt;
Uninitialized&lt;br /&gt;
Not Provisioned&lt;br /&gt;
Unprovisioned&lt;br /&gt;
Provisioned&lt;br /&gt;
Provisioned Locked&lt;br /&gt;
Unpaired&lt;br /&gt;
Unknown&lt;br /&gt;
biosensor,mesa&lt;br /&gt;
modulation-ratio&lt;br /&gt;
AppleBiometricSensor&lt;br /&gt;
patch-version&lt;br /&gt;
Mesa configuration:&lt;br /&gt;
Provisioning Status: %@&lt;br /&gt;
Calibrated: &lt;br /&gt;
- Version: &lt;br /&gt;
- Signed: &lt;br /&gt;
Modulation ratio: &lt;br /&gt;
Kernel: &lt;br /&gt;
Thick kernel&lt;br /&gt;
Thin kernel&lt;br /&gt;
Sensor Patch Version: &lt;br /&gt;
Steps to Reproduce:&lt;br /&gt;
inUse&lt;br /&gt;
TB,V_inUse&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
Ti,N,V_enrollProgressConfigRenderMode&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
T{CGSize=dd},N,V_enrollProgressConfigRenderViewSize&lt;br /&gt;
renderMode&lt;br /&gt;
Ti,N,V_renderMode&lt;br /&gt;
opacity&lt;br /&gt;
Tf,N,V_opacity&lt;br /&gt;
Notification callback.&lt;br /&gt;
BiometricKitErrorDomain&lt;br /&gt;
BKIdentityUUID&lt;br /&gt;
BKIdentityType&lt;br /&gt;
BKIdentityAttribute&lt;br /&gt;
BKIdentityEntityNumber&lt;br /&gt;
BKIdentityName&lt;br /&gt;
/var/mobile/BiometricKit/biometrickitd&lt;br /&gt;
BKEPDReason&lt;br /&gt;
BKEPDNewNodeID&lt;br /&gt;
BKEPDNewComponentID&lt;br /&gt;
BKEPDNewNodeCoordinates&lt;br /&gt;
BKEPDRemovedNodeID&lt;br /&gt;
BKEPDRemovedComponentID&lt;br /&gt;
BKEPDExtendedComponentID&lt;br /&gt;
BKEPDResultComponentID&lt;br /&gt;
BKEPDMergedInComponents&lt;br /&gt;
BKEPDRedundantNode&lt;br /&gt;
BKTDLargestCompArea&lt;br /&gt;
BKTDLargestCompNodes&lt;br /&gt;
BKTDTotalArea&lt;br /&gt;
BKTDTotalNodes&lt;br /&gt;
BKTemplateUpdated&lt;br /&gt;
Td,N,V_x&lt;br /&gt;
Td,N,V_y&lt;br /&gt;
angle&lt;br /&gt;
Td,N,V_angle&lt;br /&gt;
componentID&lt;br /&gt;
Tq,N,V_componentID&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
T@&amp;quot;BiometricKitEnrollProgressCoordinates&amp;quot;,&amp;amp;,N,V_transformationCoordinates&lt;br /&gt;
Remove identity: %@&lt;br /&gt;
Log package:%@&lt;br /&gt;
biometrickitd&lt;br /&gt;
%@.tar.gz&lt;br /&gt;
cd %@ &amp;amp;&amp;amp; tar -cjf %@ %@&lt;br /&gt;
Time: % 8.3f&lt;br /&gt;
PASS&lt;br /&gt;
FAIL&lt;br /&gt;
Closing log with result %@&lt;br /&gt;
Template identity:&lt;br /&gt;
UUID  : %@&lt;br /&gt;
Type  : %i&lt;br /&gt;
Attrib: %i&lt;br /&gt;
Entity: %i&lt;br /&gt;
Error: Unable to get identity&lt;br /&gt;
Serialised template: %@&lt;br /&gt;
%@_%04d.bin&lt;br /&gt;
Status message: %@&lt;br /&gt;
Progress %i&lt;br /&gt;
Count of enrollments: %i&lt;br /&gt;
BiometricKitErrorTaskCancelled&lt;br /&gt;
BiometricKitErrorIdentityInvalid&lt;br /&gt;
BiometricKitErrorIdentityNotAllowed&lt;br /&gt;
BiometricKitErrorIdentityErrorInvalidData&lt;br /&gt;
BiometricKitErrorIdentityErrorUnknown&lt;br /&gt;
BiometricKitStatusFingerOn&lt;br /&gt;
BiometricKitStatusFingerOff&lt;br /&gt;
BiometricKitStatusEnrollmentComplete&lt;br /&gt;
BiometricKitStatusEnrollmentCancelled&lt;br /&gt;
BiometricKitStatusEnrollmentFailed&lt;br /&gt;
BiometricKitStatusEnrollmentTimeout&lt;br /&gt;
BiometricKitStatusUnknownError&lt;br /&gt;
BiometricKitStatusImageRejected&lt;br /&gt;
BiometricKitStatusNoCalibration&lt;br /&gt;
BiometricKitImageForProcessing&lt;br /&gt;
BiometricKitStatusTemplateListUpdated&lt;br /&gt;
BiometricKitStatusRequestFingerOff&lt;br /&gt;
BiometricKitStatusAutoMatchingStarted&lt;br /&gt;
BiometricKitStatusAutoMatchingStopped&lt;br /&gt;
BiometricKitStatusCaptureRestart&lt;br /&gt;
BiometricKitStatusScanTooShort&lt;br /&gt;
BiometricKitStatusAutoMatchingStartByHomeButton&lt;br /&gt;
BiometricKitStatusMatchingCancelled&lt;br /&gt;
BiometricKitStatusFingerOnBeforeFirstPasscodeUnlock&lt;br /&gt;
BiometricKitStatusFingerOnInPasscodeLockout&lt;br /&gt;
BiometricKitStatusFingerOnInBioLockout&lt;br /&gt;
BiometricKitStatusFingerOnTokenExpired&lt;br /&gt;
BiometricKitStatusESDRecovery&lt;br /&gt;
BiometricKitStatusImageRejectedUnknown&lt;br /&gt;
BiometricKitStatusImageRejectedBadBlocks&lt;br /&gt;
BiometricKitStatusImageRejectedChFPN&lt;br /&gt;
BiometricKitStatusImageRejectedCaFPN&lt;br /&gt;
BiometricKitStatusSensorOperationModeIdle&lt;br /&gt;
BiometricKitStatusSensorOperationModeCapture&lt;br /&gt;
BiometricKitStatusSensorOperationModePause&lt;br /&gt;
Other unknown status %i&lt;br /&gt;
Image #%i was rejected&lt;br /&gt;
Sensor patch version: %ld&lt;br /&gt;
Sensor patch version: unknown&lt;br /&gt;
Calibration Data: %@&lt;br /&gt;
Capture buffer: %@&lt;br /&gt;
Matcher: image refused&lt;br /&gt;
Matcher: image %s node %u&lt;br /&gt;
added as&lt;br /&gt;
replaced&lt;br /&gt;
Coordinates: %s[%i, %i, %i]&lt;br /&gt;
inverse of &lt;br /&gt;
Parent: %i&lt;br /&gt;
Processed image: %@&lt;br /&gt;
Enroll debug log, version 7&lt;br /&gt;
static const node_placement_t table_%02i = &lt;br /&gt;
%@{%i,%i,%i,%i,%i,%i,{&lt;br /&gt;
%@{%i,%i,%i,%i,%i}&lt;br /&gt;
%@},%i,%i,%i,%i,%i,0x%04x};&lt;br /&gt;
bin8&lt;br /&gt;
bin16&lt;br /&gt;
binXX&lt;br /&gt;
calibdata.bin&lt;br /&gt;
calibration-blob&lt;br /&gt;
Image #%i%s&lt;br /&gt;
 was sent to matcher&lt;br /&gt;
Match result&lt;br /&gt;
Match details:&lt;br /&gt;
Matching score: %i&lt;br /&gt;
Match S2S count: %i&lt;br /&gt;
Matching node: %i&lt;br /&gt;
Updated node: %i&lt;br /&gt;
Not available&lt;br /&gt;
No match (artificial)&lt;br /&gt;
No match&lt;br /&gt;
Image #%i&lt;br /&gt;
Warning: the log is not complete, previous part of the log was deleted.&lt;br /&gt;
Starting enrollment&lt;br /&gt;
Starting matching&lt;br /&gt;
No known identities with enroll log are available.&lt;br /&gt;
Known identities with enroll log available:&lt;br /&gt;
%@ : %@&lt;br /&gt;
Match debug log, version 7&lt;br /&gt;
messages.log&lt;br /&gt;
OS version: %@ (%@)&lt;br /&gt;
Mesa: %@&lt;br /&gt;
Process name:%@&lt;br /&gt;
PrimaryUsagePage&lt;br /&gt;
PrimaryUsage&lt;br /&gt;
com.apple.iokit.hid.displayStatus&lt;br /&gt;
com.apple.mobile.keybagd.lock_status&lt;br /&gt;
AppleMesaSEPDriver&lt;br /&gt;
IOGeneralInterest&lt;br /&gt;
ScanningState&lt;br /&gt;
ScanningStateIdle&lt;br /&gt;
ScanningStateShortScanning&lt;br /&gt;
ScanningStateLongScanning&lt;br /&gt;
Unknown scanning state %i&lt;br /&gt;
Event: %@&lt;br /&gt;
HomeButtonPress&lt;br /&gt;
ExtendedDeviceLockState&lt;br /&gt;
MobileKeyBagDeviceIsUnlocked&lt;br /&gt;
MobileKeyBagDeviceIsLocked&lt;br /&gt;
MobileKeyBagDeviceIsLocking&lt;br /&gt;
MobileKeyBagDisabled&lt;br /&gt;
MobileKeyBagDeviceUnlockInProgress&lt;br /&gt;
MobileKeyBagDeviceInGracePeriod&lt;br /&gt;
MobileKeyBagDeviceInAssertDelay&lt;br /&gt;
MobileKeyBagDeviceInBioUnlock&lt;br /&gt;
Unknown lock state %i&lt;br /&gt;
DisplayOn&lt;br /&gt;
DisplayOff&lt;br /&gt;
/SourceCache/Mesa/Mesa-152/AppleBiometricServices/BiometricKit/BiometricKitDebugLog.m&lt;br /&gt;
/var/mobile/Library/Logs/CrashReporter/BiometricKit&lt;br /&gt;
v24@0:8@&amp;quot;BiometricKitIdentity&amp;quot;16&lt;br /&gt;
@&amp;quot;NSXPCConnection&amp;quot;&lt;br /&gt;
@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitXPCClient&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitStatistics&amp;quot;&lt;br /&gt;
@&amp;quot;UIImage&amp;quot;&lt;br /&gt;
[25{CGRect=&amp;quot;origin&amp;quot;{CGPoint=&amp;quot;x&amp;quot;d&amp;quot;y&amp;quot;d}&amp;quot;size&amp;quot;{CGSize=&amp;quot;width&amp;quot;d&amp;quot;height&amp;quot;d}}]&lt;br /&gt;
[25@&amp;quot;UIImage&amp;quot;]&lt;br /&gt;
{?=&amp;quot;count&amp;quot;i&amp;quot;capa&amp;quot;i&amp;quot;items&amp;quot;^^{?}&amp;quot;unusedImageCount&amp;quot;i&amp;quot;componentCount&amp;quot;i&amp;quot;componentCapa&amp;quot;i&amp;quot;bestComponentIndex&amp;quot;i&amp;quot;bestMapiComponentIndex&amp;quot;i&amp;quot;components&amp;quot;^^{?}&amp;quot;mapiNodeAddedIndex&amp;quot;s&amp;quot;mapiNodeRemovedIndex&amp;quot;s&amp;quot;updateCount&amp;quot;i&amp;quot;structureIsInconsistent&amp;quot;B}&lt;br /&gt;
{?=&amp;quot;nodes&amp;quot;[25{?=&amp;quot;imageData&amp;quot;@&amp;quot;NSData&amp;quot;&amp;quot;width&amp;quot;I&amp;quot;height&amp;quot;I}]}&lt;br /&gt;
BiometricKitXpcProtocol&lt;br /&gt;
BiometricKitDelegateXpcProtocol&lt;br /&gt;
BiometricKitXPCClient&lt;br /&gt;
BiometricKitTemplateInfo&lt;br /&gt;
BiometricKitStatistics&lt;br /&gt;
BiometricKit&lt;br /&gt;
BiometricKitDelegate&lt;br /&gt;
BiometricKitIdentity&lt;br /&gt;
NSSecureCoding&lt;br /&gt;
NSCoding&lt;br /&gt;
BiometricKitMatchInfo&lt;br /&gt;
BiometricKitEnrollProgressInfo&lt;br /&gt;
BiometricKitEnrollProgressCoordinates&lt;br /&gt;
BiometricKitEnrollProgressMergedComponent&lt;br /&gt;
BiometricKitDebugLog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=34986</id>
		<title>Touch ID</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Touch_ID&amp;diff=34986"/>
		<updated>2013-09-10T20:14:28Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: New page re: Half-baked disassembly. Original research by Andrew Aude&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The iPhone 5S comes equipped with a fingerprint scanner. There is not an official developer API for it. &lt;br /&gt;
&lt;br /&gt;
However there is a private API for it. The dylib file for it is here: &lt;br /&gt;
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/BiometricKit.framework/BiometricKit&lt;br /&gt;
&lt;br /&gt;
It contains only a 64-bit Arm segment, and so the common disassembly tools cannot process the instructions well. &lt;br /&gt;
&lt;br /&gt;
== String Dump ==&lt;br /&gt;
Here is a long string dump of the contents of the BiometricKit library. These strings hint at the functionality of the framework.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
initWithMachServiceName:options:&lt;br /&gt;
connectWithReplyBlock:&lt;br /&gt;
registerDelegate:withReplyBlock:&lt;br /&gt;
suspendWork:withReplyBlock:&lt;br /&gt;
enroll:withAuthToken:withReplyBlock:&lt;br /&gt;
match:withReplyBlock:&lt;br /&gt;
match:withOptions:withReplyBlock:&lt;br /&gt;
matchIdentities:withReplyBlock:&lt;br /&gt;
cancelWithReplyBlock:&lt;br /&gt;
updateIdentity:withReplyBlock:&lt;br /&gt;
removeIdentity:withReplyBlock:&lt;br /&gt;
getIdentityFromUUID:withReplyBlock:&lt;br /&gt;
identities:withReplyBlock:&lt;br /&gt;
resetEngineWithReplyBlock:&lt;br /&gt;
registerDSID:withAuthToken:withReplyBlock:&lt;br /&gt;
registerStoreToken:withReplyBlock:&lt;br /&gt;
getCountersignedStoreTokenWithReplyBlock:&lt;br /&gt;
getMaxIdentityCount:withReplyBlock:&lt;br /&gt;
enrollContinueWithReplyBlock:&lt;br /&gt;
pullAlignmentDataWithReplyBlock:&lt;br /&gt;
pullMatchTopologyDataWithReplyBlock:&lt;br /&gt;
getNodeTopologyForIdentity:withReplyBlock:&lt;br /&gt;
preventAutonomousMatchingMode:withReplyBlock:&lt;br /&gt;
getProvisioningStateWithReplyBlock:&lt;br /&gt;
getCalBlobVersionWithReplyBlock:&lt;br /&gt;
getSensorCalibrationStatusWithReplyBlock:&lt;br /&gt;
getCalibrationDataStateWithReplyBlock:&lt;br /&gt;
setDebugImages:withReplyBlock:&lt;br /&gt;
pullCaptureBufferWithReplyBlock:&lt;br /&gt;
pullDebugImageData:withReplyBlock:&lt;br /&gt;
provisionSensorWithReplyBlock:&lt;br /&gt;
unpairSensorWithReplyBlock:&lt;br /&gt;
lockSensorWithReplyBlock:&lt;br /&gt;
getSerialisedTemplateForIdentity:withReplyBlock:&lt;br /&gt;
interfaceWithProtocol:&lt;br /&gt;
setRemoteObjectInterface:&lt;br /&gt;
remoteObjectInterface&lt;br /&gt;
setWithObject:&lt;br /&gt;
setClasses:forSelector:argumentIndex:ofReply:&lt;br /&gt;
setWithObjects:&lt;br /&gt;
enrollResult:&lt;br /&gt;
matchResult:&lt;br /&gt;
statusMessage:&lt;br /&gt;
homeButtonPressed&lt;br /&gt;
setExportedInterface:&lt;br /&gt;
setExportedObject:&lt;br /&gt;
setInterruptionHandler:&lt;br /&gt;
resume&lt;br /&gt;
invalidate&lt;br /&gt;
remoteObjectProxyWithErrorHandler:&lt;br /&gt;
code&lt;br /&gt;
respondsToSelector:&lt;br /&gt;
connect&lt;br /&gt;
registerDelegate:&lt;br /&gt;
suspendWork:&lt;br /&gt;
enroll:withAuthToken:&lt;br /&gt;
match:&lt;br /&gt;
match:withOptions:&lt;br /&gt;
matchIdentities:&lt;br /&gt;
cancel&lt;br /&gt;
updateIdentity:&lt;br /&gt;
removeIdentity:&lt;br /&gt;
getIdentityFromUUID:&lt;br /&gt;
identities:&lt;br /&gt;
getMaxIdentityCount:&lt;br /&gt;
resetEngine&lt;br /&gt;
enrollContinue&lt;br /&gt;
pullAlignmentData&lt;br /&gt;
pullMatchTopologyData&lt;br /&gt;
getNodeTopologyForIdentity:&lt;br /&gt;
preventAutonomousMatchingMode:&lt;br /&gt;
getProvisioningState&lt;br /&gt;
registerDSID:withAuthToken:&lt;br /&gt;
registerStoreToken:&lt;br /&gt;
getCountersignedStoreToken:&lt;br /&gt;
getCalBlobVersion&lt;br /&gt;
getSensorCalibrationStatus&lt;br /&gt;
getCalibrationDataState&lt;br /&gt;
pullCaptureBuffer&lt;br /&gt;
pullDebugImageData:imageWidth:imageHeight:&lt;br /&gt;
provisionSensor&lt;br /&gt;
unpairSensor&lt;br /&gt;
lockSensor&lt;br /&gt;
setDebugImages:&lt;br /&gt;
getSerialisedTemplateForIdentity:&lt;br /&gt;
delegate&lt;br /&gt;
setDelegate:&lt;br /&gt;
interruptionHandler&lt;br /&gt;
_connection&lt;br /&gt;
_delegate&lt;br /&gt;
_interruptionHandler&lt;br /&gt;
setTopology:&lt;br /&gt;
setDetails:&lt;br /&gt;
topology&lt;br /&gt;
details&lt;br /&gt;
_topology&lt;br /&gt;
_details&lt;br /&gt;
initEnrollmentValues&lt;br /&gt;
message&lt;br /&gt;
messageDetails&lt;br /&gt;
objectForKeyedSubscript:&lt;br /&gt;
currentPrimaryComponentID&lt;br /&gt;
integerValue&lt;br /&gt;
doubleValue&lt;br /&gt;
statistics&lt;br /&gt;
enroll:&lt;br /&gt;
enrollResult:componentSet:&lt;br /&gt;
enrollProgress:&lt;br /&gt;
_fingerOn&lt;br /&gt;
_enrolling&lt;br /&gt;
_badImagePerFingerDown&lt;br /&gt;
_enrollmentStarTime&lt;br /&gt;
_touchesPerEnroll&lt;br /&gt;
_badImagesPerEnroll&lt;br /&gt;
_rejectedImagesPerEnroll&lt;br /&gt;
_primaryClusterAdditions&lt;br /&gt;
_primaryClusterFailedAdditions&lt;br /&gt;
_otherClustersAdditions&lt;br /&gt;
_joinEvents&lt;br /&gt;
_area&lt;br /&gt;
_primaryClusterArea&lt;br /&gt;
numberWithBool:&lt;br /&gt;
preferencesGetStringValue:&lt;br /&gt;
preferencesGetBOOLValue:&lt;br /&gt;
enableLogger:toPath:&lt;br /&gt;
manager&lt;br /&gt;
defaultCenter&lt;br /&gt;
appDidEnterBackground:&lt;br /&gt;
addObserver:selector:name:object:&lt;br /&gt;
appWillEnterForeground:&lt;br /&gt;
bundleForClass:&lt;br /&gt;
imageNamed:inBundle:&lt;br /&gt;
updateEnableLogger&lt;br /&gt;
dataWithBytes:length:&lt;br /&gt;
startEnrollLog&lt;br /&gt;
data&lt;br /&gt;
logRemoveIdentity:&lt;br /&gt;
bytes&lt;br /&gt;
imageFromRawImageData:&lt;br /&gt;
imageFromBitmapData:inRect:&lt;br /&gt;
pullDebugImageData:target:&lt;br /&gt;
getRadarAtachmentsForLastEnrollment&lt;br /&gt;
getRadarAtachmentsForLastMatch&lt;br /&gt;
length&lt;br /&gt;
stringWithString:&lt;br /&gt;
getModulationRatio&lt;br /&gt;
stringForProvisioningState:&lt;br /&gt;
getSensorPatchVersion&lt;br /&gt;
stringWithFormat:&lt;br /&gt;
getLogsForProcess:&lt;br /&gt;
sharedConnection&lt;br /&gt;
isFingerprintUnlockAllowed&lt;br /&gt;
setGracePeriod:passcode:completionBlock:&lt;br /&gt;
finishEnrollLogWithStatus:withIdentity:withTemplate:&lt;br /&gt;
matchResult:withDetails:&lt;br /&gt;
createMatchInfo:withTopology:withMatchImage:&lt;br /&gt;
logMatchResult:withTopology:withImage:withCaptureBuffer:withTemplate:&lt;br /&gt;
getBytes:length:&lt;br /&gt;
logEnrollMessage:withTopology:withImage:withCaptureBuffer:&lt;br /&gt;
logStatus:&lt;br /&gt;
enrollProgressMessage:&lt;br /&gt;
logRejectedImage:&lt;br /&gt;
size&lt;br /&gt;
drawInRect:&lt;br /&gt;
drawInRect:blendMode:alpha:&lt;br /&gt;
CGImage&lt;br /&gt;
scale&lt;br /&gt;
imageOrientation&lt;br /&gt;
imageWithCGImage:scale:orientation:&lt;br /&gt;
imageWithImage:inRect:&lt;br /&gt;
identityImage:&lt;br /&gt;
imageWithImage:withNode:withRect:alpha:&lt;br /&gt;
compositeTopologyImage:&lt;br /&gt;
imageTopology:forGroup:&lt;br /&gt;
imageFauxprint:withTheta:withLamda:&lt;br /&gt;
greenColor&lt;br /&gt;
imageWithImage:withTintColor:&lt;br /&gt;
dataWithData:&lt;br /&gt;
imageWithCGImage:&lt;br /&gt;
preferencesSetBOOLValue:forKey:&lt;br /&gt;
pullDebugImage:&lt;br /&gt;
getLoggerAttachmentsForRadar:&lt;br /&gt;
stringFromSensorConfiguration&lt;br /&gt;
matchIdentity:&lt;br /&gt;
topologyImage:&lt;br /&gt;
imageWithImage:withMaskImage:&lt;br /&gt;
inUse&lt;br /&gt;
setInUse:&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
setEnrollProgressConfigRenderMode:&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
setEnrollProgressConfigRenderViewSize:&lt;br /&gt;
renderMode&lt;br /&gt;
setRenderMode:&lt;br /&gt;
opacity&lt;br /&gt;
setOpacity:&lt;br /&gt;
_xpcClient&lt;br /&gt;
_enrollingMode&lt;br /&gt;
_matchingMode&lt;br /&gt;
_statistics&lt;br /&gt;
_scanbedImage&lt;br /&gt;
_fauxprintImage&lt;br /&gt;
_nodeRect&lt;br /&gt;
_images&lt;br /&gt;
_compSet&lt;br /&gt;
_rejectTouchCount&lt;br /&gt;
_rejectTouch&lt;br /&gt;
_showDebugImages&lt;br /&gt;
_enableLogger&lt;br /&gt;
_enrollImageSet&lt;br /&gt;
_isInternalInstall&lt;br /&gt;
_inUse&lt;br /&gt;
_enrollProgressConfigRenderMode&lt;br /&gt;
_renderMode&lt;br /&gt;
_opacity&lt;br /&gt;
_enrollProgressConfigRenderViewSize&lt;br /&gt;
setUuid:&lt;br /&gt;
decodeBytesForKey:returnedLength:&lt;br /&gt;
initWithUUIDBytes:&lt;br /&gt;
decodeIntForKey:&lt;br /&gt;
decodeObjectOfClass:forKey:&lt;br /&gt;
copy&lt;br /&gt;
getUUIDBytes:&lt;br /&gt;
encodeBytes:length:forKey:&lt;br /&gt;
encodeInt:forKey:&lt;br /&gt;
encodeObject:forKey:&lt;br /&gt;
biometricKitIdentity&lt;br /&gt;
supportsSecureCoding&lt;br /&gt;
encodeWithCoder:&lt;br /&gt;
initWithCoder:&lt;br /&gt;
uuid&lt;br /&gt;
type&lt;br /&gt;
setType:&lt;br /&gt;
attribute&lt;br /&gt;
setAttribute:&lt;br /&gt;
entity&lt;br /&gt;
setEntity:&lt;br /&gt;
name&lt;br /&gt;
setName:&lt;br /&gt;
stringByReplacingOccurrencesOfString:withString:&lt;br /&gt;
initWithCapacity:&lt;br /&gt;
setLength:&lt;br /&gt;
mutableBytes&lt;br /&gt;
defaultManager&lt;br /&gt;
createDirectoryAtPath:withIntermediateDirectories:attributes:error:&lt;br /&gt;
removeItemAtPath:error:&lt;br /&gt;
UUIDString&lt;br /&gt;
setMessageDetails:&lt;br /&gt;
setCaptureImage:&lt;br /&gt;
setRenderedImage:&lt;br /&gt;
progress&lt;br /&gt;
setProgress:&lt;br /&gt;
setCurrentPrimaryComponentID:&lt;br /&gt;
captureImage&lt;br /&gt;
renderedImage&lt;br /&gt;
setMessage:&lt;br /&gt;
_message&lt;br /&gt;
_progress&lt;br /&gt;
_currentPrimaryComponentID&lt;br /&gt;
_captureImage&lt;br /&gt;
_renderedImage&lt;br /&gt;
_messageDetails&lt;br /&gt;
setX:&lt;br /&gt;
setY:&lt;br /&gt;
angle&lt;br /&gt;
setAngle:&lt;br /&gt;
_angle&lt;br /&gt;
setTransformationCoordinates:&lt;br /&gt;
componentID&lt;br /&gt;
setComponentID:&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
_componentID&lt;br /&gt;
_transformationCoordinates&lt;br /&gt;
pathComponents&lt;br /&gt;
com.apple.biometrickitd&lt;br /&gt;
T@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;,N,V_delegate&lt;br /&gt;
interruptionHandler&lt;br /&gt;
T@?,C,N,V_interruptionHandler&lt;br /&gt;
topology&lt;br /&gt;
T@&amp;quot;NSDictionary&amp;quot;,&amp;amp;,N,V_details&lt;br /&gt;
com.apple.fingerprint.enroll.attempts&lt;br /&gt;
com.apple.fingerprint.enroll.passes&lt;br /&gt;
com.apple.fingerprint.enroll.touchesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.badImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.rejectedImagesPerEnroll&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterFailedAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.otherClustersAdditions&lt;br /&gt;
com.apple.fingerprint.enroll.joinEvents&lt;br /&gt;
com.apple.fingerprint.enroll.clusterCount&lt;br /&gt;
com.apple.fingerprint.enroll.nodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterNodeCount&lt;br /&gt;
com.apple.fingerprint.enroll.area&lt;br /&gt;
com.apple.fingerprint.enroll.primaryClusterArea&lt;br /&gt;
com.apple.fingerprint.enroll.passTime&lt;br /&gt;
com.apple.fingerprint.enroll.fails&lt;br /&gt;
com.apple.fingerprint.enroll.failTime&lt;br /&gt;
com.apple.ManagedConfiguration.profileListChanged&lt;br /&gt;
com.apple.biometrickitd.debugLogEnabled&lt;br /&gt;
com.apple.biometrickitd.debugLogPath&lt;br /&gt;
debugLogEnabled&lt;br /&gt;
debugLogPath&lt;br /&gt;
BKOptionSuppressHapticFeedback&lt;br /&gt;
BKOptionFilterOutHomeButtonEvents&lt;br /&gt;
BKOptionMatchForUnlock&lt;br /&gt;
InternalBuild&lt;br /&gt;
scanbed&lt;br /&gt;
synthetic&lt;br /&gt;
Uninitialized&lt;br /&gt;
Not Provisioned&lt;br /&gt;
Unprovisioned&lt;br /&gt;
Provisioned&lt;br /&gt;
Provisioned Locked&lt;br /&gt;
Unpaired&lt;br /&gt;
Unknown&lt;br /&gt;
biosensor,mesa&lt;br /&gt;
modulation-ratio&lt;br /&gt;
AppleBiometricSensor&lt;br /&gt;
patch-version&lt;br /&gt;
Mesa configuration:&lt;br /&gt;
Provisioning Status: %@&lt;br /&gt;
Calibrated: &lt;br /&gt;
- Version: &lt;br /&gt;
- Signed: &lt;br /&gt;
Modulation ratio: &lt;br /&gt;
Kernel: &lt;br /&gt;
Thick kernel&lt;br /&gt;
Thin kernel&lt;br /&gt;
Sensor Patch Version: &lt;br /&gt;
Steps to Reproduce:&lt;br /&gt;
inUse&lt;br /&gt;
TB,V_inUse&lt;br /&gt;
enrollProgressConfigRenderMode&lt;br /&gt;
Ti,N,V_enrollProgressConfigRenderMode&lt;br /&gt;
enrollProgressConfigRenderViewSize&lt;br /&gt;
T{CGSize=dd},N,V_enrollProgressConfigRenderViewSize&lt;br /&gt;
renderMode&lt;br /&gt;
Ti,N,V_renderMode&lt;br /&gt;
opacity&lt;br /&gt;
Tf,N,V_opacity&lt;br /&gt;
Notification callback.&lt;br /&gt;
BiometricKitErrorDomain&lt;br /&gt;
BKIdentityUUID&lt;br /&gt;
BKIdentityType&lt;br /&gt;
BKIdentityAttribute&lt;br /&gt;
BKIdentityEntityNumber&lt;br /&gt;
BKIdentityName&lt;br /&gt;
/var/mobile/BiometricKit/biometrickitd&lt;br /&gt;
BKEPDReason&lt;br /&gt;
BKEPDNewNodeID&lt;br /&gt;
BKEPDNewComponentID&lt;br /&gt;
BKEPDNewNodeCoordinates&lt;br /&gt;
BKEPDRemovedNodeID&lt;br /&gt;
BKEPDRemovedComponentID&lt;br /&gt;
BKEPDExtendedComponentID&lt;br /&gt;
BKEPDResultComponentID&lt;br /&gt;
BKEPDMergedInComponents&lt;br /&gt;
BKEPDRedundantNode&lt;br /&gt;
BKTDLargestCompArea&lt;br /&gt;
BKTDLargestCompNodes&lt;br /&gt;
BKTDTotalArea&lt;br /&gt;
BKTDTotalNodes&lt;br /&gt;
BKTemplateUpdated&lt;br /&gt;
Td,N,V_x&lt;br /&gt;
Td,N,V_y&lt;br /&gt;
angle&lt;br /&gt;
Td,N,V_angle&lt;br /&gt;
componentID&lt;br /&gt;
Tq,N,V_componentID&lt;br /&gt;
transformationCoordinates&lt;br /&gt;
T@&amp;quot;BiometricKitEnrollProgressCoordinates&amp;quot;,&amp;amp;,N,V_transformationCoordinates&lt;br /&gt;
Remove identity: %@&lt;br /&gt;
Log package:%@&lt;br /&gt;
biometrickitd&lt;br /&gt;
%@.tar.gz&lt;br /&gt;
cd %@ &amp;amp;&amp;amp; tar -cjf %@ %@&lt;br /&gt;
Time: % 8.3f&lt;br /&gt;
PASS&lt;br /&gt;
FAIL&lt;br /&gt;
Closing log with result %@&lt;br /&gt;
Template identity:&lt;br /&gt;
UUID  : %@&lt;br /&gt;
Type  : %i&lt;br /&gt;
Attrib: %i&lt;br /&gt;
Entity: %i&lt;br /&gt;
Error: Unable to get identity&lt;br /&gt;
Serialised template: %@&lt;br /&gt;
%@_%04d.bin&lt;br /&gt;
Status message: %@&lt;br /&gt;
Progress %i&lt;br /&gt;
Count of enrollments: %i&lt;br /&gt;
BiometricKitErrorTaskCancelled&lt;br /&gt;
BiometricKitErrorIdentityInvalid&lt;br /&gt;
BiometricKitErrorIdentityNotAllowed&lt;br /&gt;
BiometricKitErrorIdentityErrorInvalidData&lt;br /&gt;
BiometricKitErrorIdentityErrorUnknown&lt;br /&gt;
BiometricKitStatusFingerOn&lt;br /&gt;
BiometricKitStatusFingerOff&lt;br /&gt;
BiometricKitStatusEnrollmentComplete&lt;br /&gt;
BiometricKitStatusEnrollmentCancelled&lt;br /&gt;
BiometricKitStatusEnrollmentFailed&lt;br /&gt;
BiometricKitStatusEnrollmentTimeout&lt;br /&gt;
BiometricKitStatusUnknownError&lt;br /&gt;
BiometricKitStatusImageRejected&lt;br /&gt;
BiometricKitStatusNoCalibration&lt;br /&gt;
BiometricKitImageForProcessing&lt;br /&gt;
BiometricKitStatusTemplateListUpdated&lt;br /&gt;
BiometricKitStatusRequestFingerOff&lt;br /&gt;
BiometricKitStatusAutoMatchingStarted&lt;br /&gt;
BiometricKitStatusAutoMatchingStopped&lt;br /&gt;
BiometricKitStatusCaptureRestart&lt;br /&gt;
BiometricKitStatusScanTooShort&lt;br /&gt;
BiometricKitStatusAutoMatchingStartByHomeButton&lt;br /&gt;
BiometricKitStatusMatchingCancelled&lt;br /&gt;
BiometricKitStatusFingerOnBeforeFirstPasscodeUnlock&lt;br /&gt;
BiometricKitStatusFingerOnInPasscodeLockout&lt;br /&gt;
BiometricKitStatusFingerOnInBioLockout&lt;br /&gt;
BiometricKitStatusFingerOnTokenExpired&lt;br /&gt;
BiometricKitStatusESDRecovery&lt;br /&gt;
BiometricKitStatusImageRejectedUnknown&lt;br /&gt;
BiometricKitStatusImageRejectedBadBlocks&lt;br /&gt;
BiometricKitStatusImageRejectedChFPN&lt;br /&gt;
BiometricKitStatusImageRejectedCaFPN&lt;br /&gt;
BiometricKitStatusSensorOperationModeIdle&lt;br /&gt;
BiometricKitStatusSensorOperationModeCapture&lt;br /&gt;
BiometricKitStatusSensorOperationModePause&lt;br /&gt;
Other unknown status %i&lt;br /&gt;
Image #%i was rejected&lt;br /&gt;
Sensor patch version: %ld&lt;br /&gt;
Sensor patch version: unknown&lt;br /&gt;
Calibration Data: %@&lt;br /&gt;
Capture buffer: %@&lt;br /&gt;
Matcher: image refused&lt;br /&gt;
Matcher: image %s node %u&lt;br /&gt;
added as&lt;br /&gt;
replaced&lt;br /&gt;
Coordinates: %s[%i, %i, %i]&lt;br /&gt;
inverse of &lt;br /&gt;
Parent: %i&lt;br /&gt;
Processed image: %@&lt;br /&gt;
Enroll debug log, version 7&lt;br /&gt;
static const node_placement_t table_%02i = &lt;br /&gt;
%@{%i,%i,%i,%i,%i,%i,{&lt;br /&gt;
%@{%i,%i,%i,%i,%i}&lt;br /&gt;
%@},%i,%i,%i,%i,%i,0x%04x};&lt;br /&gt;
bin8&lt;br /&gt;
bin16&lt;br /&gt;
binXX&lt;br /&gt;
calibdata.bin&lt;br /&gt;
calibration-blob&lt;br /&gt;
Image #%i%s&lt;br /&gt;
 was sent to matcher&lt;br /&gt;
Match result&lt;br /&gt;
Match details:&lt;br /&gt;
Matching score: %i&lt;br /&gt;
Match S2S count: %i&lt;br /&gt;
Matching node: %i&lt;br /&gt;
Updated node: %i&lt;br /&gt;
Not available&lt;br /&gt;
No match (artificial)&lt;br /&gt;
No match&lt;br /&gt;
Image #%i&lt;br /&gt;
Warning: the log is not complete, previous part of the log was deleted.&lt;br /&gt;
Starting enrollment&lt;br /&gt;
Starting matching&lt;br /&gt;
No known identities with enroll log are available.&lt;br /&gt;
Known identities with enroll log available:&lt;br /&gt;
%@ : %@&lt;br /&gt;
Match debug log, version 7&lt;br /&gt;
messages.log&lt;br /&gt;
OS version: %@ (%@)&lt;br /&gt;
Mesa: %@&lt;br /&gt;
Process name:%@&lt;br /&gt;
PrimaryUsagePage&lt;br /&gt;
PrimaryUsage&lt;br /&gt;
com.apple.iokit.hid.displayStatus&lt;br /&gt;
com.apple.mobile.keybagd.lock_status&lt;br /&gt;
AppleMesaSEPDriver&lt;br /&gt;
IOGeneralInterest&lt;br /&gt;
ScanningState&lt;br /&gt;
ScanningStateIdle&lt;br /&gt;
ScanningStateShortScanning&lt;br /&gt;
ScanningStateLongScanning&lt;br /&gt;
Unknown scanning state %i&lt;br /&gt;
Event: %@&lt;br /&gt;
HomeButtonPress&lt;br /&gt;
ExtendedDeviceLockState&lt;br /&gt;
MobileKeyBagDeviceIsUnlocked&lt;br /&gt;
MobileKeyBagDeviceIsLocked&lt;br /&gt;
MobileKeyBagDeviceIsLocking&lt;br /&gt;
MobileKeyBagDisabled&lt;br /&gt;
MobileKeyBagDeviceUnlockInProgress&lt;br /&gt;
MobileKeyBagDeviceInGracePeriod&lt;br /&gt;
MobileKeyBagDeviceInAssertDelay&lt;br /&gt;
MobileKeyBagDeviceInBioUnlock&lt;br /&gt;
Unknown lock state %i&lt;br /&gt;
DisplayOn&lt;br /&gt;
DisplayOff&lt;br /&gt;
/SourceCache/Mesa/Mesa-152/AppleBiometricServices/BiometricKit/BiometricKitDebugLog.m&lt;br /&gt;
/var/mobile/Library/Logs/CrashReporter/BiometricKit&lt;br /&gt;
v24@0:8@&amp;quot;BiometricKitIdentity&amp;quot;16&lt;br /&gt;
@&amp;quot;NSXPCConnection&amp;quot;&lt;br /&gt;
@&amp;quot;&amp;lt;BiometricKitDelegate&amp;gt;&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitXPCClient&amp;quot;&lt;br /&gt;
@&amp;quot;BiometricKitStatistics&amp;quot;&lt;br /&gt;
@&amp;quot;UIImage&amp;quot;&lt;br /&gt;
[25{CGRect=&amp;quot;origin&amp;quot;{CGPoint=&amp;quot;x&amp;quot;d&amp;quot;y&amp;quot;d}&amp;quot;size&amp;quot;{CGSize=&amp;quot;width&amp;quot;d&amp;quot;height&amp;quot;d}}]&lt;br /&gt;
[25@&amp;quot;UIImage&amp;quot;]&lt;br /&gt;
{?=&amp;quot;count&amp;quot;i&amp;quot;capa&amp;quot;i&amp;quot;items&amp;quot;^^{?}&amp;quot;unusedImageCount&amp;quot;i&amp;quot;componentCount&amp;quot;i&amp;quot;componentCapa&amp;quot;i&amp;quot;bestComponentIndex&amp;quot;i&amp;quot;bestMapiComponentIndex&amp;quot;i&amp;quot;components&amp;quot;^^{?}&amp;quot;mapiNodeAddedIndex&amp;quot;s&amp;quot;mapiNodeRemovedIndex&amp;quot;s&amp;quot;updateCount&amp;quot;i&amp;quot;structureIsInconsistent&amp;quot;B}&lt;br /&gt;
{?=&amp;quot;nodes&amp;quot;[25{?=&amp;quot;imageData&amp;quot;@&amp;quot;NSData&amp;quot;&amp;quot;width&amp;quot;I&amp;quot;height&amp;quot;I}]}&lt;br /&gt;
BiometricKitXpcProtocol&lt;br /&gt;
BiometricKitDelegateXpcProtocol&lt;br /&gt;
BiometricKitXPCClient&lt;br /&gt;
BiometricKitTemplateInfo&lt;br /&gt;
BiometricKitStatistics&lt;br /&gt;
BiometricKit&lt;br /&gt;
BiometricKitDelegate&lt;br /&gt;
BiometricKitIdentity&lt;br /&gt;
NSSecureCoding&lt;br /&gt;
NSCoding&lt;br /&gt;
BiometricKitMatchInfo&lt;br /&gt;
BiometricKitEnrollProgressInfo&lt;br /&gt;
BiometricKitEnrollProgressCoordinates&lt;br /&gt;
BiometricKitEnrollProgressMergedComponent&lt;br /&gt;
BiometricKitDebugLog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Image3maker_(Internal_Tool)&amp;diff=34424</id>
		<title>Image3maker (Internal Tool)</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Image3maker_(Internal_Tool)&amp;diff=34424"/>
		<updated>2013-08-25T22:17:24Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: clarify&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
 | name                   = Image3maker&lt;br /&gt;
 | title                  = &lt;br /&gt;
 | collapsible            = &lt;br /&gt;
 | author                 = Apple Inc.&lt;br /&gt;
 | developer              = Apple Inc.&lt;br /&gt;
 | released               = &lt;br /&gt;
 | discontinued           = &lt;br /&gt;
 | latest release date    = &lt;br /&gt;
 | latest preview version = &lt;br /&gt;
 | latest preview date    = &lt;br /&gt;
 | programming language   = &lt;br /&gt;
 | operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
 | platform               = &lt;br /&gt;
 | size                   = 77,760 bytes [APP] &lt;br /&gt;
 | language               = [[wikipedia:English language|English]]&lt;br /&gt;
 | status                 = &lt;br /&gt;
 | genre                  = ?&lt;br /&gt;
 | license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
 | website                = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Image3maker is an Apple internal tool used to create [[img3]] firmware files. It's implemented in mostly C with its symbols stripped. There is an open source version by the same name, [[Image3maker]].&lt;br /&gt;
&lt;br /&gt;
From the disassembly, it appears that the Key and IV are generated via /dev/random. &lt;br /&gt;
The GID key is loaded in from a plist at /usr/local/standalone/firmware/platform_keys.plist in order to encrypt the KEY/IV fields within the [[KBAG]] (referred to as &amp;quot;Keybag&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
The usage information from running the binary.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: image3maker [options]&lt;br /&gt;
&lt;br /&gt;
image3maker: Modes:&lt;br /&gt;
image3maker:     --create                             Create a new image3 file&lt;br /&gt;
image3maker:     --update                             Update an existing image3 file&lt;br /&gt;
image3maker:     --hashForSigning                     Generate and print the SHA-1 hash of the signable area&lt;br /&gt;
image3maker:     --signWithData                       Sign with supplied data&lt;br /&gt;
image3maker:     --finalizeWithoutSignature           Finalize image3 file for use with authorized installation&lt;br /&gt;
image3maker:     --printEpoch                         Print the numeric value of the epoch specified by --epoch&lt;br /&gt;
image3maker:     --print                              Print the value of the tag specified by --tag&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: General options:&lt;br /&gt;
image3maker:     --unsign                             Removes signature information, allowing operations on images&lt;br /&gt;
image3maker:                                          that have previously been signed.&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --create and --update:&lt;br /&gt;
image3maker:     --imagefile &amp;lt;file&amp;gt;                   Image3 format file&lt;br /&gt;
image3maker:                                            In --create mode this file is created or truncated&lt;br /&gt;
image3maker:     --type &amp;lt;type&amp;gt;                        Hex or 4-byte ASCII type tag&lt;br /&gt;
image3maker:                                            This is required for --create mode, not permitted in --update mode&lt;br /&gt;
image3maker:     --version &amp;lt;version&amp;gt;                  Set version string&lt;br /&gt;
image3maker:     --epoch &amp;lt;security epoch&amp;gt;             Explicit epoch or chip name to pick system default&lt;br /&gt;
image3maker:                                            default for 's5l8747x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8920x' is 4&lt;br /&gt;
image3maker:                                            default for 's5l8922x' is 2&lt;br /&gt;
image3maker:                                            default for 's5l8930x' is 2&lt;br /&gt;
image3maker:                                            default for 's5l8940x' is 17&lt;br /&gt;
image3maker:                                            default for 's5l8942x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8945x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8947x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8950x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8955x' is 16&lt;br /&gt;
image3maker:     --hardwareEpoch &amp;lt;hardware epoch&amp;gt;     Set the hardware epoch&lt;br /&gt;
image3maker:                                          Should only be used for Image3 objects embedded in certs.&lt;br /&gt;
image3maker:     --domain {manufacturer|darwin|rtxc}&lt;br /&gt;
image3maker:     --data &amp;lt;data file&amp;gt;                   Add payload data from &amp;lt;data file&amp;gt;&lt;br /&gt;
image3maker:     --personalize                        Personalize the image for local storage&lt;br /&gt;
image3maker:     --production                         Marks the image as a production image&lt;br /&gt;
image3maker:     --development                        Marks the image as a development image&lt;br /&gt;
image3maker:     --override &amp;lt;override&amp;gt;                Set the override value.&lt;br /&gt;
image3maker:                                          Should only be used for Image3 objects embedded in certs.&lt;br /&gt;
image3maker:     --chipType &amp;lt;chip ID&amp;gt;&lt;br /&gt;
image3maker:     --boardID &amp;lt;board ID&amp;gt;&lt;br /&gt;
image3maker:     --uniqueID &amp;lt;unique chip ID&amp;gt;&lt;br /&gt;
image3maker:     --padWithRandomBytes                 Adds random pad data&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --hashForSigning:&lt;br /&gt;
image3maker:     --partialHashReservationSize &amp;lt;size&amp;gt;  Requests a partial (unfinalized) hash rather than a normal hash.&lt;br /&gt;
image3maker:                                            The partial hash is computed assuming that an additional size bytes&lt;br /&gt;
image3maker:                                            will be added to the final signed portion of the image.&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --signWithData:&lt;br /&gt;
image3maker:     --expectHash &amp;lt;hash value&amp;gt;            Require that the image hash to &amp;lt;hash value&amp;gt;&lt;br /&gt;
image3maker:     --signWithSignature &amp;lt;signaturefile&amp;gt;  Sign the image using the supplied signature file&lt;br /&gt;
image3maker:     --signWithCertChain &amp;lt;chainfile&amp;gt;      Place the supplied cert chain file into the signed image&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --finalizeWithoutSignature:&lt;br /&gt;
image3maker:     --expectHash &amp;lt;hash value&amp;gt;            Require that the image hash to &amp;lt;hash value&amp;gt;&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --print:&lt;br /&gt;
image3maker:     --tag &amp;lt;tag name&amp;gt;                     Tag to be printed, either a 4 character string or a hexadecimal&lt;br /&gt;
image3maker:                                            number prefixed with 0x&lt;br /&gt;
image3maker:     --skip &amp;lt;n&amp;gt;                           Requests the nth occurrence of the specified tag. Defaults to 0.&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Image3maker_(Internal_Tool)&amp;diff=34421</id>
		<title>Image3maker (Internal Tool)</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Image3maker_(Internal_Tool)&amp;diff=34421"/>
		<updated>2013-08-25T18:30:41Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
 | name                   = Image3maker&lt;br /&gt;
 | title                  = &lt;br /&gt;
 | collapsible            = &lt;br /&gt;
 | author                 = Apple Inc.&lt;br /&gt;
 | developer              = Apple Inc.&lt;br /&gt;
 | released               = &lt;br /&gt;
 | discontinued           = &lt;br /&gt;
 | latest release date    = &lt;br /&gt;
 | latest preview version = &lt;br /&gt;
 | latest preview date    = &lt;br /&gt;
 | programming language   = &lt;br /&gt;
 | operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
 | platform               = &lt;br /&gt;
 | size                   = 77,760 bytes [APP] &lt;br /&gt;
 | language               = [[wikipedia:English language|English]]&lt;br /&gt;
 | status                 = &lt;br /&gt;
 | genre                  = ?&lt;br /&gt;
 | license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
 | website                = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Image3maker is an Apple internal tool used to create [[img3]] firmware files. It's implemented in mostly C with its symbols stripped. There is an open source version by the same name, [[Image3maker]].&lt;br /&gt;
&lt;br /&gt;
From the disassembly, it appears that the Key and IV are generated via /dev/random. &lt;br /&gt;
The GID key is loaded in from a plist at /usr/local/standalone/firmware/platform_keys.plist in order to encrypt the [[KBAG]] (referred to as &amp;quot;Keybag&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
The usage information from running the binary.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: image3maker [options]&lt;br /&gt;
&lt;br /&gt;
image3maker: Modes:&lt;br /&gt;
image3maker:     --create                             Create a new image3 file&lt;br /&gt;
image3maker:     --update                             Update an existing image3 file&lt;br /&gt;
image3maker:     --hashForSigning                     Generate and print the SHA-1 hash of the signable area&lt;br /&gt;
image3maker:     --signWithData                       Sign with supplied data&lt;br /&gt;
image3maker:     --finalizeWithoutSignature           Finalize image3 file for use with authorized installation&lt;br /&gt;
image3maker:     --printEpoch                         Print the numeric value of the epoch specified by --epoch&lt;br /&gt;
image3maker:     --print                              Print the value of the tag specified by --tag&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: General options:&lt;br /&gt;
image3maker:     --unsign                             Removes signature information, allowing operations on images&lt;br /&gt;
image3maker:                                          that have previously been signed.&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --create and --update:&lt;br /&gt;
image3maker:     --imagefile &amp;lt;file&amp;gt;                   Image3 format file&lt;br /&gt;
image3maker:                                            In --create mode this file is created or truncated&lt;br /&gt;
image3maker:     --type &amp;lt;type&amp;gt;                        Hex or 4-byte ASCII type tag&lt;br /&gt;
image3maker:                                            This is required for --create mode, not permitted in --update mode&lt;br /&gt;
image3maker:     --version &amp;lt;version&amp;gt;                  Set version string&lt;br /&gt;
image3maker:     --epoch &amp;lt;security epoch&amp;gt;             Explicit epoch or chip name to pick system default&lt;br /&gt;
image3maker:                                            default for 's5l8747x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8920x' is 4&lt;br /&gt;
image3maker:                                            default for 's5l8922x' is 2&lt;br /&gt;
image3maker:                                            default for 's5l8930x' is 2&lt;br /&gt;
image3maker:                                            default for 's5l8940x' is 17&lt;br /&gt;
image3maker:                                            default for 's5l8942x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8945x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8947x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8950x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8955x' is 16&lt;br /&gt;
image3maker:     --hardwareEpoch &amp;lt;hardware epoch&amp;gt;     Set the hardware epoch&lt;br /&gt;
image3maker:                                          Should only be used for Image3 objects embedded in certs.&lt;br /&gt;
image3maker:     --domain {manufacturer|darwin|rtxc}&lt;br /&gt;
image3maker:     --data &amp;lt;data file&amp;gt;                   Add payload data from &amp;lt;data file&amp;gt;&lt;br /&gt;
image3maker:     --personalize                        Personalize the image for local storage&lt;br /&gt;
image3maker:     --production                         Marks the image as a production image&lt;br /&gt;
image3maker:     --development                        Marks the image as a development image&lt;br /&gt;
image3maker:     --override &amp;lt;override&amp;gt;                Set the override value.&lt;br /&gt;
image3maker:                                          Should only be used for Image3 objects embedded in certs.&lt;br /&gt;
image3maker:     --chipType &amp;lt;chip ID&amp;gt;&lt;br /&gt;
image3maker:     --boardID &amp;lt;board ID&amp;gt;&lt;br /&gt;
image3maker:     --uniqueID &amp;lt;unique chip ID&amp;gt;&lt;br /&gt;
image3maker:     --padWithRandomBytes                 Adds random pad data&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --hashForSigning:&lt;br /&gt;
image3maker:     --partialHashReservationSize &amp;lt;size&amp;gt;  Requests a partial (unfinalized) hash rather than a normal hash.&lt;br /&gt;
image3maker:                                            The partial hash is computed assuming that an additional size bytes&lt;br /&gt;
image3maker:                                            will be added to the final signed portion of the image.&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --signWithData:&lt;br /&gt;
image3maker:     --expectHash &amp;lt;hash value&amp;gt;            Require that the image hash to &amp;lt;hash value&amp;gt;&lt;br /&gt;
image3maker:     --signWithSignature &amp;lt;signaturefile&amp;gt;  Sign the image using the supplied signature file&lt;br /&gt;
image3maker:     --signWithCertChain &amp;lt;chainfile&amp;gt;      Place the supplied cert chain file into the signed image&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --finalizeWithoutSignature:&lt;br /&gt;
image3maker:     --expectHash &amp;lt;hash value&amp;gt;            Require that the image hash to &amp;lt;hash value&amp;gt;&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --print:&lt;br /&gt;
image3maker:     --tag &amp;lt;tag name&amp;gt;                     Tag to be printed, either a 4 character string or a hexadecimal&lt;br /&gt;
image3maker:                                            number prefixed with 0x&lt;br /&gt;
image3maker:     --skip &amp;lt;n&amp;gt;                           Requests the nth occurrence of the specified tag. Defaults to 0.&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Image3maker_(Internal_Tool)&amp;diff=34420</id>
		<title>Image3maker (Internal Tool)</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Image3maker_(Internal_Tool)&amp;diff=34420"/>
		<updated>2013-08-25T18:25:33Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Create new page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
 | name                   = Image3maker&lt;br /&gt;
 | title                  = &lt;br /&gt;
 | collapsible            = &lt;br /&gt;
 | author                 = Apple Inc.&lt;br /&gt;
 | developer              = Apple Inc.&lt;br /&gt;
 | released               = &lt;br /&gt;
 | discontinued           = &lt;br /&gt;
 | latest release date    = &lt;br /&gt;
 | latest preview version = &lt;br /&gt;
 | latest preview date    = &lt;br /&gt;
 | programming language   = &lt;br /&gt;
 | operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
 | platform               = &lt;br /&gt;
 | size                   = 77,760 bytes [APP] &lt;br /&gt;
 | language               = [[wikipedia:English language|English]]&lt;br /&gt;
 | status                 = &lt;br /&gt;
 | genre                  = ?&lt;br /&gt;
 | license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
 | website                = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Image3maker is an Apple internal tool used to create [[img3]] firmware files. It's implemented in mostly C with its symbols stripped. There is an open source version by the same name, [[Image3maker]].&lt;br /&gt;
&lt;br /&gt;
From the disassembly, it appears that the Key and IV are generated via /dev/random. &lt;br /&gt;
The GID key is loaded in from a plist at /usr/local/standalone/firmware/platform_keys.plist in order to encrypt the KGAG (referred to as &amp;quot;Keybag&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
The usage information from running the binary.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: image3maker [options]&lt;br /&gt;
&lt;br /&gt;
image3maker: Modes:&lt;br /&gt;
image3maker:     --create                             Create a new image3 file&lt;br /&gt;
image3maker:     --update                             Update an existing image3 file&lt;br /&gt;
image3maker:     --hashForSigning                     Generate and print the SHA-1 hash of the signable area&lt;br /&gt;
image3maker:     --signWithData                       Sign with supplied data&lt;br /&gt;
image3maker:     --finalizeWithoutSignature           Finalize image3 file for use with authorized installation&lt;br /&gt;
image3maker:     --printEpoch                         Print the numeric value of the epoch specified by --epoch&lt;br /&gt;
image3maker:     --print                              Print the value of the tag specified by --tag&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: General options:&lt;br /&gt;
image3maker:     --unsign                             Removes signature information, allowing operations on images&lt;br /&gt;
image3maker:                                          that have previously been signed.&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --create and --update:&lt;br /&gt;
image3maker:     --imagefile &amp;lt;file&amp;gt;                   Image3 format file&lt;br /&gt;
image3maker:                                            In --create mode this file is created or truncated&lt;br /&gt;
image3maker:     --type &amp;lt;type&amp;gt;                        Hex or 4-byte ASCII type tag&lt;br /&gt;
image3maker:                                            This is required for --create mode, not permitted in --update mode&lt;br /&gt;
image3maker:     --version &amp;lt;version&amp;gt;                  Set version string&lt;br /&gt;
image3maker:     --epoch &amp;lt;security epoch&amp;gt;             Explicit epoch or chip name to pick system default&lt;br /&gt;
image3maker:                                            default for 's5l8747x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8920x' is 4&lt;br /&gt;
image3maker:                                            default for 's5l8922x' is 2&lt;br /&gt;
image3maker:                                            default for 's5l8930x' is 2&lt;br /&gt;
image3maker:                                            default for 's5l8940x' is 17&lt;br /&gt;
image3maker:                                            default for 's5l8942x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8945x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8947x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8950x' is 16&lt;br /&gt;
image3maker:                                            default for 's5l8955x' is 16&lt;br /&gt;
image3maker:     --hardwareEpoch &amp;lt;hardware epoch&amp;gt;     Set the hardware epoch&lt;br /&gt;
image3maker:                                          Should only be used for Image3 objects embedded in certs.&lt;br /&gt;
image3maker:     --domain {manufacturer|darwin|rtxc}&lt;br /&gt;
image3maker:     --data &amp;lt;data file&amp;gt;                   Add payload data from &amp;lt;data file&amp;gt;&lt;br /&gt;
image3maker:     --personalize                        Personalize the image for local storage&lt;br /&gt;
image3maker:     --production                         Marks the image as a production image&lt;br /&gt;
image3maker:     --development                        Marks the image as a development image&lt;br /&gt;
image3maker:     --override &amp;lt;override&amp;gt;                Set the override value.&lt;br /&gt;
image3maker:                                          Should only be used for Image3 objects embedded in certs.&lt;br /&gt;
image3maker:     --chipType &amp;lt;chip ID&amp;gt;&lt;br /&gt;
image3maker:     --boardID &amp;lt;board ID&amp;gt;&lt;br /&gt;
image3maker:     --uniqueID &amp;lt;unique chip ID&amp;gt;&lt;br /&gt;
image3maker:     --padWithRandomBytes                 Adds random pad data&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --hashForSigning:&lt;br /&gt;
image3maker:     --partialHashReservationSize &amp;lt;size&amp;gt;  Requests a partial (unfinalized) hash rather than a normal hash.&lt;br /&gt;
image3maker:                                            The partial hash is computed assuming that an additional size bytes&lt;br /&gt;
image3maker:                                            will be added to the final signed portion of the image.&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --signWithData:&lt;br /&gt;
image3maker:     --expectHash &amp;lt;hash value&amp;gt;            Require that the image hash to &amp;lt;hash value&amp;gt;&lt;br /&gt;
image3maker:     --signWithSignature &amp;lt;signaturefile&amp;gt;  Sign the image using the supplied signature file&lt;br /&gt;
image3maker:     --signWithCertChain &amp;lt;chainfile&amp;gt;      Place the supplied cert chain file into the signed image&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --finalizeWithoutSignature:&lt;br /&gt;
image3maker:     --expectHash &amp;lt;hash value&amp;gt;            Require that the image hash to &amp;lt;hash value&amp;gt;&lt;br /&gt;
image3maker: &lt;br /&gt;
image3maker: Arguments for --print:&lt;br /&gt;
image3maker:     --tag &amp;lt;tag name&amp;gt;                     Tag to be printed, either a 4 character string or a hexadecimal&lt;br /&gt;
image3maker:                                            number prefixed with 0x&lt;br /&gt;
image3maker:     --skip &amp;lt;n&amp;gt;                           Requests the nth occurrence of the specified tag. Defaults to 0.&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=PurpleRestore&amp;diff=32960</id>
		<title>PurpleRestore</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=PurpleRestore&amp;diff=32960"/>
		<updated>2013-07-20T16:48:19Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                   = PurpleRestore&lt;br /&gt;
| title                  = &lt;br /&gt;
| logo                   = [[File:PurpleRestore logo.png]]&lt;br /&gt;
| screenshot             = [[File:PurpleRestore11A437.png|300px]]&lt;br /&gt;
| caption                = PurpleRestore 106.00 (11A437)&lt;br /&gt;
| collapsible            = &lt;br /&gt;
| author                 = Apple Inc.&lt;br /&gt;
| developer              = Apple Inc.&lt;br /&gt;
| released               = &lt;br /&gt;
| discontinued           = &lt;br /&gt;
| latest release version = 106.00&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;(latest ''known'' version)&amp;lt;/small&amp;gt;&lt;br /&gt;
| latest release date    = &lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &lt;br /&gt;
| programming language   = &lt;br /&gt;
| operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
| platform               = &lt;br /&gt;
| size                   = 4,096,348 bytes [APP] &amp;lt;small&amp;gt;(106.00)&amp;lt;/small&amp;gt; &lt;br /&gt;
| language               = [[wikipedia:English language|English]]&lt;br /&gt;
| status                 = &lt;br /&gt;
| genre                  = ?&lt;br /&gt;
| license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
| website                = &lt;br /&gt;
}}&lt;br /&gt;
{{float toc|left}}&lt;br /&gt;
'''PurpleRestore''' is a tool made by Apple and is used for flashing [[iDevices]]. Barely anything is known about it except that it provides far more customization than [[iTunes]]. PurpleRestore-106.00 (build 11A437) is the latest known version which is capable of detecting devices running the latest iOS 7 beta. Little is currently known about which versions it &amp;quot;supports&amp;quot; for restoring as such.&lt;br /&gt;
&lt;br /&gt;
Like [[iTunes]], [[PurpleRestore]] communicates with iDevices using a [[usbmux]] connection.&lt;br /&gt;
&lt;br /&gt;
== Restore Bundles==&lt;br /&gt;
Unlike iTunes, PurpleRestore doesn't use [[IPSW File Format|IPSW]] files to restore devices. It uses &amp;quot;Restore Bundles&amp;quot; which can be obtained from a server specific to a version of iOS, such as &amp;lt;code&amp;gt;afp://fieldgoal.apple.com/RestoreImages/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;afp://endzone.apple.com/OldRestoreImages/&amp;lt;/code&amp;gt; (among many others) . Unfortunately, the &amp;lt;code&amp;gt;afp&amp;lt;/code&amp;gt; protocol can only be accessed through Apple's internal VPN.&lt;br /&gt;
&lt;br /&gt;
However, you can create your own bundles by extracting an IPSW into a folder. The downside is that you don't get access to any internal/debugging stuff since it is a public firmware.&lt;br /&gt;
&lt;br /&gt;
== Restore Components ==&lt;br /&gt;
Restore Components has several options:&lt;br /&gt;
* '''Restore Bundle''': Specify the bundle to use in restoring&lt;br /&gt;
* '''Firmware Directory''': Specify the folder where the [[LLB]], [[iBoot]], etc. [[IMG3 File Format|IMG3]] files are located.&lt;br /&gt;
* '''Ramdisk Image''': Specify a [[ramdisk]] to be used (i.e. [[Restore Ramdisk|restore]] or [[Update Ramdisk|update]] ramdisk)&lt;br /&gt;
* '''DFU''': Specify what tools to upload based on a selection of &amp;quot;Debug&amp;quot;, &amp;quot;Development&amp;quot;, or &amp;quot;Release&amp;quot;. A specific file can also be selected.&lt;br /&gt;
&lt;br /&gt;
== Restore Operations ==&lt;br /&gt;
Restore Operations contains the most options to configure. These may also be the most useful ones.&lt;br /&gt;
&lt;br /&gt;
* '''Hardware Readiness'''&lt;br /&gt;
** '''Minimum Battery Charge (mV)''': This value controls the minimum charge level at which the restore will be allowed to continue. Below this threshold, we either wait to charge (if we're charging) or fail (if we're not charging).  If this option is not specified, a default value is used (currently 3.8V). Setting this option to 0 bypasses all battery level checks.&lt;br /&gt;
** '''Wait for Minimum Charge''': If the current voltage is below the minimum level, then the default behavior is to let the device charge and then continue. This option overrides that behavior when false.&lt;br /&gt;
** '''Wait for Storage Device''': Controls whether the restore waits for the storage device /dev/disk0 to be available before the restore is initiated.&lt;br /&gt;
** '''Allow Untethered Restore''': Permit the restore to run untethered (not connected to a host).  The result of specifying this option when the restore needs data from the host (for instance, when flashing NOR) is undefined (but probably bad). If this option is specified and the device remains tethered, things should proceed as usual.&lt;br /&gt;
* '''Storage Media'''&lt;br /&gt;
** '''Use LwVM''': Controls whether the device is formatted for LwVM (if supported).&lt;br /&gt;
** '''Repartition''': Controls whether a new partition map is created on the device.&lt;br /&gt;
** '''System Partition Size (MiB)''': Specifies the size (in mebibytes) that is desired for the system partition. Because the partition size can only be changed when creating a new partition map, this option is only relevant when used in conjunction with repartition. A size of 0 indicates that the restore library should choose a suitable size for you, based on the specific restore bundle and image being used if possible.&lt;br /&gt;
** '''Content Protection Type''': Controls the type of data protection used on the device.&lt;br /&gt;
** '''Low-Level Erase''': Do a low level erase (wipe with null or random data) of the entire storage device prior to restoring.&lt;br /&gt;
* '''Restore System Partition'''&lt;br /&gt;
** '''System Image''': Determines which type of system image to restore, or which file to use for the system image.&lt;br /&gt;
** '''Kernel Cache Type''': This option controls the kernel cache that gets installed on the device.&lt;br /&gt;
* '''Baseband'''&lt;br /&gt;
** '''Update Baseband''': Controls whether the [[baseband]] and baseband bootloader are updated as part of the restore.&lt;br /&gt;
** '''Force Update''': The baseband update is skipped when the existing firmware matches the available firmware. In some cases, it is desirable to force the firmware update to occur, regardless of what is currently on there. This option, when set to true, forces the update to be attempted.&lt;br /&gt;
[[File:IPhoneDuringPurpleRestore.jpeg |250px|thumb|right|iPhone 5 undergoing a PurpleRestore]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Restore OS ==&lt;br /&gt;
Restore OS options allow you to specify the following:&lt;br /&gt;
* '''Restore Boot-Args''':  Boot-Args used when the Restore OS is loaded. By default those arguments are used: &amp;quot;debug=0x14e serial=3 rd=md0 nand-enable-reformat=1 -progress&amp;quot;&lt;br /&gt;
* '''Firmware Type:''' Specify the firmware which should be flashed when restoring. This can either be &amp;quot;Debug&amp;quot;, &amp;quot;Factory FA&amp;quot;, &amp;quot;Factory SA&amp;quot;, &amp;quot;Firmware Development&amp;quot; or &amp;quot;Production&amp;quot;.&lt;br /&gt;
* '''Boot Image Type:''' Can be &amp;quot;Internal&amp;quot;, &amp;quot;User or Internal&amp;quot;, &amp;quot;User&amp;quot; or &amp;quot;Update&amp;quot;.&lt;br /&gt;
* '''Boot Kernel Cache:''' Specify whether the &amp;quot;Production&amp;quot; or &amp;quot;Development&amp;quot; kernel cache should be used.&lt;br /&gt;
&lt;br /&gt;
==Personalization Settings==&lt;br /&gt;
As with iTunes, PurpleRestore can personalize builds for iOS devices (since recent Bootroms expect a valid APTicket). The tooltip for the &amp;quot;Personalized Restore&amp;quot; checkbox reads &amp;quot;Your ticket to the Orwellian cloud.&amp;quot; This may suggest that Apple developed TSS in part to control access to internal build variants (i.e. prevent leaks of &amp;quot;interesting&amp;quot; builds of iOS), in addition to preventing production users from downgrading. &lt;br /&gt;
* '''Variants''': &amp;quot;A predefined combination of restore pieces.&amp;quot; The options are: &amp;quot;Customer Install&amp;quot;, &amp;quot;Internal Debug&amp;quot;, &amp;quot;Internal Development&amp;quot;, &amp;quot;Internal Install&amp;quot;, &amp;quot;Internal Qualification&amp;quot;, and &amp;quot;Vendor install.&amp;quot; &lt;br /&gt;
* '''AppleConnect''': Used to authenticate all restores for personalization. Interestingly, AppleConnect will allow members of the iOS Developer Program (including non-employees) to install public builds of iOS (latest current and beta). It's likely AppleConnect is also used to authenticate signing of internal builds using the public TSS server, should the device be on the whitelist. &lt;br /&gt;
&lt;br /&gt;
== Restore Settings ==&lt;br /&gt;
By default, PurpleRestore comes with two pre-made restore settings. &amp;quot;Erase Install&amp;quot; and &amp;quot;Update Install&amp;quot;. Those restore settings are [[PLIST File Format|plist]] files that define the options PurpleRestore will use when restoring a device.&lt;br /&gt;
* '''Erase Install''': Repartition the media and erase all data before restoring. Includes all internal development tools and updates flash and the baseband by default.&lt;br /&gt;
* '''Update Install''': Includes all internal development tools and updates flash and the baseband by default.&lt;br /&gt;
&lt;br /&gt;
[[File:PurpleRestoreOptions.png |250px|thumb|right|PurpleRestore configuration screen]]&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering ==&lt;br /&gt;
This specific code is from [[iTunes]] for OS X. It detects if PurpleRestore is running so that it does not interfere with any operations that PurpleRestore is performing.&lt;br /&gt;
&lt;br /&gt;
 Off  Virt Adr Instruction    AT&amp;amp;T Syntax               Intel Syntax          Comment&lt;br /&gt;
 &lt;br /&gt;
 +354 003d7808 c70424bc01d700 movl  $0x00d701bc, (%esp) mov [esp], 0x00d701bc ; CFSTR(&amp;quot;com.apple.PurpleRestore&amp;quot;)&lt;br /&gt;
 +361 003d780f e80c65c3ff     calll 0x10000dd20         call 0x10000dd20      ; is specified bundle running&lt;br /&gt;
 +366 003d7814 84c0           testb %al,%al             test al, al&lt;br /&gt;
 +368 003d7816 7409           jz    0x003d7821          jz short 0x003d7821   ; if so, PurpleRestore is running&lt;br /&gt;
 +370 003d7818 c704246c8ba400 movl  $0x00a48b6c, (%esp) mov [esp], 0x00a48b6c ; so ignore device,&lt;br /&gt;
 +377 003d781f ebd3           jmp   0x003d77f4          jmp short 0x003d77f4  ; and jump back above loop for next device&lt;br /&gt;
 +379 003d7821 8d5de0         leal  0xe0(%ebp), %ebx    lea ebx, [ebp + 0xe0]&lt;br /&gt;
 +382 003d7824 895c2404       movl  %ebx, 0x04(%esp)    mov [esp + 4], ebx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[iTunes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=File:IPhoneDuringPurpleRestore.jpeg&amp;diff=32959</id>
		<title>File:IPhoneDuringPurpleRestore.jpeg</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=File:IPhoneDuringPurpleRestore.jpeg&amp;diff=32959"/>
		<updated>2013-07-20T16:46:31Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: This is an iPhone 5 being PurpleRestored to production 6.1.4. The first stage of PurpleRestore sets bgcolor through iBoot to purple.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an iPhone 5 being PurpleRestored to production 6.1.4. The first stage of PurpleRestore sets bgcolor through iBoot to purple.&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=DCSD&amp;diff=32957</id>
		<title>DCSD</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=DCSD&amp;diff=32957"/>
		<updated>2013-07-20T15:46:49Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Explaining what DCSD is&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DCSD in an Apple internal Mac application. When properly configured, the application serves as a diagnostic platform for Foxconn workers.  The tool allows multiple devices to connect at once. The tool can boot devices into Inferno with a custom ramdisk that is personalized to the device. Inferno runs stress tests on the device and the results are stored in the DIAGS block. DCSD reports results to a centralized server using a library called libinstantpudding.dylib. All production iPhones are to be run through DCSD for quality assurance. The DCSD app is also capable of installing demo bundles (via mobile backup restoration) for use in retail stores. &lt;br /&gt;
&lt;br /&gt;
Note: Leaked versions don't contain libinstantpudding.dylib nor the necessary signed plist files, so the application forces the user quit.&lt;br /&gt;
&lt;br /&gt;
[[File:DCSD.png| right|400px|DCSD]]&lt;br /&gt;
{{stub|software}}&lt;br /&gt;
[[Category: Apple Internal Apps]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=File:DCSD.png&amp;diff=32956</id>
		<title>File:DCSD.png</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=File:DCSD.png&amp;diff=32956"/>
		<updated>2013-07-20T15:42:48Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Screenshot of DCSD tool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot of DCSD tool&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=PurpleSNIFF&amp;diff=32952</id>
		<title>PurpleSNIFF</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=PurpleSNIFF&amp;diff=32952"/>
		<updated>2013-07-20T14:59:10Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Auth List */ clarity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                   = PurpleSNIFF&lt;br /&gt;
| title                  = &lt;br /&gt;
| logo                   = [[File:PurpleSNIFF logo.png | 300px]]&lt;br /&gt;
| caption                = PurpleSNIFF 2.0 (76)&lt;br /&gt;
| collapsible            = &lt;br /&gt;
| author                 = Apple Inc.&lt;br /&gt;
| developer              = Apple Inc.&lt;br /&gt;
| released               = &lt;br /&gt;
| discontinued           = &lt;br /&gt;
| latest release version = &lt;br /&gt;
| latest release date    = &lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &lt;br /&gt;
| programming language   = &lt;br /&gt;
| operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
| platform               = &lt;br /&gt;
| size                   = 3,969,269 bytes [APP] &amp;lt;small&amp;gt;(76)&amp;lt;/small&amp;gt; &lt;br /&gt;
| language               = [[wikipedia:English language|English]]&lt;br /&gt;
| status                 = &lt;br /&gt;
| genre                  = ?&lt;br /&gt;
| license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
| website                = &lt;br /&gt;
}}&lt;br /&gt;
{{float toc|left}}&lt;br /&gt;
'''PurpleSNIFF''' is a tool made by Apple to read identification and diagnostic information from the device. The tool is used by Apple engineers as well as factory workers at Foxconn/Pegasus. It's included in the RestoreTools.pkg.&lt;br /&gt;
&lt;br /&gt;
Like [[iTunes]], [[PurpleSNIFF]] communicates with iDevices using a [[usbmux]] connection.&lt;br /&gt;
&lt;br /&gt;
==Device Information==&lt;br /&gt;
PurpleSNIFF displays the value of all keys accessible by liblockdown and mobilegestaltd. &lt;br /&gt;
Data is broken into categories:&lt;br /&gt;
* '''SNIFF''': Report date and host machine configuration&lt;br /&gt;
* '''Battery''': Battery charge state &lt;br /&gt;
* '''Debug''': Lockdown and CLTM (thermal) extended logging. &lt;br /&gt;
* '''Developer''': &amp;quot;Development&amp;quot; if has installed XCode developer diskimage.&lt;br /&gt;
* '''Device Mode''': &amp;quot;OS Mode&amp;quot;, &amp;quot;Recovery&amp;quot;, &amp;quot;DFU&amp;quot;, and possibly other internal modes.&lt;br /&gt;
* '''Diagnostic Data''': Includes device test data from different factory stations, including their timestamps. There are over 300 testing stations devices can be tested on. Each device will usually pass through about 6 testing stations before shipping. The diagnostic platform is called iPCB.&lt;br /&gt;
* '''Disk Usage''': Stats for both System and Data partitions&lt;br /&gt;
* '''General''': Activation info, baseband identifiers and state, current carrier bundle, device certificate, public key, name, device color, ECID, MAC addresses, UDID, Serial Number, Hardware Model, [[Fusing Status]], platform, architecture, IMEI/IMSI/ICCID, NVRAM data, OS Build/Version, passcode lock-state, proximity sensor calibration, region code, [[Security Fusing]] (production or development), SIM card status, presence of Springboard/lockdown, and many more.&lt;br /&gt;
* '''Internal''': isInternal and isCarrierBuild, isUIBuild, raw hex dump of SysCfg and DIAGS blocks. &lt;br /&gt;
* '''Localization''': Language&lt;br /&gt;
* '''Mobile iTunes''': Fairplay related parameters (e.g. certificate)&lt;br /&gt;
* '''Restore From Backup''': If it has been restored from a backup&lt;br /&gt;
* '''Setup Assistant''': YES/NO listing of which screens have been presented.&lt;br /&gt;
* '''Software Behavior''': A bitmask that is decoded into the following boolean properties: China Brick, Google Mail, No VOIP, No Wi Fi, NTSC, Shutter Click, Valid, and Volume Limit.&lt;br /&gt;
* '''Sync''': Device support for clearing data and encrypted backups, as well as mail accounts connected.&lt;br /&gt;
* '''Sync Backup''': iCloud sync information.&lt;br /&gt;
* '''SysCfg''': Device hardware information such as sensor calibration data, device color, NAND size, and serial numbers. This block is read-write for AppleInternal tool that must run on the device, so that Apple can refurbish devices and give them a new serial number. &lt;br /&gt;
* '''Wireless''': Bonjour service name, Wifi support, Wifi-sync support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[File:PurpleSniffSS.png|350px|thumb|right| General Section of PurpleSNIFF with sensitive identifiers redacted.]]&lt;br /&gt;
&lt;br /&gt;
==White List==&lt;br /&gt;
&amp;quot;Request White List Authorization&amp;quot; composes a new email to whitelist-request@group.apple.com. This address is only reachable from within Apple VPN, and does not accept outside senders. This feature allows a factory worker or Apple engineer to request that the device be SIM-unlocked for use on certain carriers. &lt;br /&gt;
&lt;br /&gt;
 TO: whitelist-request@group.apple.com&lt;br /&gt;
 SUBJECT: White-list Request&lt;br /&gt;
 &lt;br /&gt;
 Please whitelist the following device&lt;br /&gt;
 &lt;br /&gt;
 device: n41ap-prodfuse&lt;br /&gt;
 imei: 00...[redacted]...0&lt;br /&gt;
 &lt;br /&gt;
 carriers:&lt;br /&gt;
 justification:&lt;br /&gt;
&lt;br /&gt;
==Auth List==&lt;br /&gt;
&amp;quot;Request Personalized Install Authorization&amp;quot; composes a new email to authlist-request@group.apple.com. As with White List, this email address is only reachable from within Apple VPN. This feature allows a factory worker or Apple engineer to request special firmware personalization for their device. This is useful because Apple could order prototypes of unreleased iPhones but refuse to sign any firmware for them. This way, if the devices are lost/leaked into the wild for some reason, the device is bricked. When prototype phones arrive safely/securely to Cupertino, engineers can have them activated for firmware personalization through this mechanism. It is not known the requests are to permit firmware signing on the public or internal (VPN-only) TSS server. &lt;br /&gt;
&lt;br /&gt;
 TO: authlist-request@group.apple.com&lt;br /&gt;
 SUBJECT: Authorization List Request&lt;br /&gt;
 &lt;br /&gt;
 Please authorize the following device&lt;br /&gt;
 &lt;br /&gt;
 device: n41ap-prodfuse&lt;br /&gt;
 ecid: 0[redacted]0&lt;br /&gt;
 bbsn: 0x0[redacted]0&lt;br /&gt;
 &lt;br /&gt;
 audience:&lt;br /&gt;
 restore tool:&lt;br /&gt;
 justification:&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
The other main tabs of the application reveal the live Syslog and the IORegistry hierarchy. &lt;br /&gt;
Menu options include commands to enable extra logging, reboot devices (with optional prompt), obliterate and reset them, read diagnostic data from GasGauge, WIFI, and NAND, query MobileGestalt directly, enter and exit recovery, and &amp;quot;Lookup Device&amp;quot; in PDCA. It can also pull logs off of the device, as well as content in var/mobile/library . The log archive can be huge because it includes data like the SMS database and all MMS attachments). &lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=PurpleSNIFF&amp;diff=32950</id>
		<title>PurpleSNIFF</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=PurpleSNIFF&amp;diff=32950"/>
		<updated>2013-07-20T14:57:29Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Device Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                   = PurpleSNIFF&lt;br /&gt;
| title                  = &lt;br /&gt;
| logo                   = [[File:PurpleSNIFF logo.png | 300px]]&lt;br /&gt;
| caption                = PurpleSNIFF 2.0 (76)&lt;br /&gt;
| collapsible            = &lt;br /&gt;
| author                 = Apple Inc.&lt;br /&gt;
| developer              = Apple Inc.&lt;br /&gt;
| released               = &lt;br /&gt;
| discontinued           = &lt;br /&gt;
| latest release version = &lt;br /&gt;
| latest release date    = &lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &lt;br /&gt;
| programming language   = &lt;br /&gt;
| operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
| platform               = &lt;br /&gt;
| size                   = 3,969,269 bytes [APP] &amp;lt;small&amp;gt;(76)&amp;lt;/small&amp;gt; &lt;br /&gt;
| language               = [[wikipedia:English language|English]]&lt;br /&gt;
| status                 = &lt;br /&gt;
| genre                  = ?&lt;br /&gt;
| license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
| website                = &lt;br /&gt;
}}&lt;br /&gt;
{{float toc|left}}&lt;br /&gt;
'''PurpleSNIFF''' is a tool made by Apple to read identification and diagnostic information from the device. The tool is used by Apple engineers as well as factory workers at Foxconn/Pegasus. It's included in the RestoreTools.pkg.&lt;br /&gt;
&lt;br /&gt;
Like [[iTunes]], [[PurpleSNIFF]] communicates with iDevices using a [[usbmux]] connection.&lt;br /&gt;
&lt;br /&gt;
==Device Information==&lt;br /&gt;
PurpleSNIFF displays the value of all keys accessible by liblockdown and mobilegestaltd. &lt;br /&gt;
Data is broken into categories:&lt;br /&gt;
* '''SNIFF''': Report date and host machine configuration&lt;br /&gt;
* '''Battery''': Battery charge state &lt;br /&gt;
* '''Debug''': Lockdown and CLTM (thermal) extended logging. &lt;br /&gt;
* '''Developer''': &amp;quot;Development&amp;quot; if has installed XCode developer diskimage.&lt;br /&gt;
* '''Device Mode''': &amp;quot;OS Mode&amp;quot;, &amp;quot;Recovery&amp;quot;, &amp;quot;DFU&amp;quot;, and possibly other internal modes.&lt;br /&gt;
* '''Diagnostic Data''': Includes device test data from different factory stations, including their timestamps. There are over 300 testing stations devices can be tested on. Each device will usually pass through about 6 testing stations before shipping. The diagnostic platform is called iPCB.&lt;br /&gt;
* '''Disk Usage''': Stats for both System and Data partitions&lt;br /&gt;
* '''General''': Activation info, baseband identifiers and state, current carrier bundle, device certificate, public key, name, device color, ECID, MAC addresses, UDID, Serial Number, Hardware Model, [[Fusing Status]], platform, architecture, IMEI/IMSI/ICCID, NVRAM data, OS Build/Version, passcode lock-state, proximity sensor calibration, region code, [[Security Fusing]] (production or development), SIM card status, presence of Springboard/lockdown, and many more.&lt;br /&gt;
* '''Internal''': isInternal and isCarrierBuild, isUIBuild, raw hex dump of SysCfg and DIAGS blocks. &lt;br /&gt;
* '''Localization''': Language&lt;br /&gt;
* '''Mobile iTunes''': Fairplay related parameters (e.g. certificate)&lt;br /&gt;
* '''Restore From Backup''': If it has been restored from a backup&lt;br /&gt;
* '''Setup Assistant''': YES/NO listing of which screens have been presented.&lt;br /&gt;
* '''Software Behavior''': A bitmask that is decoded into the following boolean properties: China Brick, Google Mail, No VOIP, No Wi Fi, NTSC, Shutter Click, Valid, and Volume Limit.&lt;br /&gt;
* '''Sync''': Device support for clearing data and encrypted backups, as well as mail accounts connected.&lt;br /&gt;
* '''Sync Backup''': iCloud sync information.&lt;br /&gt;
* '''SysCfg''': Device hardware information such as sensor calibration data, device color, NAND size, and serial numbers. This block is read-write for AppleInternal tool that must run on the device, so that Apple can refurbish devices and give them a new serial number. &lt;br /&gt;
* '''Wireless''': Bonjour service name, Wifi support, Wifi-sync support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[File:PurpleSniffSS.png|350px|thumb|right| General Section of PurpleSNIFF with sensitive identifiers redacted.]]&lt;br /&gt;
&lt;br /&gt;
==White List==&lt;br /&gt;
&amp;quot;Request White List Authorization&amp;quot; composes a new email to whitelist-request@group.apple.com. This address is only reachable from within Apple VPN, and does not accept outside senders. This feature allows a factory worker or Apple engineer to request that the device be SIM-unlocked for use on certain carriers. &lt;br /&gt;
&lt;br /&gt;
 TO: whitelist-request@group.apple.com&lt;br /&gt;
 SUBJECT: White-list Request&lt;br /&gt;
 &lt;br /&gt;
 Please whitelist the following device&lt;br /&gt;
 &lt;br /&gt;
 device: n41ap-prodfuse&lt;br /&gt;
 imei: 00...[redacted]...0&lt;br /&gt;
 &lt;br /&gt;
 carriers:&lt;br /&gt;
 justification:&lt;br /&gt;
&lt;br /&gt;
==Auth List==&lt;br /&gt;
&amp;quot;Request Personalized Install Authorization&amp;quot; composes a new email to authlist-request@group.apple.com. As with White List, this email address is only reachable from within Apple VPN. This feature allows a factory worker or Apple engineer to request special firmware personalization for their device. This is useful because Apple could order prototypes of unreleased iPhones but refuse to sign any firmware for them. This way, if the devices are lost/leaked into the wild for some reason, the device is bricked. When prototype phones arrive safely/securely to Cupertino, engineers can have them activated for firmware personalization through this mechanism. It is not known if approved requests permit firmware signing on the public or internal (VPN-only) TSS server. &lt;br /&gt;
&lt;br /&gt;
 TO: authlist-request@group.apple.com&lt;br /&gt;
 SUBJECT: Authorization List Request&lt;br /&gt;
 &lt;br /&gt;
 Please authorize the following device&lt;br /&gt;
 &lt;br /&gt;
 device: n41ap-prodfuse&lt;br /&gt;
 ecid: 0[redacted]0&lt;br /&gt;
 bbsn: 0x0[redacted]0&lt;br /&gt;
 &lt;br /&gt;
 audience:&lt;br /&gt;
 restore tool:&lt;br /&gt;
 justification:&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
The other main tabs of the application reveal the live Syslog and the IORegistry hierarchy. &lt;br /&gt;
Menu options include commands to enable extra logging, reboot devices (with optional prompt), obliterate and reset them, read diagnostic data from GasGauge, WIFI, and NAND, query MobileGestalt directly, enter and exit recovery, and &amp;quot;Lookup Device&amp;quot; in PDCA. It can also pull logs off of the device, as well as content in var/mobile/library . The log archive can be huge because it includes data like the SMS database and all MMS attachments). &lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=PurpleSNIFF&amp;diff=32949</id>
		<title>PurpleSNIFF</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=PurpleSNIFF&amp;diff=32949"/>
		<updated>2013-07-20T14:55:32Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Initial page creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                   = PurpleSNIFF&lt;br /&gt;
| title                  = &lt;br /&gt;
| logo                   = [[File:PurpleSNIFF logo.png | 300px]]&lt;br /&gt;
| caption                = PurpleSNIFF 2.0 (76)&lt;br /&gt;
| collapsible            = &lt;br /&gt;
| author                 = Apple Inc.&lt;br /&gt;
| developer              = Apple Inc.&lt;br /&gt;
| released               = &lt;br /&gt;
| discontinued           = &lt;br /&gt;
| latest release version = &lt;br /&gt;
| latest release date    = &lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &lt;br /&gt;
| programming language   = &lt;br /&gt;
| operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
| platform               = &lt;br /&gt;
| size                   = 3,969,269 bytes [APP] &amp;lt;small&amp;gt;(76)&amp;lt;/small&amp;gt; &lt;br /&gt;
| language               = [[wikipedia:English language|English]]&lt;br /&gt;
| status                 = &lt;br /&gt;
| genre                  = ?&lt;br /&gt;
| license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
| website                = &lt;br /&gt;
}}&lt;br /&gt;
{{float toc|left}}&lt;br /&gt;
'''PurpleSNIFF''' is a tool made by Apple to read identification and diagnostic information from the device. The tool is used by Apple engineers as well as factory workers at Foxconn/Pegasus. It's included in the RestoreTools.pkg.&lt;br /&gt;
&lt;br /&gt;
Like [[iTunes]], [[PurpleSNIFF]] communicates with iDevices using a [[usbmux]] connection.&lt;br /&gt;
&lt;br /&gt;
==Device Information==&lt;br /&gt;
PurpleSNIFF displays the value of all keys accessible by liblockdown and mobilegestaltd. &lt;br /&gt;
Data is broken into categories:&lt;br /&gt;
* '''SNIFF''': Report date and host machine configuration&lt;br /&gt;
* '''Battery''': Battery charge state &lt;br /&gt;
* '''Debug''': Lockdown and CLTM (thermal) extended logging. &lt;br /&gt;
* '''Developer''': &amp;quot;Development&amp;quot; if has installed XCode developer diskimage.&lt;br /&gt;
* '''Device Mode''': &amp;quot;OS Mode&amp;quot;, &amp;quot;Recovery&amp;quot;, &amp;quot;DFU&amp;quot;, and possibly other internal modes.&lt;br /&gt;
* '''Diagnostic Data''': Includes device test data from different factory stations, including their timestamps. There are over 300 testing stations devices can be tested on. Each device will usually pass through about 6 testing stations before shipping. The diagnostic platform is called iPCB.&lt;br /&gt;
* '''Disk Usage''': Stats for both System and Data partitions&lt;br /&gt;
* '''General''': Activation info, baseband identifiers and state, current carrier bundle, device certificate, public key, name, color, ECID, MAC addresses, UDID, Serial Number, Hardware Model, [Fusing Status], platform, architecture, IMEI/IMSI/ICCID, NVRAM data, OS Build/Version, passcode lock-state, proximity sensor calibration, region code, [Security Fusing] (production or development), SIM card status, presence of Springboard/lockdown, and many more.&lt;br /&gt;
* '''Internal''': isInternal and isCarrierBuild, UI Build (bool), raw hex dump of SysCfg and DIAGS blocks. &lt;br /&gt;
* '''Localization''': Language&lt;br /&gt;
* '''Mobile iTunes''': Fairplay related parameters (e.g. certificate)&lt;br /&gt;
* '''Restore From Backup''': If it has been restored from a backup&lt;br /&gt;
* '''Setup Assistant''': YES/NO listing of which screens have been presented.&lt;br /&gt;
* '''Software Behavior''': A bitmask that is decoded into the following boolean properties: China Brick, Google Mail, No VOIP, No Wi Fi, NTSC, Shutter Click, Valid, and Volume Limit.&lt;br /&gt;
* '''Sync''': Device support for clearing data and encrypted backups, as well as mail accounts connected.&lt;br /&gt;
* '''Sync Backup''': iCloud sync information.&lt;br /&gt;
* '''SysCfg''': Device hardware information such as sensor calibration data, device color, NAND size, and serial numbers. This block is read-write for AppleInternal tool that must run on the device, so that Apple can refurbish devices and give them a new serial number. &lt;br /&gt;
* '''Wireless''': Bonjour service name, Wifi support, Wifi-sync support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[File:PurpleSniffSS.png|350px|thumb|right| General Section of PurpleSNIFF with sensitive bits redacted.]]&lt;br /&gt;
&lt;br /&gt;
==White List==&lt;br /&gt;
&amp;quot;Request White List Authorization&amp;quot; composes a new email to whitelist-request@group.apple.com. This address is only reachable from within Apple VPN, and does not accept outside senders. This feature allows a factory worker or Apple engineer to request that the device be SIM-unlocked for use on certain carriers. &lt;br /&gt;
&lt;br /&gt;
 TO: whitelist-request@group.apple.com&lt;br /&gt;
 SUBJECT: White-list Request&lt;br /&gt;
 &lt;br /&gt;
 Please whitelist the following device&lt;br /&gt;
 &lt;br /&gt;
 device: n41ap-prodfuse&lt;br /&gt;
 imei: 00...[redacted]...0&lt;br /&gt;
 &lt;br /&gt;
 carriers:&lt;br /&gt;
 justification:&lt;br /&gt;
&lt;br /&gt;
==Auth List==&lt;br /&gt;
&amp;quot;Request Personalized Install Authorization&amp;quot; composes a new email to authlist-request@group.apple.com. As with White List, this email address is only reachable from within Apple VPN. This feature allows a factory worker or Apple engineer to request special firmware personalization for their device. This is useful because Apple could order prototypes of unreleased iPhones but refuse to sign any firmware for them. This way, if the devices are lost/leaked into the wild for some reason, the device is bricked. When prototype phones arrive safely/securely to Cupertino, engineers can have them activated for firmware personalization through this mechanism. It is not known if approved requests permit firmware signing on the public or internal (VPN-only) TSS server. &lt;br /&gt;
&lt;br /&gt;
 TO: authlist-request@group.apple.com&lt;br /&gt;
 SUBJECT: Authorization List Request&lt;br /&gt;
 &lt;br /&gt;
 Please authorize the following device&lt;br /&gt;
 &lt;br /&gt;
 device: n41ap-prodfuse&lt;br /&gt;
 ecid: 0[redacted]0&lt;br /&gt;
 bbsn: 0x0[redacted]0&lt;br /&gt;
 &lt;br /&gt;
 audience:&lt;br /&gt;
 restore tool:&lt;br /&gt;
 justification:&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
The other main tabs of the application reveal the live Syslog and the IORegistry hierarchy. &lt;br /&gt;
Menu options include commands to enable extra logging, reboot devices (with optional prompt), obliterate and reset them, read diagnostic data from GasGauge, WIFI, and NAND, query MobileGestalt directly, enter and exit recovery, and &amp;quot;Lookup Device&amp;quot; in PDCA. It can also pull logs off of the device, as well as content in var/mobile/library . The log archive can be huge because it includes data like the SMS database and all MMS attachments). &lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=File:PurpleSniffSS.png&amp;diff=32946</id>
		<title>File:PurpleSniffSS.png</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=File:PurpleSniffSS.png&amp;diff=32946"/>
		<updated>2013-07-20T14:02:24Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Screenshot of PurpleSNIFF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot of PurpleSNIFF&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=File:PurpleSNIFF_logo.png&amp;diff=32945</id>
		<title>File:PurpleSNIFF logo.png</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=File:PurpleSNIFF_logo.png&amp;diff=32945"/>
		<updated>2013-07-20T13:58:49Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: About page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;About page&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=PurpleRestore&amp;diff=32944</id>
		<title>PurpleRestore</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=PurpleRestore&amp;diff=32944"/>
		<updated>2013-07-20T13:27:48Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                   = PurpleRestore&lt;br /&gt;
| title                  = &lt;br /&gt;
| logo                   = [[File:PurpleRestore logo.png]]&lt;br /&gt;
| screenshot             = [[File:PurpleRestore11A437.png|300px]]&lt;br /&gt;
| caption                = PurpleRestore 106.00 (11A437)&lt;br /&gt;
| collapsible            = &lt;br /&gt;
| author                 = Apple Inc.&lt;br /&gt;
| developer              = Apple Inc.&lt;br /&gt;
| released               = &lt;br /&gt;
| discontinued           = &lt;br /&gt;
| latest release version = 106.00&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;(latest ''known'' version)&amp;lt;/small&amp;gt;&lt;br /&gt;
| latest release date    = &lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &lt;br /&gt;
| programming language   = &lt;br /&gt;
| operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
| platform               = &lt;br /&gt;
| size                   = 4,096,348 bytes [APP] &amp;lt;small&amp;gt;(106.00)&amp;lt;/small&amp;gt; &lt;br /&gt;
| language               = [[wikipedia:English language|English]]&lt;br /&gt;
| status                 = &lt;br /&gt;
| genre                  = ?&lt;br /&gt;
| license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
| website                = &lt;br /&gt;
}}&lt;br /&gt;
{{float toc|left}}&lt;br /&gt;
'''PurpleRestore''' is a tool made by Apple and is used for flashing [[iDevices]]. Barely anything is known about it except that it provides far more customization than [[iTunes]]. PurpleRestore-106.00 (build 11A437) is the latest known version which is capable of detecting devices running the latest iOS 7 beta. Little is currently known about which versions it &amp;quot;supports&amp;quot; for restoring as such.&lt;br /&gt;
&lt;br /&gt;
Like [[iTunes]], [[PurpleRestore]] communicates with iDevices using a [[usbmux]] connection.&lt;br /&gt;
&lt;br /&gt;
== Restore Bundles==&lt;br /&gt;
Unlike iTunes, PurpleRestore doesn't use [[IPSW File Format|IPSW]] files to restore devices. It uses &amp;quot;Restore Bundles&amp;quot; which can be obtained from a server specific to a version of iOS, such as &amp;lt;code&amp;gt;afp://fieldgoal.apple.com/RestoreImages/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;afp://endzone.apple.com/OldRestoreImages/&amp;lt;/code&amp;gt; (among many others) . Unfortunately, the &amp;lt;code&amp;gt;afp&amp;lt;/code&amp;gt; protocol can only be accessed through Apple's internal VPN.&lt;br /&gt;
&lt;br /&gt;
However, you can create your own bundles by extracting an IPSW into a folder. The downside is that you don't get access to any internal/debugging stuff since it is a public firmware.&lt;br /&gt;
&lt;br /&gt;
== Restore Components ==&lt;br /&gt;
Restore Components has several options:&lt;br /&gt;
* '''Restore Bundle''': Specify the bundle to use in restoring&lt;br /&gt;
* '''Firmware Directory''': Specify the folder where the [[LLB]], [[iBoot]], etc. [[IMG3 File Format|IMG3]] files are located.&lt;br /&gt;
* '''Ramdisk Image''': Specify a [[ramdisk]] to be used (i.e. [[Restore Ramdisk|restore]] or [[Update Ramdisk|update]] ramdisk)&lt;br /&gt;
* '''DFU''': Specify what tools to upload based on a selection of &amp;quot;Debug&amp;quot;, &amp;quot;Development&amp;quot;, or &amp;quot;Release&amp;quot;. A specific file can also be selected.&lt;br /&gt;
&lt;br /&gt;
== Restore Operations ==&lt;br /&gt;
Restore Operations contains the most options to configure. These may also be the most useful ones.&lt;br /&gt;
&lt;br /&gt;
* '''Hardware Readiness'''&lt;br /&gt;
** '''Minimum Battery Charge (mV)''': This value controls the minimum charge level at which the restore will be allowed to continue. Below this threshold, we either wait to charge (if we're charging) or fail (if we're not charging).  If this option is not specified, a default value is used (currently 3.8V). Setting this option to 0 bypasses all battery level checks.&lt;br /&gt;
** '''Wait for Minimum Charge''': If the current voltage is below the minimum level, then the default behavior is to let the device charge and then continue. This option overrides that behavior when false.&lt;br /&gt;
** '''Wait for Storage Device''': Controls whether the restore waits for the storage device /dev/disk0 to be available before the restore is initiated.&lt;br /&gt;
** '''Allow Untethered Restore''': Permit the restore to run untethered (not connected to a host).  The result of specifying this option when the restore needs data from the host (for instance, when flashing NOR) is undefined (but probably bad). If this option is specified and the device remains tethered, things should proceed as usual.&lt;br /&gt;
* '''Storage Media'''&lt;br /&gt;
** '''Use LwVM''': Controls whether the device is formatted for LwVM (if supported).&lt;br /&gt;
** '''Repartition''': Controls whether a new partition map is created on the device.&lt;br /&gt;
** '''System Partition Size (MiB)''': Specifies the size (in mebibytes) that is desired for the system partition. Because the partition size can only be changed when creating a new partition map, this option is only relevant when used in conjunction with repartition. A size of 0 indicates that the restore library should choose a suitable size for you, based on the specific restore bundle and image being used if possible.&lt;br /&gt;
** '''Content Protection Type''': Controls the type of data protection used on the device.&lt;br /&gt;
** '''Low-Level Erase''': Do a low level erase (wipe with null or random data) of the entire storage device prior to restoring.&lt;br /&gt;
* '''Restore System Partition'''&lt;br /&gt;
** '''System Image''': Determines which type of system image to restore, or which file to use for the system image.&lt;br /&gt;
** '''Kernel Cache Type''': This option controls the kernel cache that gets installed on the device.&lt;br /&gt;
* '''Baseband'''&lt;br /&gt;
** '''Update Baseband''': Controls whether the [[baseband]] and baseband bootloader are updated as part of the restore.&lt;br /&gt;
** '''Force Update''': The baseband update is skipped when the existing firmware matches the available firmware. In some cases, it is desirable to force the firmware update to occur, regardless of what is currently on there. This option, when set to true, forces the update to be attempted.&lt;br /&gt;
&lt;br /&gt;
== Restore OS ==&lt;br /&gt;
Restore OS options allow you to specify the following:&lt;br /&gt;
* '''Restore Boot-Args''':  Boot-Args used when the Restore OS is loaded. By default those arguments are used: &amp;quot;debug=0x14e serial=3 rd=md0 nand-enable-reformat=1 -progress&amp;quot;&lt;br /&gt;
* '''Firmware Type:''' Specify the firmware which should be flashed when restoring. This can either be &amp;quot;Debug&amp;quot;, &amp;quot;Factory FA&amp;quot;, &amp;quot;Factory SA&amp;quot;, &amp;quot;Firmware Development&amp;quot; or &amp;quot;Production&amp;quot;.&lt;br /&gt;
* '''Boot Image Type:''' Can be &amp;quot;Internal&amp;quot;, &amp;quot;User or Internal&amp;quot;, &amp;quot;User&amp;quot; or &amp;quot;Update&amp;quot;.&lt;br /&gt;
* '''Boot Kernel Cache:''' Specify whether the &amp;quot;Production&amp;quot; or &amp;quot;Development&amp;quot; kernel cache should be used.&lt;br /&gt;
&lt;br /&gt;
==Personalization Settings==&lt;br /&gt;
As with iTunes, PurpleRestore can personalize builds for iOS devices (since recent Bootroms expect a valid APTicket). The tooltip for the &amp;quot;Personalized Restore&amp;quot; checkbox reads &amp;quot;Your ticket to the Orwellian cloud.&amp;quot; This may suggest that Apple developed TSS in part to control access to internal build variants (i.e. prevent leaks of &amp;quot;interesting&amp;quot; builds of iOS), in addition to preventing production users from downgrading. &lt;br /&gt;
* '''Variants''': &amp;quot;A predefined combination of restore pieces.&amp;quot; The options are: &amp;quot;Customer Install&amp;quot;, &amp;quot;Internal Debug&amp;quot;, &amp;quot;Internal Development&amp;quot;, &amp;quot;Internal Install&amp;quot;, &amp;quot;Internal Qualification&amp;quot;, and &amp;quot;Vendor install.&amp;quot; &lt;br /&gt;
* '''AppleConnect''': Used to authenticate all restores for personalization. Interestingly, AppleConnect will allow members of the iOS Developer Program (including non-employees) to install public builds of iOS (latest current and beta). It's likely AppleConnect is also used to authenticate signing of internal builds using the public TSS server, should the device be on the whitelist. &lt;br /&gt;
&lt;br /&gt;
== Restore Settings ==&lt;br /&gt;
By default, PurpleRestore comes with two pre-made restore settings. &amp;quot;Erase Install&amp;quot; and &amp;quot;Update Install&amp;quot;. Those restore settings are [[PLIST File Format|plist]] files that define the options PurpleRestore will use when restoring a device.&lt;br /&gt;
* '''Erase Install''': Repartition the media and erase all data before restoring. Includes all internal development tools and updates flash and the baseband by default.&lt;br /&gt;
* '''Update Install''': Includes all internal development tools and updates flash and the baseband by default.&lt;br /&gt;
&lt;br /&gt;
[[File:PurpleRestoreOptions.png |250px|thumb|right|PurpleRestore configuration screen]]&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering ==&lt;br /&gt;
This specific code is from [[iTunes]] for OS X. It detects if PurpleRestore is running so that it does not interfere with any operations that PurpleRestore is performing.&lt;br /&gt;
&lt;br /&gt;
 Off  Virt Adr Instruction    AT&amp;amp;T Syntax               Intel Syntax          Comment&lt;br /&gt;
 &lt;br /&gt;
 +354 003d7808 c70424bc01d700 movl  $0x00d701bc, (%esp) mov [esp], 0x00d701bc ; CFSTR(&amp;quot;com.apple.PurpleRestore&amp;quot;)&lt;br /&gt;
 +361 003d780f e80c65c3ff     calll 0x10000dd20         call 0x10000dd20      ; is specified bundle running&lt;br /&gt;
 +366 003d7814 84c0           testb %al,%al             test al, al&lt;br /&gt;
 +368 003d7816 7409           jz    0x003d7821          jz short 0x003d7821   ; if so, PurpleRestore is running&lt;br /&gt;
 +370 003d7818 c704246c8ba400 movl  $0x00a48b6c, (%esp) mov [esp], 0x00a48b6c ; so ignore device,&lt;br /&gt;
 +377 003d781f ebd3           jmp   0x003d77f4          jmp short 0x003d77f4  ; and jump back above loop for next device&lt;br /&gt;
 +379 003d7821 8d5de0         leal  0xe0(%ebp), %ebx    lea ebx, [ebp + 0xe0]&lt;br /&gt;
 +382 003d7824 895c2404       movl  %ebx, 0x04(%esp)    mov [esp + 4], ebx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[iTunes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=PurpleRestore&amp;diff=32943</id>
		<title>PurpleRestore</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=PurpleRestore&amp;diff=32943"/>
		<updated>2013-07-20T13:09:02Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Restore Settings */ Added screenshot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                   = PurpleRestore&lt;br /&gt;
| title                  = &lt;br /&gt;
| logo                   = [[File:PurpleRestore logo.png]]&lt;br /&gt;
| screenshot             = [[File:PurpleRestore11A437.png|300px]]&lt;br /&gt;
| caption                = PurpleRestore 106.00 (11A437)&lt;br /&gt;
| collapsible            = &lt;br /&gt;
| author                 = Apple Inc.&lt;br /&gt;
| developer              = Apple Inc.&lt;br /&gt;
| released               = &lt;br /&gt;
| discontinued           = &lt;br /&gt;
| latest release version = 106.00&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;(latest ''known'' version)&amp;lt;/small&amp;gt;&lt;br /&gt;
| latest release date    = &lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &lt;br /&gt;
| programming language   = &lt;br /&gt;
| operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
| platform               = &lt;br /&gt;
| size                   = 4,096,348 bytes [APP] &amp;lt;small&amp;gt;(106.00)&amp;lt;/small&amp;gt; &lt;br /&gt;
| language               = [[wikipedia:English language|English]]&lt;br /&gt;
| status                 = &lt;br /&gt;
| genre                  = ?&lt;br /&gt;
| license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
| website                = &lt;br /&gt;
}}&lt;br /&gt;
{{float toc|left}}&lt;br /&gt;
'''PurpleRestore''' is a tool made by Apple and is used for flashing [[iDevices]]. Barely anything is known about it except that it provides far more customization than [[iTunes]]. PurpleRestore-106.00 (build 11A437) is the latest known version which is capable of detecting devices running the latest iOS 7 beta. Little is currently known about which versions it &amp;quot;supports&amp;quot; for restoring as such.&lt;br /&gt;
&lt;br /&gt;
Like [[iTunes]], [[PurpleRestore]] communicates with iDevices using a [[usbmux]] connection.&lt;br /&gt;
&lt;br /&gt;
== Restore Bundles==&lt;br /&gt;
Unlike iTunes, PurpleRestore doesn't use [[IPSW File Format|IPSW]] files to restore devices. It uses &amp;quot;Restore Bundles&amp;quot; which can be obtained from a server specific to a version of iOS, such as &amp;lt;code&amp;gt;afp://fieldgoal.apple.com/RestoreImages/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;afp://endzone.apple.com/OldRestoreImages/&amp;lt;/code&amp;gt; (among many others) . Unfortunately, the &amp;lt;code&amp;gt;afp&amp;lt;/code&amp;gt; protocol can only be accessed through Apple's internal VPN.&lt;br /&gt;
&lt;br /&gt;
However, you can create your own bundles by extracting an IPSW into a folder. The downside is that you don't get access to any internal/debugging stuff since it is a public firmware.&lt;br /&gt;
&lt;br /&gt;
== Restore Components ==&lt;br /&gt;
Restore Components has several options:&lt;br /&gt;
* '''Restore Bundle''': Specify the bundle to use in restoring&lt;br /&gt;
* '''Firmware Directory''': Specify the folder where the [[LLB]], [[iBoot]], etc. [[IMG3 File Format|IMG3]] files are located.&lt;br /&gt;
* '''Ramdisk Image''': Specify a [[ramdisk]] to be used (i.e. [[Restore Ramdisk|restore]] or [[Update Ramdisk|update]] ramdisk)&lt;br /&gt;
* '''DFU''': Specify what tools to upload based on a selection of &amp;quot;Debug&amp;quot;, &amp;quot;Development&amp;quot;, or &amp;quot;Release&amp;quot;. A specific file can also be selected.&lt;br /&gt;
&lt;br /&gt;
== Restore Operations ==&lt;br /&gt;
Restore Operations contains the most options to configure. These may also be the most useful ones.&lt;br /&gt;
&lt;br /&gt;
* '''Hardware Readiness'''&lt;br /&gt;
** '''Minimum Battery Charge (mV)''': This value controls the minimum charge level at which the restore will be allowed to continue. Below this threshold, we either wait to charge (if we're charging) or fail (if we're not charging).  If this option is not specified, a default value is used (currently 3.8V). Setting this option to 0 bypasses all battery level checks.&lt;br /&gt;
** '''Wait for Minimum Charge''': If the current voltage is below the minimum level, then the default behavior is to let the device charge and then continue. This option overrides that behavior when false.&lt;br /&gt;
** '''Wait for Storage Device''': Controls whether the restore waits for the storage device /dev/disk0 to be available before the restore is initiated.&lt;br /&gt;
** '''Allow Untethered Restore''': Permit the restore to run untethered (not connected to a host).  The result of specifying this option when the restore needs data from the host (for instance, when flashing NOR) is undefined (but probably bad). If this option is specified and the device remains tethered, things should proceed as usual.&lt;br /&gt;
* '''Storage Media'''&lt;br /&gt;
** '''Use LwVM''': Controls whether the device is formatted for LwVM (if supported).&lt;br /&gt;
** '''Repartition''': Controls whether a new partition map is created on the device.&lt;br /&gt;
** '''System Partition Size (MiB)''': Specifies the size (in mebibytes) that is desired for the system partition. Because the partition size can only be changed when creating a new partition map, this option is only relevant when used in conjunction with repartition. A size of 0 indicates that the restore library should choose a suitable size for you, based on the specific restore bundle and image being used if possible.&lt;br /&gt;
** '''Content Protection Type''': Controls the type of data protection used on the device.&lt;br /&gt;
** '''Low-Level Erase''': Do a low level erase (wipe with null or random data) of the entire storage device prior to restoring.&lt;br /&gt;
* '''Restore System Partition'''&lt;br /&gt;
** '''System Image''': Determines which type of system image to restore, or which file to use for the system image.&lt;br /&gt;
** '''Kernel Cache Type''': This option controls the kernel cache that gets installed on the device.&lt;br /&gt;
* '''Baseband'''&lt;br /&gt;
** '''Update Baseband''': Controls whether the [[baseband]] and baseband bootloader are updated as part of the restore.&lt;br /&gt;
** '''Force Update''': The baseband update is skipped when the existing firmware matches the available firmware. In some cases, it is desirable to force the firmware update to occur, regardless of what is currently on there. This option, when set to true, forces the update to be attempted.&lt;br /&gt;
&lt;br /&gt;
== Restore OS ==&lt;br /&gt;
Restore OS options allow you to specify the following:&lt;br /&gt;
* '''Restore Boot-Args''':  Boot-Args used when the Restore OS is loaded. By default those arguments are used: &amp;quot;debug=0x14e serial=3 rd=md0 nand-enable-reformat=1 -progress&amp;quot;&lt;br /&gt;
* '''Firmware Type:''' Specify the firmware which should be flashed when restoring. This can either be &amp;quot;Debug&amp;quot;, &amp;quot;Factory FA&amp;quot;, &amp;quot;Factory SA&amp;quot;, &amp;quot;Firmware Development&amp;quot; or &amp;quot;Production&amp;quot;.&lt;br /&gt;
* '''Boot Image Type:''' Can be &amp;quot;Internal&amp;quot;, &amp;quot;User or Internal&amp;quot;, &amp;quot;User&amp;quot; or &amp;quot;Update&amp;quot;.&lt;br /&gt;
* '''Boot Kernel Cache:''' Specify whether the &amp;quot;Production&amp;quot; or &amp;quot;Development&amp;quot; kernel cache should be used.&lt;br /&gt;
&lt;br /&gt;
== Restore Settings ==&lt;br /&gt;
By default, PurpleRestore comes with two pre-made restore settings. &amp;quot;Erase Install&amp;quot; and &amp;quot;Update Install&amp;quot;. Those restore settings are [[PLIST File Format|plist]] files that define the options PurpleRestore will use when restoring a device.&lt;br /&gt;
* '''Erase Install''': Repartition the media and erase all data before restoring. Includes all internal development tools and updates flash and the baseband by default.&lt;br /&gt;
* '''Update Install''': Includes all internal development tools and updates flash and the baseband by default.&lt;br /&gt;
&lt;br /&gt;
[[File:PurpleRestoreOptions.png |300px|thumb|right|PurpleRestore configuration screen]]&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering ==&lt;br /&gt;
This specific code is from [[iTunes]] for OS X. It detects if PurpleRestore is running so that it does not interfere with any operations that PurpleRestore is performing.&lt;br /&gt;
&lt;br /&gt;
 Off  Virt Adr Instruction    AT&amp;amp;T Syntax               Intel Syntax          Comment&lt;br /&gt;
 &lt;br /&gt;
 +354 003d7808 c70424bc01d700 movl  $0x00d701bc, (%esp) mov [esp], 0x00d701bc ; CFSTR(&amp;quot;com.apple.PurpleRestore&amp;quot;)&lt;br /&gt;
 +361 003d780f e80c65c3ff     calll 0x10000dd20         call 0x10000dd20      ; is specified bundle running&lt;br /&gt;
 +366 003d7814 84c0           testb %al,%al             test al, al&lt;br /&gt;
 +368 003d7816 7409           jz    0x003d7821          jz short 0x003d7821   ; if so, PurpleRestore is running&lt;br /&gt;
 +370 003d7818 c704246c8ba400 movl  $0x00a48b6c, (%esp) mov [esp], 0x00a48b6c ; so ignore device,&lt;br /&gt;
 +377 003d781f ebd3           jmp   0x003d77f4          jmp short 0x003d77f4  ; and jump back above loop for next device&lt;br /&gt;
 +379 003d7821 8d5de0         leal  0xe0(%ebp), %ebx    lea ebx, [ebp + 0xe0]&lt;br /&gt;
 +382 003d7824 895c2404       movl  %ebx, 0x04(%esp)    mov [esp + 4], ebx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[iTunes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=PurpleRestore&amp;diff=32942</id>
		<title>PurpleRestore</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=PurpleRestore&amp;diff=32942"/>
		<updated>2013-07-20T13:07:22Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Restore Bundles */ - there are MANY places restore images sit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                   = PurpleRestore&lt;br /&gt;
| title                  = &lt;br /&gt;
| logo                   = [[File:PurpleRestore logo.png]]&lt;br /&gt;
| screenshot             = [[File:PurpleRestore11A437.png|300px]]&lt;br /&gt;
| caption                = PurpleRestore 106.00 (11A437)&lt;br /&gt;
| collapsible            = &lt;br /&gt;
| author                 = Apple Inc.&lt;br /&gt;
| developer              = Apple Inc.&lt;br /&gt;
| released               = &lt;br /&gt;
| discontinued           = &lt;br /&gt;
| latest release version = 106.00&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;(latest ''known'' version)&amp;lt;/small&amp;gt;&lt;br /&gt;
| latest release date    = &lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date    = &lt;br /&gt;
| programming language   = &lt;br /&gt;
| operating system       = [[wikipedia:OS X|OS X]]&lt;br /&gt;
| platform               = &lt;br /&gt;
| size                   = 4,096,348 bytes [APP] &amp;lt;small&amp;gt;(106.00)&amp;lt;/small&amp;gt; &lt;br /&gt;
| language               = [[wikipedia:English language|English]]&lt;br /&gt;
| status                 = &lt;br /&gt;
| genre                  = ?&lt;br /&gt;
| license                = [[wikipedia:Proprietary software|Closed source]]&lt;br /&gt;
| website                = &lt;br /&gt;
}}&lt;br /&gt;
{{float toc|left}}&lt;br /&gt;
'''PurpleRestore''' is a tool made by Apple and is used for flashing [[iDevices]]. Barely anything is known about it except that it provides far more customization than [[iTunes]]. PurpleRestore-106.00 (build 11A437) is the latest known version which is capable of detecting devices running the latest iOS 7 beta. Little is currently known about which versions it &amp;quot;supports&amp;quot; for restoring as such.&lt;br /&gt;
&lt;br /&gt;
Like [[iTunes]], [[PurpleRestore]] communicates with iDevices using a [[usbmux]] connection.&lt;br /&gt;
&lt;br /&gt;
== Restore Bundles==&lt;br /&gt;
Unlike iTunes, PurpleRestore doesn't use [[IPSW File Format|IPSW]] files to restore devices. It uses &amp;quot;Restore Bundles&amp;quot; which can be obtained from a server specific to a version of iOS, such as &amp;lt;code&amp;gt;afp://fieldgoal.apple.com/RestoreImages/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;afp://endzone.apple.com/OldRestoreImages/&amp;lt;/code&amp;gt; (among many others) . Unfortunately, the &amp;lt;code&amp;gt;afp&amp;lt;/code&amp;gt; protocol can only be accessed through Apple's internal VPN.&lt;br /&gt;
&lt;br /&gt;
However, you can create your own bundles by extracting an IPSW into a folder. The downside is that you don't get access to any internal/debugging stuff since it is a public firmware.&lt;br /&gt;
&lt;br /&gt;
== Restore Components ==&lt;br /&gt;
Restore Components has several options:&lt;br /&gt;
* '''Restore Bundle''': Specify the bundle to use in restoring&lt;br /&gt;
* '''Firmware Directory''': Specify the folder where the [[LLB]], [[iBoot]], etc. [[IMG3 File Format|IMG3]] files are located.&lt;br /&gt;
* '''Ramdisk Image''': Specify a [[ramdisk]] to be used (i.e. [[Restore Ramdisk|restore]] or [[Update Ramdisk|update]] ramdisk)&lt;br /&gt;
* '''DFU''': Specify what tools to upload based on a selection of &amp;quot;Debug&amp;quot;, &amp;quot;Development&amp;quot;, or &amp;quot;Release&amp;quot;. A specific file can also be selected.&lt;br /&gt;
&lt;br /&gt;
== Restore Operations ==&lt;br /&gt;
Restore Operations contains the most options to configure. These may also be the most useful ones.&lt;br /&gt;
&lt;br /&gt;
* '''Hardware Readiness'''&lt;br /&gt;
** '''Minimum Battery Charge (mV)''': This value controls the minimum charge level at which the restore will be allowed to continue. Below this threshold, we either wait to charge (if we're charging) or fail (if we're not charging).  If this option is not specified, a default value is used (currently 3.8V). Setting this option to 0 bypasses all battery level checks.&lt;br /&gt;
** '''Wait for Minimum Charge''': If the current voltage is below the minimum level, then the default behavior is to let the device charge and then continue. This option overrides that behavior when false.&lt;br /&gt;
** '''Wait for Storage Device''': Controls whether the restore waits for the storage device /dev/disk0 to be available before the restore is initiated.&lt;br /&gt;
** '''Allow Untethered Restore''': Permit the restore to run untethered (not connected to a host).  The result of specifying this option when the restore needs data from the host (for instance, when flashing NOR) is undefined (but probably bad). If this option is specified and the device remains tethered, things should proceed as usual.&lt;br /&gt;
* '''Storage Media'''&lt;br /&gt;
** '''Use LwVM''': Controls whether the device is formatted for LwVM (if supported).&lt;br /&gt;
** '''Repartition''': Controls whether a new partition map is created on the device.&lt;br /&gt;
** '''System Partition Size (MiB)''': Specifies the size (in mebibytes) that is desired for the system partition. Because the partition size can only be changed when creating a new partition map, this option is only relevant when used in conjunction with repartition. A size of 0 indicates that the restore library should choose a suitable size for you, based on the specific restore bundle and image being used if possible.&lt;br /&gt;
** '''Content Protection Type''': Controls the type of data protection used on the device.&lt;br /&gt;
** '''Low-Level Erase''': Do a low level erase (wipe with null or random data) of the entire storage device prior to restoring.&lt;br /&gt;
* '''Restore System Partition'''&lt;br /&gt;
** '''System Image''': Determines which type of system image to restore, or which file to use for the system image.&lt;br /&gt;
** '''Kernel Cache Type''': This option controls the kernel cache that gets installed on the device.&lt;br /&gt;
* '''Baseband'''&lt;br /&gt;
** '''Update Baseband''': Controls whether the [[baseband]] and baseband bootloader are updated as part of the restore.&lt;br /&gt;
** '''Force Update''': The baseband update is skipped when the existing firmware matches the available firmware. In some cases, it is desirable to force the firmware update to occur, regardless of what is currently on there. This option, when set to true, forces the update to be attempted.&lt;br /&gt;
&lt;br /&gt;
== Restore OS ==&lt;br /&gt;
Restore OS options allow you to specify the following:&lt;br /&gt;
* '''Restore Boot-Args''':  Boot-Args used when the Restore OS is loaded. By default those arguments are used: &amp;quot;debug=0x14e serial=3 rd=md0 nand-enable-reformat=1 -progress&amp;quot;&lt;br /&gt;
* '''Firmware Type:''' Specify the firmware which should be flashed when restoring. This can either be &amp;quot;Debug&amp;quot;, &amp;quot;Factory FA&amp;quot;, &amp;quot;Factory SA&amp;quot;, &amp;quot;Firmware Development&amp;quot; or &amp;quot;Production&amp;quot;.&lt;br /&gt;
* '''Boot Image Type:''' Can be &amp;quot;Internal&amp;quot;, &amp;quot;User or Internal&amp;quot;, &amp;quot;User&amp;quot; or &amp;quot;Update&amp;quot;.&lt;br /&gt;
* '''Boot Kernel Cache:''' Specify whether the &amp;quot;Production&amp;quot; or &amp;quot;Development&amp;quot; kernel cache should be used.&lt;br /&gt;
&lt;br /&gt;
== Restore Settings ==&lt;br /&gt;
By default, PurpleRestore comes with two pre-made restore settings. &amp;quot;Erase Install&amp;quot; and &amp;quot;Update Install&amp;quot;. Those restore settings are [[PLIST File Format|plist]] files that define the options PurpleRestore will use when restoring a device.&lt;br /&gt;
* '''Erase Install''': Repartition the media and erase all data before restoring. Includes all internal development tools and updates flash and the baseband by default.&lt;br /&gt;
* '''Update Install''': Includes all internal development tools and updates flash and the baseband by default.&lt;br /&gt;
&lt;br /&gt;
== Reverse Engineering ==&lt;br /&gt;
This specific code is from [[iTunes]] for OS X. It detects if PurpleRestore is running so that it does not interfere with any operations that PurpleRestore is performing.&lt;br /&gt;
&lt;br /&gt;
 Off  Virt Adr Instruction    AT&amp;amp;T Syntax               Intel Syntax          Comment&lt;br /&gt;
 &lt;br /&gt;
 +354 003d7808 c70424bc01d700 movl  $0x00d701bc, (%esp) mov [esp], 0x00d701bc ; CFSTR(&amp;quot;com.apple.PurpleRestore&amp;quot;)&lt;br /&gt;
 +361 003d780f e80c65c3ff     calll 0x10000dd20         call 0x10000dd20      ; is specified bundle running&lt;br /&gt;
 +366 003d7814 84c0           testb %al,%al             test al, al&lt;br /&gt;
 +368 003d7816 7409           jz    0x003d7821          jz short 0x003d7821   ; if so, PurpleRestore is running&lt;br /&gt;
 +370 003d7818 c704246c8ba400 movl  $0x00a48b6c, (%esp) mov [esp], 0x00a48b6c ; so ignore device,&lt;br /&gt;
 +377 003d781f ebd3           jmp   0x003d77f4          jmp short 0x003d77f4  ; and jump back above loop for next device&lt;br /&gt;
 +379 003d7821 8d5de0         leal  0xe0(%ebp), %ebx    lea ebx, [ebp + 0xe0]&lt;br /&gt;
 +382 003d7824 895c2404       movl  %ebx, 0x04(%esp)    mov [esp + 4], ebx&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[iTunes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=File:PurpleRestoreOptions.png&amp;diff=32941</id>
		<title>File:PurpleRestoreOptions.png</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=File:PurpleRestoreOptions.png&amp;diff=32941"/>
		<updated>2013-07-20T13:06:14Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Listing of the more interesting PurpleRestoreOptions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Listing of the more interesting PurpleRestoreOptions.&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Tatsu_Signing_Server&amp;diff=32938</id>
		<title>Tatsu Signing Server</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Tatsu_Signing_Server&amp;diff=32938"/>
		<updated>2013-07-20T12:53:48Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Updates to make TSS more informative&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Tatsu Signing Server''' ('''TSS''') is a service provided by Apple. Apple provides a list of available services at [http://gs.apple.com/TSS/ gs.apple.com].&lt;br /&gt;
There is an Apple internal equivalent, known as Spidercab, running at [http://tatsu-tss-internal.apple.com:80 tatsu-tss-internal.apple.com] which is accessible only within Apple's VPN. Spidercab is used to sign internal/debug builds of iOS, including old versions that are no longer signed on production.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [[TinyUmbrella]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://gs.apple.com/TSS/ List of available services]&lt;br /&gt;
&lt;br /&gt;
{{stub|Apple Inc.}}&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Tatsu_Signing_Server&amp;diff=32937</id>
		<title>Tatsu Signing Server</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Tatsu_Signing_Server&amp;diff=32937"/>
		<updated>2013-07-20T12:50:15Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: internal tatsu link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Tatsu Signing Server''' ('''TSS''') is a service provided by Apple. Apple provides a list of available services at [http://gs.apple.com/TSS/ gs.apple.com].&lt;br /&gt;
There is an Apple internal equivalent, known as Spidercab. The url for this is [http://tatsu-tss-internal.apple.com:80] and is accessible only within Apple's VPN. &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [[TinyUmbrella]]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://gs.apple.com/TSS/ List of available services]&lt;br /&gt;
&lt;br /&gt;
{{stub|Apple Inc.}}&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Absinthe&amp;diff=24047</id>
		<title>Absinthe</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Absinthe&amp;diff=24047"/>
		<updated>2012-01-21T06:18:41Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Exploit */ ran factcheck.org on my own writing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Absinthe is the [[S5L8940]] userland jailbreak tool for [[N94ap|iPhone 4S]] and [[iPad 2]] on iOS 5.0 (iPhone 4S only), 5.0.1 (9A405) and [[Telluride 9A406 (iPhone 4S)|iOS 5.0.1 build 9A406]] on iPhone 4S. This tool was released on January 20, 2012, and is available in three incarnations:&lt;br /&gt;
*A GUI tool with the same name, released by the [[Chronic Dev (team)|Chronic Dev Team]]&lt;br /&gt;
*A command-line version by the [[iPhone Dev Team]], in case troubleshooting is required&lt;br /&gt;
*A future integration with [[redsn0w]]&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
The jailbreak packs [[Corona]] for the [[S5L8940]] and the rest of the firmware patches in a regular [[iTunes]] backup and then restores this backup on to the device, which injects the required files. It is then completed by opening a web clip added to the [[SpringBoard|home screen]] by Absinthe that uses an exploit in [[/Applications/MobileSafari.app|Safari]] to install [[Cydia]]. If this doesn't work, for example, because the [[greenpois0n]] website is down due to the number of people attempting to jailbreak, an alternative is to enable a specially crafted VPN connection in the [[/Applications/Preferences.app|Settings]] app.&lt;br /&gt;
&lt;br /&gt;
==Exploit==&lt;br /&gt;
{{main|Corona}}&lt;br /&gt;
&lt;br /&gt;
This jailbreak uses the [[Racoon String Format Overflow Exploit]] and [[HFS Heap Overflow]] from [[Corona]] for untether.&lt;br /&gt;
The exact exploit to jailbreak the two devices is not known yet, but it is assumed that the web clip loads a page that requires an IPsec VPN connection, which causes the [http://ipsec-tools.sourceforge.net racoon] daemon to start and run the jailbreak payload.&lt;br /&gt;
&lt;br /&gt;
However, some poking reveals some unique means of injection. At some point in the jailbreak process, BackupAgent is intentionally crashed to produce a crash log. The jailbreak payload reads this crash log in order to obtain the memory address of libcopyfile.dylib to continue with the exploit. &lt;br /&gt;
&lt;br /&gt;
[[Category:Hacking Software]]&lt;br /&gt;
[[Category:Jailbreaks]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Absinthe&amp;diff=24046</id>
		<title>Absinthe</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Absinthe&amp;diff=24046"/>
		<updated>2012-01-21T06:16:10Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Exploit */ I read the console logs. and was very entertained.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Absinthe is the [[S5L8940]] userland jailbreak tool for [[N94ap|iPhone 4S]] and [[iPad 2]] on iOS 5.0 (iPhone 4S only), 5.0.1 (9A405) and [[Telluride 9A406 (iPhone 4S)|iOS 5.0.1 build 9A406]] on iPhone 4S. This tool was released on January 20, 2012, and is available in three incarnations:&lt;br /&gt;
*A GUI tool with the same name, released by the [[Chronic Dev (team)|Chronic Dev Team]]&lt;br /&gt;
*A command-line version by the [[iPhone Dev Team]], in case troubleshooting is required&lt;br /&gt;
*A future integration with [[redsn0w]]&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
The jailbreak packs [[Corona]] for the [[S5L8940]] and the rest of the firmware patches in a regular [[iTunes]] backup and then restores this backup on to the device, which injects the required files. It is then completed by opening a web clip added to the [[SpringBoard|home screen]] by Absinthe that uses an exploit in [[/Applications/MobileSafari.app|Safari]] to install [[Cydia]]. If this doesn't work, for example, because the [[greenpois0n]] website is down due to the number of people attempting to jailbreak, an alternative is to enable a specially crafted VPN connection in the [[/Applications/Preferences.app|Settings]] app.&lt;br /&gt;
&lt;br /&gt;
==Exploit==&lt;br /&gt;
{{main|Corona}}&lt;br /&gt;
&lt;br /&gt;
This jailbreak uses the [[Racoon String Format Overflow Exploit]] and [[HFS Heap Overflow]] from [[Corona]] for untether.&lt;br /&gt;
The exact exploit to jailbreak the two devices is not known yet, but it is assumed that the web clip loads a page that requires an IPsec VPN connection, which causes the [http://ipsec-tools.sourceforge.net racoon] daemon to start and run the jailbreak payload.&lt;br /&gt;
&lt;br /&gt;
However, some poking reveals some unique means of injection. At some point in the jailbreak process, libmobilecopy.dylib and/or MobileBackup are intentionally crashed to produce a crash log. The jailbreak payload reads this crash log in order to obtain memory addresses to continue with the exploit. &lt;br /&gt;
&lt;br /&gt;
[[Category:Hacking Software]]&lt;br /&gt;
[[Category:Jailbreaks]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=/Applications/Compass.app&amp;diff=22550</id>
		<title>/Applications/Compass.app</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=/Applications/Compass.app&amp;diff=22550"/>
		<updated>2011-11-22T05:48:30Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: This is not a children's encyclopedia. No need to define magnetometer. And why mess with the style of 3GS, just for fun?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;iOS refers to the compass internally as the  '''[[wikipedia:magnetometer|magnetometer]]'''. It exists in all iPhones since the [[n88ap|3GS]] and all iPad models. The compass found in the iPhone 3GS is the AKM Semiconductor AKM8973, whereas the iPhone 4 and iPad use the AKM Semiconductor AKM8975. [http://www.asahi-kasei.co.jp/ake/en/technology/angle.html]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Smart_Sign&amp;diff=21454</id>
		<title>Smart Sign</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Smart_Sign&amp;diff=21454"/>
		<updated>2011-10-09T18:47:44Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Technical Investigation */ duplicate word&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Image:SmartSign01.jpg|thumb|Smart Sign icon]]&lt;br /&gt;
'''Smart Sign''' is a special app that shows product specs and is installed on the &amp;quot;Smart Sign&amp;quot; iPads inside Apple Stores. This app can’t be exited with the home button. There is a gesture to quit apps on &amp;quot;Smart Sign&amp;quot; [[iPad]]s which is shared on a need to know basis among employees. The gesture does not return you to the home screen but returns you to [[AppleConnect]].&lt;br /&gt;
&lt;br /&gt;
== Technical Investigation==&lt;br /&gt;
The app itself is not what disables the home button; it is system-wide and enforced by SpringBoard. The key SBStoreDemoAppLock in com.apple.springboard.plist enables this functionality.&lt;br /&gt;
A disassembly of Springboard.app/Springboard reveals that there is no special gesture built in to Springboard to emulate the home button outside of multitasking gestures (if they are enabled on an iPad that was connected to Xcode). However, the app may have a gesture recognizer that performs an &amp;quot;exit(0)&amp;quot; call to quit the app.&lt;br /&gt;
&lt;br /&gt;
Apple sets the key in com.apple.springboard.plist by using a mobile configuration profile installed on the device. The profile is set to prohibit removal of itself.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://www.cultofmac.com/how-the-smart-sign-ipad-displays-at-your-local-apple-store-actually-work/106160 Cult Of Mac]: How the Smart Sign iPads at Your Local Apple Store Actually Work&lt;br /&gt;
* [http://www.idownloadblog.com/2011/07/26/look-apple-smart-sign/ iDownloadBlog]: An Exclusive Look Inside Apple’s Smart Sign&lt;br /&gt;
&lt;br /&gt;
{{stub|Software}}&lt;br /&gt;
[[Category:Apple Internal Apps]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Smart_Sign&amp;diff=21453</id>
		<title>Smart Sign</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Smart_Sign&amp;diff=21453"/>
		<updated>2011-10-09T18:47:02Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Separated from the english from the technical&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Image:SmartSign01.jpg|thumb|Smart Sign icon]]&lt;br /&gt;
'''Smart Sign''' is a special app that shows product specs and is installed on the &amp;quot;Smart Sign&amp;quot; iPads inside Apple Stores. This app can’t be exited with the home button. There is a gesture to quit apps on &amp;quot;Smart Sign&amp;quot; [[iPad]]s which is shared on a need to know basis among employees. The gesture does not return you to the home screen but returns you to [[AppleConnect]].&lt;br /&gt;
&lt;br /&gt;
== Technical Investigation==&lt;br /&gt;
The app itself is not what disables the home button; it is system-wide and enforced by SpringBoard. The key SBStoreDemoAppLock in com.apple.springboard.plist enables this functionality.&lt;br /&gt;
A disassembly of Springboard.app/Springboard reveals that there is no special gesture built in to Springboard to emulate the home button outside of multitasking gestures (if they are enabled on an iPad that was connected to Xcode). However, the app may have a gesture recognizer that performs an &amp;quot;exit(0)&amp;quot; call to quit the app.&lt;br /&gt;
&lt;br /&gt;
Apple changes sets the key in com.apple.springboard.plist by using a mobile configuration profile installed on the device. The profile is set to prohibit removal of itself. &lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://www.cultofmac.com/how-the-smart-sign-ipad-displays-at-your-local-apple-store-actually-work/106160 Cult Of Mac]: How the Smart Sign iPads at Your Local Apple Store Actually Work&lt;br /&gt;
* [http://www.idownloadblog.com/2011/07/26/look-apple-smart-sign/ iDownloadBlog]: An Exclusive Look Inside Apple’s Smart Sign&lt;br /&gt;
&lt;br /&gt;
{{stub|Software}}&lt;br /&gt;
[[Category:Apple Internal Apps]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Smart_Sign&amp;diff=21452</id>
		<title>Smart Sign</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Smart_Sign&amp;diff=21452"/>
		<updated>2011-10-09T18:41:57Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: My findings :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Image:SmartSign01.jpg|thumb|Smart Sign icon]]&lt;br /&gt;
'''Smart Sign''' is a special app that shows product specs and is installed on the &amp;quot;Smart Sign&amp;quot; iPads inside Apple Stores. This app can’t be exited with the home button. There is a gesture to quit apps on &amp;quot;Smart Sign&amp;quot; [[iPad]]s which is shared on a need to know basis among employees. The gesture does not return you to the home screen but returns you to [[AppleConnect]].&lt;br /&gt;
The app itself is not what disables the home button; it is system-wide and enforced by SpringBoard. The key SBStoreDemoAppLock in com.apple.springboard.plist enables this functionality. A disassembly of Springboard.app/Springboard reveals that there is no gesture support built in to Springboard to emulate the home button. However, the Smart Sign app may have a gesture recognizer that performs an &amp;quot;exit(0)&amp;quot; call to quit the app.&lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://www.cultofmac.com/how-the-smart-sign-ipad-displays-at-your-local-apple-store-actually-work/106160 Cult Of Mac]: How the Smart Sign iPads at Your Local Apple Store Actually Work&lt;br /&gt;
* [http://www.idownloadblog.com/2011/07/26/look-apple-smart-sign/ iDownloadBlog]: An Exclusive Look Inside Apple’s Smart Sign&lt;br /&gt;
&lt;br /&gt;
{{stub|Software}}&lt;br /&gt;
[[Category:Apple Internal Apps]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Smart_Sign&amp;diff=21434</id>
		<title>Smart Sign</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Smart_Sign&amp;diff=21434"/>
		<updated>2011-10-08T19:50:49Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Went snooping in the apple store.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Image:SmartSign01.jpg|thumb|Smart Sign icon]]&lt;br /&gt;
'''Smart Sign''' is a special app that shows product specs and is installed on the &amp;quot;Smart Sign&amp;quot; iPads inside Apple Stores. This app can’t be exited with the home button. There is a gesture to quit apps on &amp;quot;Smart Sign&amp;quot; [[iPad]]s which is shared on a need to know basis among employees. The gesture does not return you to the home screen but returns you to [[AppleConnect]].&lt;br /&gt;
The app itself is not what disables the home button; it is system-wide and enforced by SpringBoard. The key in com.apple.springboard.plist is SBStoreDemoAppLock to enable this functionality. &lt;br /&gt;
== External Links ==&lt;br /&gt;
* [http://www.cultofmac.com/how-the-smart-sign-ipad-displays-at-your-local-apple-store-actually-work/106160 Cult Of Mac]: How the Smart Sign iPads at Your Local Apple Store Actually Work&lt;br /&gt;
* [http://www.idownloadblog.com/2011/07/26/look-apple-smart-sign/ iDownloadBlog]: An Exclusive Look Inside Apple’s Smart Sign&lt;br /&gt;
&lt;br /&gt;
{{stub|Software}}&lt;br /&gt;
[[Category:Apple Internal Apps]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Leftover_Strings&amp;diff=20610</id>
		<title>Leftover Strings</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Leftover_Strings&amp;diff=20610"/>
		<updated>2011-08-24T03:58:54Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* lockdownd */ :).. Notice some of the things like Wifi Sync &amp;amp; iphone3,2/iphone4,1 mentioned within. And wifi recovery mode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apple likes to leave various strings throughout its binaries and libraries in [[iOS]]. You can find them by running &amp;lt;code&amp;gt;strings &amp;lt;binary name&amp;gt;&amp;lt;/code&amp;gt; on OS X. Some of the more interesting/entertaining ones are posted here.&lt;br /&gt;
&lt;br /&gt;
==[[Kernelcache]]==&lt;br /&gt;
===2.1.1===&lt;br /&gt;
They like to say &amp;quot;WTF?&amp;quot; in here. The context doesn't exactly suggest they're referring to [[WTF]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[%u.%09u] : %s:%s(): Chip Failure, Smacking WiFi chip! (count = %lu / %lu)&lt;br /&gt;
%s: WTF?  Timer handler expired and there is no pending command&lt;br /&gt;
%s::%s(): super failed to init!&lt;br /&gt;
%s::%s(): WTF?  The beacon list is NULL&lt;br /&gt;
%s::%s(): WTF?  Got a BRCM packet but an OUI/SUBTYPE mismatch&lt;br /&gt;
%s::%s(): WTF?? Got an event packet!!!&lt;br /&gt;
%s::%s(): ACK, there are outstanding commands to process!!!&lt;br /&gt;
%s::%s(): WTF, the command wasn't sent, nothing is safe now!&lt;br /&gt;
%s::%s(): WTF, there is no pending command&lt;br /&gt;
%s::%s(): WTF, the pending command hasn't been sent&lt;br /&gt;
%s::%s(): ACK, no free commands left!!!!&lt;br /&gt;
AppleMRVL868x: super failed to init!&lt;br /&gt;
%s::%s(): Command (%s) Timeout! - invoking hand of god&lt;br /&gt;
AppleMRVL868x: WTF?  Our Provider isn't an IOSDIOIoCardDevice?&lt;br /&gt;
super failed to start provider&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.0===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AppleUSBEthernetDevice::%s: super failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===?===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
console is dead, Jim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==[[lockdownd]]==&lt;br /&gt;
===4.0===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Really!? Can't determine the device name!? Really!?&lt;br /&gt;
Invalid ack! Ack. Ack. Ack.&lt;br /&gt;
fetch_me_brains&lt;br /&gt;
OkilyDokily&lt;br /&gt;
Wakey Wakey Buddy!&lt;br /&gt;
HOWDY&lt;br /&gt;
Suck it, McBain.&lt;br /&gt;
Not waking buddy because wireless sync is not allowed right now&lt;br /&gt;
Here's to the crazy ones.&lt;br /&gt;
Up shit creek. No paddle.&lt;br /&gt;
I am ignoring your unlock code. There is nothing you can do about it.&lt;br /&gt;
That being said, I am setting the activation state to Unlocked.&lt;br /&gt;
Setting the activation state to MismatchedIMEI. Dude, where's your baseband?&lt;br /&gt;
Setting the activation state to MismatchedICCID. Put that other SIM back in.&lt;br /&gt;
Setting the activation state to MissingSIM. Put that SIM back in, dude.&lt;br /&gt;
Setting the activation state to FactoryActivated. Helloq OQC.&lt;br /&gt;
Setting the activation state to SoftActivation. Hello AppleCare.&lt;br /&gt;
This is some kinda fpga: %s&lt;br /&gt;
DisableHactivation&lt;br /&gt;
Disabling activation short-circuit because DisableHactivation is set &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===4.1===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Our buddy went away&lt;br /&gt;
Our buddy is here!&lt;br /&gt;
Might wake my buddy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===4.3.3===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Timezone shenanigans&lt;br /&gt;
dirtied by changing %s&lt;br /&gt;
FPGA workaround enabled, no fairplay bringup&lt;br /&gt;
iPhone3,2&lt;br /&gt;
iPhone4,1 &lt;br /&gt;
Short circuiting activation state to Activated.&lt;br /&gt;
Hmmm, we're missing the post URL but continuing.&lt;br /&gt;
Turned airplane mode off since we're unactivated&lt;br /&gt;
But allowing simless activation&lt;br /&gt;
This host ID is lame&lt;br /&gt;
The activation record did not contain the necessary key data thingy&lt;br /&gt;
HEY!!!!! %s attempting to get [%s]:[%s]- Use MobileOracle instead of lockdown please!&lt;br /&gt;
Gah! Can't create mutable copy&lt;br /&gt;
Weird. Missing the pair record.&lt;br /&gt;
Must be within a session to enter recovery mode via WiFi&lt;br /&gt;
Could not determine whether or not we support WiFi syncing!&lt;br /&gt;
Very bad.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Keybagd==&lt;br /&gt;
===4.1===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Can't load the keybag. tears in rain... Time to die&lt;br /&gt;
Oh No! Kernel doesn't like this keybag:0x%08x. System is probably lost.&lt;br /&gt;
Huh? can't load the bag. That makes no sense&lt;br /&gt;
Doh! Can't rename %s to %s: %s&lt;br /&gt;
Gah! Can't remove %s: %s&lt;br /&gt;
Out of Memory!!! Dying!...so...cold....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mobile_obliterator [http://code.google.com/p/chronicdev/wiki/MobileObliterator]==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;buffy_summers&amp;quot;, &amp;quot;Could not kill the daemons: %d&amp;quot;&lt;br /&gt;
begin_fakery&lt;br /&gt;
end_fakery&lt;br /&gt;
And you will know my name is the Lord when I lay my vengeance upon thee.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===4.3.3===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lol, wut: %s&lt;br /&gt;
Could not find Revocable Storage! Reverting to stupid wipe.&lt;br /&gt;
The USB device controller could not be found. It's cool.&lt;br /&gt;
Erasing all Image3 firmware images, Firmware is gone?!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BackupAgent==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dealing with a 5.0-5.2 inner manifest. Mistakes were made, but we're going to do our best to recover&lt;br /&gt;
Refusing to backup with a 5.0-5.2 inner manifest. You're going to have to throw this out and do it over again, buddy.&lt;br /&gt;
*** REFUSING TO BACKUP USING OLD BACKUP SERVICE. INSTALL THE IPHONE SDK 4.0. ***&lt;br /&gt;
The safe harbor data for %@ has overstayed its welcome (%@). Mothballing it&lt;br /&gt;
We were handed an encrypted backup but we don't have a password. Throwing out this manifest and creating a fresh, unencrypted one&lt;br /&gt;
Backup request received from a new backup protocol version. Let's do the versioning dance. Our version: %@&lt;br /&gt;
Talking to an old version. Jumping straight to the action and sending files&lt;br /&gt;
Ok, that was fun. Really beginning the backup.&lt;br /&gt;
Could not flock the restore running file at %@. This restore may be a bit bumpy...&lt;br /&gt;
Looks like this is a magic restore. We'll be keeping all your settings intact for this one...&lt;br /&gt;
Thanks for the Memories&lt;br /&gt;
%s is being feisty. Sending it a SIGKILL&lt;br /&gt;
%s decided it didn't want to play well with others and refused to exit. We're going to continue with the backup/restore anyway and hope for the best.&lt;br /&gt;
No help is available for BackupAgent at this time. You probably don't need to pass any arguments anyway.&lt;br /&gt;
Could not get the mobile user's passwd struct. We'll try %@ just in case, but things will probably go downhill from here.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Leftover_Strings&amp;diff=20606</id>
		<title>Leftover Strings</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Leftover_Strings&amp;diff=20606"/>
		<updated>2011-08-24T03:15:40Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Mobile_obliterator [http://code.google.com/p/chronicdev/wiki/MobileObliterator] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apple likes to leave various strings throughout its binaries and libraries in [[iOS]]. You can find them by running &amp;lt;code&amp;gt;strings &amp;lt;binary name&amp;gt;&amp;lt;/code&amp;gt; on OS X. Some of the more interesting/entertaining ones are posted here.&lt;br /&gt;
&lt;br /&gt;
==[[Kernelcache]]==&lt;br /&gt;
===2.1.1===&lt;br /&gt;
They like to say &amp;quot;WTF?&amp;quot; in here. The context doesn't exactly suggest they're referring to [[WTF]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[%u.%09u] : %s:%s(): Chip Failure, Smacking WiFi chip! (count = %lu / %lu)&lt;br /&gt;
%s: WTF?  Timer handler expired and there is no pending command&lt;br /&gt;
%s::%s(): super failed to init!&lt;br /&gt;
%s::%s(): WTF?  The beacon list is NULL&lt;br /&gt;
%s::%s(): WTF?  Got a BRCM packet but an OUI/SUBTYPE mismatch&lt;br /&gt;
%s::%s(): WTF?? Got an event packet!!!&lt;br /&gt;
%s::%s(): ACK, there are outstanding commands to process!!!&lt;br /&gt;
%s::%s(): WTF, the command wasn't sent, nothing is safe now!&lt;br /&gt;
%s::%s(): WTF, there is no pending command&lt;br /&gt;
%s::%s(): WTF, the pending command hasn't been sent&lt;br /&gt;
%s::%s(): ACK, no free commands left!!!!&lt;br /&gt;
AppleMRVL868x: super failed to init!&lt;br /&gt;
%s::%s(): Command (%s) Timeout! - invoking hand of god&lt;br /&gt;
AppleMRVL868x: WTF?  Our Provider isn't an IOSDIOIoCardDevice?&lt;br /&gt;
super failed to start provider&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.0===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AppleUSBEthernetDevice::%s: super failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===?===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
console is dead, Jim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==[[lockdownd]]==&lt;br /&gt;
===4.0===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Really!? Can't determine the device name!? Really!?&lt;br /&gt;
Invalid ack! Ack. Ack. Ack.&lt;br /&gt;
fetch_me_brains&lt;br /&gt;
OkilyDokily&lt;br /&gt;
Wakey Wakey Buddy!&lt;br /&gt;
HOWDY&lt;br /&gt;
Suck it, McBain.&lt;br /&gt;
Not waking buddy because wireless sync is not allowed right now&lt;br /&gt;
Here's to the crazy ones.&lt;br /&gt;
Up shit creek. No paddle.&lt;br /&gt;
I am ignoring your unlock code. There is nothing you can do about it.&lt;br /&gt;
That being said, I am setting the activation state to Unlocked.&lt;br /&gt;
Setting the activation state to MismatchedIMEI. Dude, where's your baseband?&lt;br /&gt;
Setting the activation state to MismatchedICCID. Put that other SIM back in.&lt;br /&gt;
Setting the activation state to MissingSIM. Put that SIM back in, dude.&lt;br /&gt;
Setting the activation state to FactoryActivated. Helloq OQC.&lt;br /&gt;
Setting the activation state to SoftActivation. Hello AppleCare.&lt;br /&gt;
This is some kinda fpga: %s&lt;br /&gt;
DisableHactivation&lt;br /&gt;
Disabling activation short-circuit because DisableHactivation is set &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===4.1===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Our buddy went away&lt;br /&gt;
Our buddy is here!&lt;br /&gt;
Might wake my buddy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Keybagd==&lt;br /&gt;
===4.1===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Can't load the keybag. tears in rain... Time to die&lt;br /&gt;
Oh No! Kernel doesn't like this keybag:0x%08x. System is probably lost.&lt;br /&gt;
Huh? can't load the bag. That makes no sense&lt;br /&gt;
Doh! Can't rename %s to %s: %s&lt;br /&gt;
Gah! Can't remove %s: %s&lt;br /&gt;
Out of Memory!!! Dying!...so...cold....&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mobile_obliterator [http://code.google.com/p/chronicdev/wiki/MobileObliterator]==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;buffy_summers&amp;quot;, &amp;quot;Could not kill the daemons: %d&amp;quot;&lt;br /&gt;
begin_fakery&lt;br /&gt;
end_fakery&lt;br /&gt;
And you will know my name is the Lord when I lay my vengeance upon thee.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===4.3.3===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lol, wut: %s&lt;br /&gt;
Could not find Revocable Storage! Reverting to stupid wipe.&lt;br /&gt;
The USB device controller could not be found. It's cool.&lt;br /&gt;
Erasing all Image3 firmware images, Firmware is gone?!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BackupAgent==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dealing with a 5.0-5.2 inner manifest. Mistakes were made, but we're going to do our best to recover&lt;br /&gt;
Refusing to backup with a 5.0-5.2 inner manifest. You're going to have to throw this out and do it over again, buddy.&lt;br /&gt;
*** REFUSING TO BACKUP USING OLD BACKUP SERVICE. INSTALL THE IPHONE SDK 4.0. ***&lt;br /&gt;
The safe harbor data for %@ has overstayed its welcome (%@). Mothballing it&lt;br /&gt;
We were handed an encrypted backup but we don't have a password. Throwing out this manifest and creating a fresh, unencrypted one&lt;br /&gt;
Backup request received from a new backup protocol version. Let's do the versioning dance. Our version: %@&lt;br /&gt;
Talking to an old version. Jumping straight to the action and sending files&lt;br /&gt;
Ok, that was fun. Really beginning the backup.&lt;br /&gt;
Could not flock the restore running file at %@. This restore may be a bit bumpy...&lt;br /&gt;
Looks like this is a magic restore. We'll be keeping all your settings intact for this one...&lt;br /&gt;
Thanks for the Memories&lt;br /&gt;
%s is being feisty. Sending it a SIGKILL&lt;br /&gt;
%s decided it didn't want to play well with others and refused to exit. We're going to continue with the backup/restore anyway and hope for the best.&lt;br /&gt;
No help is available for BackupAgent at this time. You probably don't need to pass any arguments anyway.&lt;br /&gt;
Could not get the mobile user's passwd struct. We'll try %@ just in case, but things will probably go downhill from here.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8930&amp;diff=18538</id>
		<title>S5L8930</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8930&amp;diff=18538"/>
		<updated>2011-06-13T23:35:10Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Undo revision 18529 by Whiteshinyapple (Talk), no it's the same&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An SoC developed by Apple in-house chip design department. It is currently used in [[k48ap|iPad]], [[N90ap|iPhone 4 GSM model]], [[K66ap|Apple TV 2G]], [[N81ap|iPod touch 4G]], and the [[N92ap|iPhone 4 CDMA model]]. Publicly, Apple refers to this chip as the '''A4'''.&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
&lt;br /&gt;
=== [[S5L8930 (Bootrom)|Bootrom]] ===&lt;br /&gt;
* [[User:Geohot|Geohot]] used a bootrom exploit in [[limera1n]] that does not have publicly released technical details.&lt;br /&gt;
* SHAtter&lt;br /&gt;
&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
* [http://www.youtube.com/watch?v=0NValNoW5Rc Unreleased Untethered iBoot Exploit]&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.2&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1 (excluding iOS 3.2.2)&lt;br /&gt;
* [[Packet Filter Kernel Exploit]] - Works up to [[iOS]] 4.1&lt;br /&gt;
* [[HFS Legacy Volume Name Stack Buffer Overflow]] - Works up to [[iOS]] 4.2.8&lt;br /&gt;
* [[ndrv_setspec() Integer Overflow]] - Works up to [[iOS]] 4.3.3&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.2&lt;br /&gt;
* [[Malformed CFF Vulnerability]] - Works up to [[iOS]] 4.0.1 (excluding iOS 3.2.2)&lt;br /&gt;
&lt;br /&gt;
== Boot Chain ==&lt;br /&gt;
[[S5L8930 (Bootrom)|Bootrom]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Firmware|System Software]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
* '''CPU''': ARM Cortex-A8&lt;br /&gt;
* '''GPU''': PowerVR SGX 535&lt;br /&gt;
* '''A/V Playback''': PowerVR VXD&lt;br /&gt;
* '''RAM''': 256 MB ([[K66ap|Apple TV 2G]], [[K48ap|iPad]], and [[N81ap|iPod touch 4G]]) or 512 MB ([[N90ap|iPhone 4]])&lt;br /&gt;
&lt;br /&gt;
Aside from the [[N90ap|iPhone 4]]'s additional RAM and an overall higher clock speed, these are the same specifications as the [[S5L8920]] and [[S5L8922]].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[S5L8930 (Bootrom)]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* http://www.apple.com/ipad/specs/&lt;br /&gt;
* http://www.brightsideofnews.com/news/2010/1/27/apple-a4-soc-unveiled---its-an-arm-cpu-and-the-gpu!.aspx&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=User_talk:M2m&amp;diff=17799</id>
		<title>User talk:M2m</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=User_talk:M2m&amp;diff=17799"/>
		<updated>2011-05-02T02:51:22Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: New page: I &amp;lt;3 how you've posted these wonderful links --~~~~&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I &amp;lt;3 how you've posted these wonderful links --[[User:Iemit737|Iemit737]] 02:51, 2 May 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Models&amp;diff=17515</id>
		<title>Models</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Models&amp;diff=17515"/>
		<updated>2011-04-17T16:07:58Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: S5l8900 bootroms do not use an iBoot nomenclature.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The firmware [[iOS]] runs on various different models of devices. This page is used to give an overview of the different model numbers. For the region please see [[Model Regions]].&lt;br /&gt;
&lt;br /&gt;
NOTE: The first letter may vary between &amp;quot;F,&amp;quot; &amp;quot;M,&amp;quot; or &amp;quot;P.&amp;quot; &amp;quot;F&amp;quot; is used for refurbished units. &amp;quot;M&amp;quot; is used for typical retail units. &amp;quot;P&amp;quot; is used for personalized (engraved) units.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:auto;table-layout:fixed;border-collapse:collapse;&amp;quot;&lt;br /&gt;
! Device Type&lt;br /&gt;
! Generation&lt;br /&gt;
! Bootrom&lt;br /&gt;
! Cellular Radio&lt;br /&gt;
! Type&lt;br /&gt;
! [[IPSW File Format|IPSW]] Prefix&lt;br /&gt;
! Color&lt;br /&gt;
! Memory&lt;br /&gt;
! Model&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;19&amp;quot; | [[iPhone]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | iPhone 2G&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | N/A&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{wp|GSM}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[m68ap]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | iPhone1,1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | metal&lt;br /&gt;
| 4 GB&lt;br /&gt;
| MA501&lt;br /&gt;
|-&lt;br /&gt;
| 8 GB&lt;br /&gt;
| MA712&lt;br /&gt;
|-&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MB384&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | iPhone 3G&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | N/A&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{wp|GSM}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[n82ap]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | iPhone1,2&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | black&lt;br /&gt;
| 8 GB&lt;br /&gt;
| MB046, MB489, MB702&lt;br /&gt;
|-&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MB048, MB496, MB704&lt;br /&gt;
|-&lt;br /&gt;
| white&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MB499, MB500, MB705&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | iPhone 3GS&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | [[iBoot-359.3]]&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | {{wp|GSM}}&amp;lt;!-- intentionally not merged with next block --&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | [[n88ap]]&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | iPhone2,1&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | black&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MB715&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MB717&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | white&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MB716&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MB718&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | [[iBoot-359.3.2]]&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{wp|GSM}}&amp;lt;!-- intentionally not merged with next block --&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | black&lt;br /&gt;
| 8 GB&lt;br /&gt;
| MC555&lt;br /&gt;
|-&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC131, MC135&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC133, MC137&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | white&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC132, MC136&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC134, MC138&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | iPhone 4&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[iBoot-574.4]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{wp|GSM}}&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[n90ap]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | iPhone3,1&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | black&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC318, MC603, MC608&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC319, MC605, MC610&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[iBoot-574.4]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{wp|Code division multiple access|CDMA}}&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[n92ap]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | iPhone3,3&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | black&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC676&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC678&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;12&amp;quot; | [[iPod touch]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | iPod touch 1G&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | N/A&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | N/A&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[n45ap]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | iPod1,1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | metal&lt;br /&gt;
| 8 GB&lt;br /&gt;
| MA623&lt;br /&gt;
|-&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MA627&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MB376&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | iPod touch 2G&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[iBoot-240.4]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | N/A&amp;lt;!-- intentionally not merged with next block --&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | [[n72ap]]&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | iPod2,1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | metal&lt;br /&gt;
| 8 GB&lt;br /&gt;
| MB528&lt;br /&gt;
|-&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MB531&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MB533&lt;br /&gt;
|-&lt;br /&gt;
| [[iBoot-240.5.1]]&lt;br /&gt;
| N/A&lt;br /&gt;
| metal&lt;br /&gt;
| 8 GB&lt;br /&gt;
| MC086&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | iPod touch 3G&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[iBoot-359.5]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | N/A&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[n18ap]]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | iPod3,1&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | metal&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC008&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MC011&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | iPod touch 4G&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[iBoot-574.4]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | N/A&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[n81ap]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | iPod4,1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | metal&lt;br /&gt;
| 8 GB&lt;br /&gt;
| MC540&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC544&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MC547&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;24&amp;quot; | [[iPad]]&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | iPad&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[iBoot-574.4]]&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | N/A&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[k48ap]]&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | iPad1,1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | black&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MB292&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MB293&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MB294&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{wp|GSM}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | black&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC349&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC496&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MC497&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;18&amp;quot; | [[iPad 2]]&lt;br /&gt;
| rowspan=&amp;quot;18&amp;quot; | [[iBoot-838.3]]&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | N/A&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[k93ap]]&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | iPad2,1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | black&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC769&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC980&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MC916&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | white&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC979&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC980&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MC981&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | {{wp|GSM}}&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[k94ap]]&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | iPad2,2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | black&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC773&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC774&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MC775&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | white&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC982&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC983&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MC984&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | {{wp|Code division multiple access|CDMA}}&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[k95ap]]&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | iPad2,3&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | black&lt;br /&gt;
| 16 GB&lt;br /&gt;
| MC755&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC763&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MC764&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | white&lt;br /&gt;
| 16GB&lt;br /&gt;
| MC985&lt;br /&gt;
|-&lt;br /&gt;
| 32 GB&lt;br /&gt;
| MC986&lt;br /&gt;
|-&lt;br /&gt;
| 64 GB&lt;br /&gt;
| MC987&lt;br /&gt;
|-&lt;br /&gt;
! [[Apple TV]]&lt;br /&gt;
| Apple TV 2G&lt;br /&gt;
| [[iBoot-574.4]]&lt;br /&gt;
| N/A&lt;br /&gt;
| [[k66ap]]&lt;br /&gt;
| AppleTV2,1&lt;br /&gt;
| black&lt;br /&gt;
| 8 GB&lt;br /&gt;
| MC572&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unknown: MB719 (probably a 3GS model)&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:Copy_Protection_Overview&amp;diff=17315</id>
		<title>Talk:Copy Protection Overview</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:Copy_Protection_Overview&amp;diff=17315"/>
		<updated>2011-04-08T02:22:31Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Excellent job, I think this is an important topic that can be well addressed on this wiki. Copy protection contains controversial subject matter; the way I see it, as long as the information here remains academic, this is very much in the spirit of theiphonewiki. --[[User:Geohot|geohot]] 03:49, 11 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
O_o Just opened this page accidentally (don't own an iPhone), and was very sad about that its author writes about '''protecting DRM''' and, probably, doesn't think that soft must be free and that copyright is bad and DRM of course is bad too. Apple fans such Apple fans. But the page is of some interest, yeah. --[[User:VitaliyFilippov|VitaliyFilippov]] 21:58, 7 April 2011 (UTC)&lt;br /&gt;
:It's not a case of being an Apple fanboy. Fact is, there's no valid reason to circumvent the DRM on iOS apps. (The only reason I can think of would be for piracy, which we're opposed to.) The App Store DRM is very flexible; you can install apps that you've purchased on every device you own. --[[User:Dialexio|&amp;lt;span style=&amp;quot;color:#C20; font-weight:normal;&amp;quot;&amp;gt;Dialexio&amp;lt;/span&amp;gt;]] 23:12, 7 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
One reason I can think of is to un-DRM free (and always free) apps built for 3.1.x. So that way far into the future (or a year, at technology's pace...)  you will be able to pick from and run a ton of the apps built for the original iPhone. Probably not legally OK, but no financial loss so legal arguments are null. Kind of. --[[User:Iemit737|Iemit737]] 02:22, 8 April 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=The_iPhone_Wiki:Spam&amp;diff=17275</id>
		<title>The iPhone Wiki:Spam</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=The_iPhone_Wiki:Spam&amp;diff=17275"/>
		<updated>2011-04-06T03:48:45Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How do we combat this recent spamming of this wiki? I suggest a possible invite system or similar? --[[User:Srts|Srts]] 02:24, 9 November 2009 (UTC)&lt;br /&gt;
:I have already blocked account signup, they must have had this account for a while. --[[User:Geohot|geohot]] 02:29, 9 November 2009 (UTC)&lt;br /&gt;
::Well if they don't stop, we can't have account creation disabled forever, defeats the purpose of the wiki. People like him are sad. Great work to all the sysops et all. keeping disruption to a minimal :D --[[User:Srts|Srts]] 02:34, 9 November 2009 (UTC)&lt;br /&gt;
:::Yea thanks a lot guys for putting up with this. We'll give a bit of time, and if they continue, we'll figure something out. This kid keep trying to reset my password for hosting and the wiki. Too bad he doesn't have a life. --[[User:Geohot|geohot]] 03:10, 9 November 2009 (UTC)&lt;br /&gt;
:::An invite system might not be a bad idea actually [[User:ChronicDev|Will Strafach]] 03:16, 9 November 2009 (UTC)&lt;br /&gt;
::::feel free to post their IP addresses, lol --[[User:Posixninja|posixninja]] 04:08, 9 November 2009 (UTC)&lt;br /&gt;
::::Well, if you need an extra admin to block them (and delete spam pages), I volunteer.  --[[User:Dranfi|Dranfi]]&lt;br /&gt;
:::::Congrats, you're an admin --[[User:Geohot|geohot]] 13:22, 9 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
How many different IPs are we dealing with? Is it within a specific range? For the time being, it may be possible to blacklist an entire subnet if they are all coming from the same place. But if a botnet is doing this, may be more difficult. Is it possible for MediaWiki to require admin approval of an edit prior to it being commited? Not well versed with MediaWiki administration, just thossing out some ideas. --[[User:Tsuehpsyde|tsuehpsyde]] 17:29, 9 November 2009 (UTC)&lt;br /&gt;
:It is not within a specific range.  On my wiki, people post almost the exact same stuff as IP's and I get from 64.*.*.* al the way to 96.*.*.* I think it is a botnet --[[User:Balloonhead66|Balloonhead66]] 23:13, 16 March 2011 (UTC)&lt;br /&gt;
:We could figure out where they come rom and do the same to them. Secondly, we could create a filter that unless your part of a specific group you cannot do more than this many edits in this amount of time. We could try making a period where the admins have to approve the users. Lastly, we could make it so that in the first 12 hours of a user account that user could not edit pages so it would give time for the sysops to ban the users. [[User:Revolution|Revolution]] 00:02, 10 November 2009 (UTC)&lt;br /&gt;
::That might not be a good idea as we could get ou butts sued. --[[User:Balloonhead66|Balloonhead66]]&lt;br /&gt;
:::Why don't we just do this apple-style and have a group of moderators approve of every comment, page edit or revision? I would love to be a part of such group.&lt;br /&gt;
::::The extension for mediawiki [[mediawikiwiki:Extension:FlaggedRevs|FlaggedRevs]] is 1.14 and above.  This wiki is running 1.12 :( --[[User:Balloonhead66|Balloonhead66]] 23:13, 16 March 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
If the ones you refer to as 'they' are the [http://code.google.com/p/pois0nhack pois0nhack] group then 'they' don't really seem to pose much of a threat in my opinion. I agree that for the time being we could impose some kind of 12/24 hr posting limitation (maybe no more than +-300 char changes?), but no more than that since this is, after all, a public wiki. Sorry if I'm intruding on some kind of admin/mod meeting, just figured I should have my say. --[[User:Rekoil|adriaaan]] 00:27, 10 November 2009 (UTC)&lt;br /&gt;
:I am in favor of a 12hr limit for new users, but since it's a public wiki, during this time, contributions would have to be approved by sysops. --Untagged&lt;br /&gt;
::Personally I think it would be good to have it so that all edits by new users a thrown into a moderation pool, then once a good amount of worthwhile contributions, that user can be &amp;quot;whitelisted&amp;quot;.&lt;br /&gt;
::Maybe we could extend the Twitter-Service to display more information (i.e. &amp;quot;Main Page (-2,439) http://u.nu/5x2t3 &amp;quot; instead of &amp;quot;Main Page - http://u.nu/5x2t3&amp;quot;). That could allow fast detection (and reversal) of vandalism attempts because large edits by &amp;quot;unknown&amp;quot; would be easy to spot. May also add the username and/or the commit message, but then we'd have to check for anything Twitter might interpret or block. --[[User:CleanAir|CleanAir]] 13:58, 12 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Can we add a Captchure to the logon process? I don't think all these recent spam pages are done manually. --[[User:Http|http]] 06:29, 15 March 2011 (UTC)&lt;br /&gt;
:Good idea [[User:Http|http]], add a Captcha to the logon process and the sign up process for some time --[[User:Whiteshinyapple|Whiteshinyapple]] 09:53, 16 March 2011 (UTC).&lt;br /&gt;
:Uhm better idea [[User:Http|http]], add a Captcha when making new pages. Having to fill in a captcha at every login seems to be a pain in the ass :/ the only thing the spam is doing is making new pages, (at least as far as i see.) --[[User:IMaximusX|IMaximusX]]&lt;br /&gt;
::What I meant was for the registration process (new user), not for every login. Only [[User:Geohot|geohot]] could implement that. --[[User:Http|http]] 17:37, 16 March 2011 (UTC)&lt;br /&gt;
::[http://recaptcha.net Recaptcha] might work.  I requires 1.8+, but only works on the sign in, edits with a new external link (anon only), and passwork cracking. --[[User:Balloonhead66|Balloonhead66]] 23:13, 16 March 2011 (UTC)&lt;br /&gt;
::[[User:http|http]] im pretty sure they already have accounts, :p --[[User:IMaximusX|IMaximusX]]&lt;br /&gt;
&lt;br /&gt;
Does this wiki currently take advantage of IP banning capability or would that just be subverted anyways? --[[User:Iemit737|Iemit737]] 03:48, 6 April 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=S5L8920&amp;diff=16807</id>
		<title>S5L8920</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=S5L8920&amp;diff=16807"/>
		<updated>2011-03-14T02:11:18Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Bootrom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the processor used in the [[iPhone 3GS]].&lt;br /&gt;
&lt;br /&gt;
S5L8920 using [http://www.arm.com/products/CPUs/archi-thumb2.html THUMB-2] instruction set as well as ARM and THUMB ones. Binaries included in iOS are compiled for only [[Armv7]] and are not compatible with older CPUs.&lt;br /&gt;
&lt;br /&gt;
== Exploits ==&lt;br /&gt;
=== [[iBoot]] ===&lt;br /&gt;
* [[iBoot Environment Variable Overflow]] - Works up to [[iOS]] 3.1 beta 3&lt;br /&gt;
* [[usb_control_msg(0x21, 2) Exploit]] - Works up to [[iOS]] 3.1.2&lt;br /&gt;
&lt;br /&gt;
=== [[S5L8920 (Bootrom)|Bootrom]] ===&lt;br /&gt;
* [[0x24000 Segment Overflow]] - only in [[iBoot-359.3]]&lt;br /&gt;
* [[Limera1n Exploit]]&lt;br /&gt;
&lt;br /&gt;
=== [[Kernel]] ===&lt;br /&gt;
* [[BPF STX Kernel Write Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[IOSurface Kernel Exploit]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
* [[Packet Filter Kernel Exploit]] - Works up to [[iOS]] 4.1&lt;br /&gt;
* [[HFS Legacy Volume Name Stack Buffer Overflow]] - Works up to [[iOS]] 4.2.1&lt;br /&gt;
&lt;br /&gt;
=== [[Userland]] ===&lt;br /&gt;
* [[MobileBackup Copy Exploit]] - Works up to [[iOS]] 3.1.3&lt;br /&gt;
* [[Malformed CFF Vulnerability]] - Works up to [[iOS]] 4.0.1&lt;br /&gt;
&lt;br /&gt;
== Boot Chain ==&lt;br /&gt;
[[S5L8920 (Bootrom)|Bootrom]]-&amp;gt;[[LLB]]-&amp;gt;[[iBoot]]-&amp;gt;[[Kernel]]-&amp;gt;[[Firmware|System Software]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[S5L8920 (Bootrom)]]&lt;br /&gt;
* [[S5L8920 (Hardware)]]&lt;br /&gt;
* [[S5L8920 (Hardware - Quick Notes)]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0344j/DDI0344J_cortex_a8_r3p2_trm.pdf Technical Reference Manual: Cortex A8]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:IPad_2_State_of_Jailbreak&amp;diff=16806</id>
		<title>Talk:IPad 2 State of Jailbreak</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:IPad_2_State_of_Jailbreak&amp;diff=16806"/>
		<updated>2011-03-14T02:07:05Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Is there really a need for an independent page? Why not use current events page like we have in the past? --[[User:JacobVengeance|JakeAnthraX]] 22:22, 13 March 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Seems like the jailbreak gods have already accomplished both of these tasks. Time to delete this page. :). --[[User:Iemit737|Iemit737]] 02:07, 14 March 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=IBoot_(Bootloader)&amp;diff=16777</id>
		<title>IBoot (Bootloader)</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=IBoot_(Bootloader)&amp;diff=16777"/>
		<updated>2011-03-13T01:42:47Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Revisions */  ipad 2 iBoot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:iBoot (Bootloader)}}&lt;br /&gt;
This is Apple's stage 2 bootloader for all of the iDevices. It runs what is known as [[Recovery Mode]]. It has an interactive interface which can be used over USB or serial.&lt;br /&gt;
&lt;br /&gt;
==[[Bootrom]]==&lt;br /&gt;
The bootrom also goes by the name &amp;quot;iBoot.&amp;quot; The list of bootroms can be found on [[Bootrom|their own page]].&lt;br /&gt;
&lt;br /&gt;
== Revisions ==&lt;br /&gt;
* [[iBoot-99]] (1A420 a.k.a. Prototype)&lt;br /&gt;
* [[iBoot-159]] (1.0.x)&lt;br /&gt;
* [[iBoot-204]] (1.1 and 1.1.1 Build 3A109a)&lt;br /&gt;
* [[iBoot-204.0.2]] (1.1.1 Build 3A110a)&lt;br /&gt;
* [[iBoot-204.2.9]] (1.1.2)&lt;br /&gt;
* [[iBoot-204.3.14]] (1.1.3 and 1.1.4)&lt;br /&gt;
* [[iBoot-204.3.16]] (1.1.5)&lt;br /&gt;
* [[iBoot-320.20]] (2.0.x)&lt;br /&gt;
* [[iBoot-385.22]] (2.1 and 2.1.1)&lt;br /&gt;
* [[iBoot-385.49]] (2.2 and 2.2.1)&lt;br /&gt;
* [[iBoot-596.24]] (3.0 and 3.0.1)&lt;br /&gt;
* [[iBoot-636.65]] (3.1)&lt;br /&gt;
* [[iBoot-636.66]] (3.1.1 and 3.1.2)&lt;br /&gt;
* [[iBoot-636.66.33]] (3.1.3)&lt;br /&gt;
* [[iBoot-817.28]] (3.2)&lt;br /&gt;
* [[iBoot-817.29]] (3.2.1 and 3.2.2)&lt;br /&gt;
* [[iBoot-872]] (4.0 Beta 1)&lt;br /&gt;
* [[iBoot-889.3]] (4.0 Beta 2)&lt;br /&gt;
* [[iBoot-889.12]] (4.0 Beta 3)&lt;br /&gt;
* [[iBoot-889.19]] (4.0 Beta 4)&lt;br /&gt;
* [[iBoot-889.24]] (4.0.x)&lt;br /&gt;
* [[iBoot-931.18.1]] (4.1 Beta 1)&lt;br /&gt;
* [[iBoot-931.18.27]] (4.1 Builds 8B117 and 8B118)&lt;br /&gt;
* [[iBoot-931.44.21]] (4.1 Build 8M89)&lt;br /&gt;
* [[iBoot-931.67]] (4.2 Beta 1)&lt;br /&gt;
* [[iBoot-931.71.13]] (4.2 Beta 3)&lt;br /&gt;
* [[iBoot-931.71.16]] (4.2 GM and 4.2.1 Builds 8C148, 8C148a, and 8C154)&lt;br /&gt;
* [[iBoot-931.72.14]] (4.2.5 and 4.2.6)&lt;br /&gt;
* [[iBoot-1072.33~1]] (4.3 Beta 1)&lt;br /&gt;
* [[iBoot-1072.49]] (4.3 Beta 3)&lt;br /&gt;
* [[iBoot-1072.59]] (4.3 Build 8F191)&lt;br /&gt;
&lt;br /&gt;
==Commands used as an exploit vector==&lt;br /&gt;
* '''diags''': Until 2.0 beta 6, the [[diags]] command would jump to code at the address provided to it. For example, if you sent &amp;quot;diags 0x9000000&amp;quot;, it would directly jump to the code at 0x9000000. There is now a check that only allows engineering devices to utilize this backdoor.&lt;br /&gt;
* '''arm7_go''': For firmware 2.1.1, the [[N72ap|iPod touch 2G]] iBoot contains the [[ARM7 Go]] command, which could be used to run a payload on the ARM7 in the device.&lt;br /&gt;
&lt;br /&gt;
==OpeniBoot==&lt;br /&gt;
There is an open source version of iBoot being made so that Linux on the iPhone will work. You can check out the source [http://github.com/planetbeing/iphonelinux/tree/master/openiboot here]. It is VERY useful if you are ever reversing iBoot and do not feel like finding out what certain hardware registers are yourself.&lt;br /&gt;
&lt;br /&gt;
==Remappings==&lt;br /&gt;
 // n88 (3GS)&lt;br /&gt;
 0x4FF00000 =&amp;gt; 0x0&lt;br /&gt;
 0x40000000 =&amp;gt; 0xC0000000&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[iBoot (Enums)]]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:SHSH&amp;diff=16141</id>
		<title>Talk:SHSH</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:SHSH&amp;diff=16141"/>
		<updated>2011-02-15T00:46:19Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* 3.1.x for iPod touch 2G */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== iDevices affected ==&lt;br /&gt;
&lt;br /&gt;
Just to make sure (I don't have these devices): The [[N82ap|iPhone 3G]] (even the newer MC model) and the [[N72ap|iPod Touch 2nd generation]] (also newer models) don't have shsh checks. (I'm not talking about the new &amp;quot;soft&amp;quot; check.) Can someone confirm this? I always thought these mentioned newer devices also have this certificate check in the [[Bootrom]] built-in. But as someone removed my listed 3G (with a question mark), I assume no [[N82ap|3G]] has this check. What is actually the difference between the old and the new [[Bootrom]] then? Maybe someone can explain how this certificate check works exactly and which software part is doing it. Thanks. -- [[User:Http|http]] 11:25, 20 July 2010 (UTC)&lt;br /&gt;
:There's definitely no SHSH checking in the [[N82ap|iPhone 3G]] bootrom. If I'm not mistaken, its bootrom can't even read IMG3 files.&lt;br /&gt;
&lt;br /&gt;
:I'm pretty sure the iPod touch 2G bootrom ''does'' check SHSHs, but only the one supplied in the IPSW; its restore process doesn't require getting a new SHSH from Apple's server. --[[User:Dialexio|&amp;lt;span style=&amp;quot;color:#C20; font-weight:normal;&amp;quot;&amp;gt;Dialexio&amp;lt;/span&amp;gt;]] 20:08, 20 July 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Firmware 3.1(.1) ==&lt;br /&gt;
&lt;br /&gt;
What's the difference between 3.1 and 3.1.1? Were both released at the same time? Or is 3.1 just a &amp;quot;short form&amp;quot; for 3.1.1? If yes, we should always write the full name. -- [[User:Http|http]] 21:58, 20 July 2010 (UTC)&lt;br /&gt;
:3.1 was released for iPhones, while 3.1.1 was released for iPod touches. Other than that (and the build numbers), they're basically the same thing. --[[User:Dialexio|&amp;lt;span style=&amp;quot;color:#C20; font-weight:normal;&amp;quot;&amp;gt;Dialexio&amp;lt;/span&amp;gt;]] 23:25, 20 July 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Apple still signing 4.0.1 -- conspiracy? ==&lt;br /&gt;
&lt;br /&gt;
It seems very un-apple for them to continue signing this firmware. Does anyone have any technical reasons/guesses as to why they are doing this?&lt;br /&gt;
&lt;br /&gt;
I think it's sort of a truce -- in fear of yet another security problem being exploited and requiring a 4.0.3, and possibly de-incentivize the search for exploits. Possibly even more far fetched is an experiment to see if there is a boost in sales of people trying to get jailbreakable devices. Anyone have ideas? [[User:Iemit737|Iemit737]] 17:50, 15 August 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:My guess is that because many users upgrade without thinking or saving shsh try to jailbreak at some point in time. Because very many users did a jailbreak by this simple page, Apple would create lots of unsatisfied users. After Antennagate having more unsatisfied users, or those returning their device just to try again wouldn't be good for Apple. Also, I think 4.1 will be released soon (less than a month probably), so they can close signing then. -- [[User:Http|http]] 18:56, 15 August 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Good point -- lots of first time jail breakers and possible device returns and otherwise angry people. It still seems very unorthodox for them, being the evil iEmpire and all. I can't wait to see what exploits will be uncovered in 4.1. [[User:Iemit737|Iemit737]] 20:43, 15 August 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:It seems like Apple continues signing for the previously-issued firmware if the update is of a hotfix nature. (Remember that 3.0.1 was a hotfix for an SMS character vulnerability, and Apple continued signing for both 3.0 and 3.0.1 until 3.1 came along.) The only reason I can think of is they probably rushed the fix out of the door without testing thoroughly, so perhaps their attitude is &amp;quot;we tested this but not rigorously, so feel free to downgrade if it botches something up?&amp;quot; --[[User:Dialexio|&amp;lt;span style=&amp;quot;color:#C20; font-weight:normal;&amp;quot;&amp;gt;Dialexio&amp;lt;/span&amp;gt;]] 21:13, 15 August 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==4.1 - Apple signing now?==&lt;br /&gt;
I believe they are signing the 4.1 GM seed and it does not have expirations or UDID restrictions, and works with windows iTunes, no? Which means if the final ipsw is the same, they will have been signing it since September 1. Albeit the GM is still considered apple confidential... But at the same time they are surely signing some kind of 4.1 for foxconn to put on touch 4G's... [[User:Iemit737|Iemit737]] 19:39, 4 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Yes, they are probably signing 4.1 already, but we cannot confirm that, as we don't have any ipt4 yet and d/l of 4.1 is not possible for any other device yet. That's why I've put the product release date as start date. Regarding GM and final: even if the code is the same, it's probably a different ipsw and therefore a different shsh required. I don't know how beta signing works in detail. -- [[User:Http|http]] 22:06, 4 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::They're signing 4.1 GM. Just make sure to backup your SHSHs. --[[User:desertsn0w|desertsn0w]] 22:48, 4 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Soft-SHSH checks ==&lt;br /&gt;
&lt;br /&gt;
Since iTunes 9.2 (I think) SHSH are checked for iPhones 3G also, but only through iTunes, not by the phone's [[bootrom]]. iTunes 9.2 (I think) was the version that was introduced together with iOS 4.0. But I have a report that iOS 3.1.3 can be installed with iTunes 10. I don't know what his hosts file looks like, but he cannot have SHSH backup on Cydia, because those were issued only since iOS 4.0 (correct?). Does this mean that iTunes checks SHSH only if firmware is &amp;gt;= 4.0? If yes, this would mean that you could downgrade a 3G to any pre-4.0 firmware without using redsn0w. -- [[User:Http|http]] 18:40, 19 October 2010 (UTC)&lt;br /&gt;
:These were introduced at the same time as [[iOS] 4.0. I believe they kernel checks they are present and valid. If i'm correct this may mean system's like [[PwnageTool]] can patch out the checks. --[[User:GreySyntax|GreySyntax]] 19:13, 19 October 2010 (UTC)&lt;br /&gt;
::So the new SHSH checks are done by the kernel since iOS 4.0! I always thought it was done by iTunes. Reading the blog of the [[iPhone Dev Team]] again seems to confirm that. Aha. -- [[User:Http|http]] 19:44, 19 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== iOS 4.2 SHSH for Apple TV ==&lt;br /&gt;
As I see iOS 4.2 for Apple TV is still signed. I could save the SHSH of my new Apple TV 2G and I can restore it without any SHSH blobs from Saurik or TinyUmbrella to iOS 4.2.  {{unsigned|Christoph|9:05, January 7, 2011}}&lt;br /&gt;
:Puzzling, maybe they are still signed, but Apple doesn't require them for restore... --[[User:Balloonhead66|Balloonhead66]] 23:18, 7 January 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== 3.1.x for iPod touch 2G ==&lt;br /&gt;
&lt;br /&gt;
I need someone with an [[n72ap|iPod touch 2G]] ([[iBoot-240.4|old bootrom]]) to verify this... I believe Apple actually introduced soft SHSH checks with iOS 3.1.1 for the iPod touch 2G. Further evidence includes my inability to restore to iOS 3.1.1 and 3.1.2 (unless I use SHSHs that I apparently saved, or a custom IPSW), and iTunes says it will verify the restore with Apple. I know that Apple was still signing iOS 3.1.1 and 3.1.2 when they released iOS 3.1.3, though. Is anyone able to back up my info? '''Do not respond with &amp;quot;No, Apple introduced the SHSH check with 4.0&amp;quot; unless you have tested this yourself.''' --[[User:Dialexio|&amp;lt;span style=&amp;quot;color:#C20; font-weight:normal;&amp;quot;&amp;gt;Dialexio&amp;lt;/span&amp;gt;]] 01:55, 14 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I had thought there was something weird going on with this. I was guessing that iTunes phone'd home to Apple to see if the firmware was acceptable/current/safe before restoring it [provided the IPSW has the right tags to indicate it is a production firmware]. I think, but it is probably wrong, that when you point the your hosts file to Saurik he mimicks the response that the firmware is acceptable but does not actually give hashes for it. On the other hand I'm probably totally wrong because I remember tinyumbrella let you save hashes for 3.1.x.  [[User:Iemit737|Iemit737]] 00:46, 15 February 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=NOR&amp;diff=16117</id>
		<title>NOR</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=NOR&amp;diff=16117"/>
		<updated>2011-02-14T00:01:39Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: being ultra picky technical. :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOR typically refers to the NOR flash chip the application processor boots from. The baseband also uses a NOR flash.&lt;br /&gt;
&lt;br /&gt;
==How to Access==&lt;br /&gt;
This can be accessed using a patched iBoot or a kernel hack. It can possibly be dumped using /dev/kmem&lt;br /&gt;
&lt;br /&gt;
==Memory Map==&lt;br /&gt;
hope I did this right heh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 width=100%&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;&amp;lt;b&amp;gt;Offset&amp;lt;/b&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;&amp;lt;b&amp;gt;Description&amp;lt;/b&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;0x0&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;Configuration Data&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''0x0''': &amp;quot;2GMI&amp;quot; fourcc&amp;lt;br&amp;gt;&lt;br /&gt;
'''0x4''': Block Size (0x40)&amp;lt;br&amp;gt;&lt;br /&gt;
'''0x8''': Images Section Location Offset&amp;lt;br&amp;gt;&lt;br /&gt;
'''0xC''': Images Section Location (In blocks)&amp;lt;br&amp;gt;&lt;br /&gt;
'''0x10''': Images Section Length&amp;lt;br&amp;gt;&lt;br /&gt;
'''0x30''': Checksum of this config data&amp;lt;br&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;0x4000&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;[[NOR (SysCfg)|SysCfg]] Section&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;0x8000&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;[[NOR (Firmware Images)|Images]] Section&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;0xFC000&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;[[NOR (NVRAM)|NVRAM]] Section&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;0xFE000&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td width=50%&amp;gt;&amp;lt;center&amp;gt;[[NOR (NVRAM)|NVRAM]] Section (copy)&amp;lt;/center&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
* [[M68ap|iPhone]] -- some CFI compliant parallel nor&lt;br /&gt;
* [[N82ap|iPhone 3G]] -- 1MB SPI NOR flash&lt;br /&gt;
* [[N18ap|iPod touch 3G]] and beyond -- The NOR is replaced with a dedicated partition of NAND&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Jailbreak_(S5L8920%2B)&amp;diff=16101</id>
		<title>Jailbreak (S5L8920+)</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Jailbreak_(S5L8920%2B)&amp;diff=16101"/>
		<updated>2011-02-13T05:04:30Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Apple TV 2G */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When the [[N88ap|iPhone 3GS]] was initially released, Apple did not have enough time to fix the [[0x24000 Segment Overflow]] in the [[S5L8920 (Bootrom)|S5L8920]]. However, in order to flash an exploited [[LLB]] and jailbreak the iPhone 3GS, '''one''' of the following needs to be done:&lt;br /&gt;
* Find a new [[iBoot]] exploit every time a new firmware is out.&lt;br /&gt;
* Find a way to bypass the [[ECID]] checks.&lt;br /&gt;
* Use a bootrom exploit that allows unsigned code execution via USB (2 of them were finally found by Geohot and Chronic Dev Team).&lt;br /&gt;
&lt;br /&gt;
This also applies to the iPhone 3GS with [[iBoot-359.3.2|the new bootrom]], [[N18ap|iPod touch 3G]] and later devices, except a bootrom exploit for the normal boot-chain or a library based jailbreak payload (similar to [[Star]]) is needed as well.&lt;br /&gt;
&lt;br /&gt;
==ECID==&lt;br /&gt;
Apple added a new tag to the [[IMG3 File Format]] called ECID. The ECID is ''unique'' to each phone, and its signature is being checked. With this method, Apple attempts to block downgrades once newer firmware becomes available, unless you have a dump of your old firmware's unique IMG3 or signed certificate. Therefore, iBoot exploits won't be so useful for tethered jailbreaks, because such exploits will be closed in new firmwares. [http://iphonejtag.blogspot.com/2009/06/ecid-field-downgrades-no-dice.html].&lt;br /&gt;
&lt;br /&gt;
The issue with this is that, even with the [[0x24000 Segment Overflow]] still in bootrom, an [[iBoot]] exploit was still needed to actually flash the exploited [[LLB]]. Apple uses this ECID stuff to block downgrading iBoot to a vulnerable version. It was resolved when Geohot released his [[limera1n]] tool, which used a bootrom exploit to upload an unsigned iBoot. Still the problem remains with newer devices with [[0x24000 Segment Overflow|0x24000]] fixed - tampering with firmware makes such jailbreak tethered unless some other exploit is used. &lt;br /&gt;
&lt;br /&gt;
There are methods to help keep your downgrading ability, though.&lt;br /&gt;
&lt;br /&gt;
* If it was cached prior to 3.1's release, 3GS owners were able save a file which contains the signature of the 3.0 [[iBSS]] containing their [[ECID]], using the [http://purplera1n.com/ purplera1n website]. A tool has not been created to incorporate this file into a fully signed iBSS, however. &lt;br /&gt;
* Saurik's servers are actively caching the necessary files. [http://www.saurik.com/id/12#howto Instructions] to use the servers are included.&lt;br /&gt;
* The [[SHSH]] associated with an ECID can be also saved by running [[TinyUmbrella]]. [[TinyUmbrella]] allows the user to restore to whatever version is associated with that [[SHSH]] file permanently. This is based on the aforementioned service [[Saurik]] provides remotely from [[Cydia Server|his server(s)]].&lt;br /&gt;
&lt;br /&gt;
==Jailbreak tools ==&lt;br /&gt;
===[[K66ap |Apple TV 2G]]===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| [[Jailbreak]] Tool&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;| Works with [[firmware]]...&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.1&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.2&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.2.1&lt;br /&gt;
|-&lt;br /&gt;
| [[redsn0w]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[limera1n]]&lt;br /&gt;
| {{partial|no package management GUI}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Greenpois0n (jailbreak)|greenpois0n]]&lt;br /&gt;
| {{partial|no package management GUI}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|-&lt;br /&gt;
| [[PwnageTool]]&lt;br /&gt;
| {{partial|no package management GUI}}&lt;br /&gt;
| {{partial|Restore from a custom firmware with unofficial bundle&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[sn0wbreeze]]&lt;br /&gt;
| {{partial|no package management GUI}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Seas0nPass]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]].&lt;br /&gt;
&lt;br /&gt;
===[[K48ap|iPad]]===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| [[Jailbreak]] Tool&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;| Works with [[firmware]]...&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 3.2&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 3.2.1&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 3.2.2&lt;br /&gt;
|style=&amp;quot;width:150px;&amp;quot;| 4.2.1&lt;br /&gt;
|-&lt;br /&gt;
| [[Spirit]]&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Star]]&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[limera1n]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Greenpois0n (jailbreak)|greenpois0n]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|RC4 and earlier}}&lt;br /&gt;
| {{yes|RC5}}&lt;br /&gt;
|-&lt;br /&gt;
| [[redsn0w]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|0.9.6b2}}&lt;br /&gt;
| {{yes|0.9.6rc8&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; or 0.9.7b6&amp;lt;sup&amp;gt;1 2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| [[PwnageTool]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|4.1-4.1.3}}&lt;br /&gt;
| {{partial|Restore from a custom firmware with unofficial bundle&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| [[sn0wbreeze]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|2.1}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; If [[SHSH]]s were saved for iOS 4.2b3 and if you have a developer access to its IPSW, [[Jailbreak Monte]] can be used.&lt;br /&gt;
&lt;br /&gt;
===[[N88ap|iPhone 3GS]]===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| [[Jailbreak]] Tool&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;| Works with [[firmware]]...&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 3.0&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 3.0.1&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 3.1&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 3.1.2&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 3.1.3&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 4.0&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 4.0.1&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 4.0.2&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 4.1&lt;br /&gt;
|style=&amp;quot;width:90px;&amp;quot;| 4.2.1&lt;br /&gt;
|-&lt;br /&gt;
| [[purplera1n]]&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[redsn0w]]&lt;br /&gt;
| {{yes|0.8}}&lt;br /&gt;
| {{yes|0.8}}&lt;br /&gt;
| {{yes|0.9.2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; or 0.9.3&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{yes|0.9.2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; or 0.9.3&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|0.9.6b2}}&lt;br /&gt;
| {{yes|0.9.6rc8&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| [[blackra1n]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Spirit]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Star]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[PwnageTool]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{partial|Restore from a custom firmware&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{yes|3.1.4&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{partial|Restore from a custom firmware&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{partial|Restore from a custom firmware with unofficial firmware bundle&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{yes|4.1-4.1.3}}&lt;br /&gt;
| {{yes|4.1.3&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| [[sn0wbreeze]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{partial|1.4&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; or 2.0.2&amp;lt;sup&amp;gt;1 2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{partial|1.5.1&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; or 2.0.2&amp;lt;sup&amp;gt;1 2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{partial|1.7&amp;lt;sup&amp;gt;1 2&amp;lt;/sup&amp;gt; or 2.0.2&amp;lt;sup&amp;gt;1 2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{partial|2.0.2&amp;lt;sup&amp;gt;1 2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{yes|2.1}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[limera1n]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Greenpois0n (jailbreak)|greenpois0n]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|RC4 and earlier}}&lt;br /&gt;
| {{yes|RC5}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]] on devices with the [[iBoot-359.3.2|new bootrom]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Only applicable for devices with the [[iBoot-359.3|old bootrom]]. Requires the device to have signature checks disabled (pwned).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; Requires an unofficial firmware bundle.&lt;br /&gt;
&lt;br /&gt;
===[[N90ap|iPhone 4]]===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| [[Jailbreak]] Tool&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Works with [[firmware]]...&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.0&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.0.1&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.0.2&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.1&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.2.1&lt;br /&gt;
|-&lt;br /&gt;
| [[Star]]&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[limera1n]]&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Greenpois0n (jailbreak)|greenpois0n]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|RC4 and earlier}}&lt;br /&gt;
| {{yes|RC5}}&lt;br /&gt;
|-&lt;br /&gt;
| [[redsn0w]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|0.9.6b2}}&lt;br /&gt;
| {{yes|0.9.6rc8&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; or 0.9.7b6&amp;lt;sup&amp;gt;1 2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| [[PwnageTool]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|4.1-4.1.3}}&lt;br /&gt;
| {{partial|With unofficial firmware bundle&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| [[sn0wbreeze]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|2.1}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; If [[SHSH]]s were saved for iOS 4.2b3 and if you have a developer access to its IPSW, [[Jailbreak Monte]] can be used.&lt;br /&gt;
&lt;br /&gt;
===[[N18ap|iPod touch 3G]]===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| [[Jailbreak]] Tool&lt;br /&gt;
!colspan=&amp;quot;7&amp;quot;| Works with [[firmware]]...&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 3.1.1&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 3.1.2&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 3.1.3&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.0&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.0.2&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.1&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.2.1&lt;br /&gt;
|-&lt;br /&gt;
| [[blackra1n]]&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[redsn0w]]&lt;br /&gt;
| {{yes|0.9.2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; or 0.9.3&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{yes|0.9.2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; or 0.9.3&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|0.9.6b2}}&lt;br /&gt;
| {{yes|0.9.6rc8&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Spirit]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Star]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[sn0wbreeze]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|2.0.2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{partial|2.0.2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{partial|1.7&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; or 2.0.2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{partial|2.0.2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{yes|2.1}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[limera1n]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Greenpois0n (jailbreak)|greenpois0n]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|RC4 and earlier}}&lt;br /&gt;
| {{yes|RC5}}&lt;br /&gt;
|-&lt;br /&gt;
| [[PwnageTool]]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes|4.1-4.1.3}}&lt;br /&gt;
| {{partial|With unofficial firmware bundle&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]].&lt;br /&gt;
&lt;br /&gt;
===[[N81ap |iPod touch 4G]]===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;| [[Jailbreak]] Tool&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;| Works with [[firmware]]...&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.1 (both builds)&lt;br /&gt;
|style=&amp;quot;width:100px;&amp;quot;| 4.2.1&lt;br /&gt;
|-&lt;br /&gt;
| [[redsn0w]]&lt;br /&gt;
| {{yes|0.9.4b2}}&lt;br /&gt;
| {{yes|0.9.6rc8&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; or 0.9.7b6&amp;lt;sup&amp;gt;1 2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| [[limera1n]]&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Greenpois0n (jailbreak)|greenpois0n]]&lt;br /&gt;
| {{yes|RC4 and earlier}}&lt;br /&gt;
| {{yes|RC5}}&lt;br /&gt;
|-&lt;br /&gt;
| [[PwnageTool]]&lt;br /&gt;
| {{yes|4.1-4.1.3}}&lt;br /&gt;
| {{partial|With unofficial firmware bundle&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| [[sn0wbreeze]]&lt;br /&gt;
| {{yes|2.1}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; If [[SHSH]]s were saved for iOS 4.2b3 and if you have a developer access to its IPSW, [[Jailbreak Monte]] can be used.&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Firmware&amp;diff=16100</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Firmware&amp;diff=16100"/>
		<updated>2011-02-13T05:03:08Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: Greenpois0n RC6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Latest Apple download links can be found [http://www.itunes.com/version here].&lt;br /&gt;
&lt;br /&gt;
==[[Apple TV]]==&lt;br /&gt;
===[[K66ap|Apple TV (2nd generation)]]===&lt;br /&gt;
'''NOTE:''' The version in parentheses is what the Apple TV reports on TV.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;200&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;150&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;100&amp;quot;| Publicly available virgin [[jailbreak]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 4.1 (4.0)&lt;br /&gt;
| [[Mojave 8M89 (Apple TV 2G)|Mojave 8M89]]&lt;br /&gt;
| [http://appldnld.apple.com/AppleTV/061-8940.20100926.Tvtnz/AppleTV2,1_4.1_8M89_Restore.ipsw AppleTV2,1_4.1_8M89_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;68647d6ce163fc20891ca5bcff647c8eecc2b8d9&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 253,759,976&lt;br /&gt;
|-&lt;br /&gt;
| 4.2 (4.1)&lt;br /&gt;
| [[jasper 8C150 (Apple TV 2G)|Jasper 8C150]]&lt;br /&gt;
| [http://appldnld.apple.com/AppleTV/061-8747.20101122.Vgtr5/AppleTV2,1_4.2_8C150_Restore.ipsw AppleTV2,1_4.2_8C150_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;58f9ab479783dad3dff3834452abc2917aaef2a5&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 279,991,056&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.1 (4.1.1)&lt;br /&gt;
| [[jasper 8C154 (Apple TV 2G)|Jasper 8C154]]&lt;br /&gt;
| [http://appldnld.apple.com/AppleTV/061-9978.20101214.gmabr/AppleTV2,1_4.2.1_8C154_Restore.ipsw AppleTV2,1_4.2.1_8C154_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;c2b1adea595afa2b9caf633f0a820d3b66424dbf&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 280,052,510&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]] only.&lt;br /&gt;
&lt;br /&gt;
==[[iPad]]==&lt;br /&gt;
===[[K48ap|iPad (1st generation)]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| [[X-Gold 608#Known iPad Firmware Versions|Baseband]] (3G only)&lt;br /&gt;
!width=&amp;quot;200&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;150&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;100&amp;quot;| Publicly available virgin [[jailbreak]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 3.2&lt;br /&gt;
| [[Wildcat 7B367 (iPad)|Wildcat 7B367]]&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; | [[6.15.00]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPad/061-7987.20100403.mjiTr/iPad1,1_3.2_7B367_Restore.ipsw iPad1,1_3.2_7B367_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;172e8297af74b91971a802e6ad137c891f553099&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 478,959,325&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.1&lt;br /&gt;
| [[Wildcat 7B405 (iPad)|Wildcat 7B405]]&lt;br /&gt;
| [http://appldnld.apple.com/iPad/061-8282.20100713.vgtgh/iPad1,1_3.2.1_7B405_Restore.ipsw iPad1,1_3.2.1_7B405_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;de0a2b64cd335d48fb4abc9ed8700f5dbdf768ca&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 479,012,625&lt;br /&gt;
|-&lt;br /&gt;
| 3.2.2&lt;br /&gt;
| [[Wildcat 7B500 (iPad)|Wildcat 7B500]]&lt;br /&gt;
| [http://appldnld.apple.com/iPad/061-8801.20100811.CvfR5/iPad1,1_3.2.2_7B500_Restore.ipsw iPad1,1_3.2.2_7B500_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;68b613f78581d36eab96aa5a007001dff142baa3&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hotfix to prevent malicious misuse of [[Star]]'s exploits.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 479,001,595&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.1&lt;br /&gt;
| [[Jasper 8C148 (iPad)|Jasper 8C148]]&lt;br /&gt;
| [[7.10.00]]&lt;br /&gt;
| [http://appldnld.apple.com/iPad/061-9857.20101122.VGthy/iPad1,1_4.2.1_8C148_Restore.ipsw iPad1,1_4.2.1_8C148_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;8717b3bedc925b587566442ad375aa65d857e79a&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 578,084,840&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]] only.&lt;br /&gt;
&lt;br /&gt;
==[[iPhone]]==&lt;br /&gt;
===[[M68ap|iPhone]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| [[Baseband Firmware]]&lt;br /&gt;
!width=&amp;quot;210&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;140&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;99&amp;quot;| Publicly available virgin [[jailbreak]]?&lt;br /&gt;
!width=&amp;quot;91&amp;quot;| Publicly available virgin [[unlock]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 1.0&lt;br /&gt;
| [[Alpine 1A420]]&lt;br /&gt;
| [http://img399.imageshack.us/i/iphone2go0.jpg/ 03.06.01_G]&lt;br /&gt;
| iphoneproto.zip&lt;br /&gt;
| &amp;lt;code&amp;gt;6e798e906c6590a7521ef89b731569be6d05b3aa&amp;lt;/code&amp;gt;&lt;br /&gt;
| Prototype; [http://forums.macrumors.com/showthread.php?t=627449 macrumors]&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 109,813,128&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.0&lt;br /&gt;
| Heavenly 1A543a&lt;br /&gt;
| 03.11.02_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-3538.20070629.B7vXa/iPhone1,1_1.0_1A543a_Restore.ipsw iPhone1,1_1.0_1A543a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;fb8bb3ee2e9a997affbb97868599f2995c78209c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial US shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 95,604,348&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.1&lt;br /&gt;
| Heavenly 1C25&lt;br /&gt;
| 03.12.06_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-3614.20070731.Nt6Y7/iPhone1,1_1.0.1_1C25_Restore.ipsw iPhone1,1_1.0.1_1C25_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;a00b85a7a55d62a94be5fbf5effbc42fd63f3097&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 95,627,958&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.2&lt;br /&gt;
| Heavenly 1C28&lt;br /&gt;
| 03.14.08_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-3823.20070821.vormd/iPhone1,1_1.0.2_1C28_Restore.ipsw iPhone1,1_1.0.2_1C28_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;7f5c0ff1f84a0202b75a55c3fcb362e415334d1e&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 95,627,324&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| Snowbird 3A109a&lt;br /&gt;
| 04.01.13_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-3883.20070927.In76t/iPhone1,1_1.1.1_3A109a_Restore.ipsw iPhone1,1_1.1.1_3A109a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;d441dd1c71ce18f25d8fc4faa71c1e6eaa02d02c&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 159,668,150&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.2&lt;br /&gt;
| Oktoberfest 3B48b&lt;br /&gt;
| 04.02.13_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4037.20071107.5Bghn/iPhone1,1_1.1.2_3B48b_Restore.ipsw iPhone1,1_1.1.2_3B48b_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;797c02e7d660940e8d9a16cc7229ccf3f67dd8b1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial Euro shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 167,927,501&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Little Bear 4A93&lt;br /&gt;
| 04.03.13_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4061.20080115.4Fvn7/iPhone1,1_1.1.3_4A93_Restore.ipsw iPhone1,1_1.1.3_4A93_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;b3dec7580bd00dc4faf28449d9618ef40aeacc96&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 169,950,551&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.4&lt;br /&gt;
| Little Bear 4A102&lt;br /&gt;
| 04.04.05_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4313.20080226.Sw39i/iPhone1,1_1.1.4_4A102_Restore.ipsw iPhone1,1_1.1.4_4A102_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;000811bac096011b50ebf6ec1ec2285b62fda4cb&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 169,946,442&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| [[Big Bear 5A347 (iPhone)|Big Bear 5A347]]&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;| 04.05.04_G&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4956.20080710.V50OI/iPhone1,1_2.0_5A347_Restore.ipsw iPhone1,1_2.0_5A347_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;9c510a3cfce789fa5f92a8f763c231bac82ff6d4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot; {{yes|[[BootNeuter]]}}&lt;br /&gt;
| 228,768,637&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| [[Big Bear 5B108 (iPhone)|Big Bear 5B108]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5135.20080729.Vfgtr/iPhone1,1_2.0.1_5B108_Restore.ipsw iPhone1,1_2.0.1_5B108_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;61de6a2bd6ceddc9ecabad1671b91a59b3824bc4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 254,048,068&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.2&lt;br /&gt;
| [[Big Bear 5C1 (iPhone)|Big Bear 5C1]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5246.20080818.2V0hO/iPhone1,1_2.0.2_5C1_Restore.ipsw iPhone1,1_2.0.2_5C1_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;b84b57bea919bdc720287ec908c1378e7d7b5e1b&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 253,589,000&lt;br /&gt;
|-&lt;br /&gt;
| 2.1&lt;br /&gt;
| [[Sugar Bowl 5F136 (iPhone)|Sugar Bowl 5F136]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5202.20080909.gkbEj/iPhone1,1_2.1_5F136_Restore.ipsw iPhone1,1_2.1_5F136_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;353b7745767b85932e14e262e69463620939bdf7&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 242,171,241&lt;br /&gt;
|-&lt;br /&gt;
| 2.2&lt;br /&gt;
| [[Timberline 5G77 (iPhone)|Timberline 5G77]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5779.20081120.Pt5yH/iPhone1,1_2.2_5G77_Restore.ipsw iPhone1,1_2.2_5G77_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;cbfc6ff886ce89868a55547b9fb980dbf92e6418&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 257,576,980&lt;br /&gt;
|-&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| [[SUTimberline 5H11 (iPhone)|SUTimberline 5H11]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5830.20090127.Mmni6/iPhone1,1_2.2.1_5H11_Restore.ipsw iPhone1,1_2.2.1_5H11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;43b95ebe1e51f8d30eae916053396595c08440d3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 257,593,705&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| [[Kirkwood 7A341 (iPhone)|Kirkwood 7A341]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6580.20090617.XsP76/iPhone1,1_3.0_7A341_Restore.ipsw iPhone1,1_3.0_7A341_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;2afd3f8ede17390737f508473ed205506a0bd23f&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 240,394,111&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.1&lt;br /&gt;
| [[Kirkwood 7A400 (iPhone)|Kirkwood 7A400]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6974.20090731.Cf4Tg/iPhone1,1_3.0.1_7A400_Restore.ipsw  iPhone1,1_3.0.1_7A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;34c391fbbc7b31b159372766de39ce5c9cc26ebb&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hotfix for an SMS exploit.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 240,439,502&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| [[Northstar 7C144 (iPhone)|Northstar 7C144]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6605.20090909.PQ3ws/iPhone1,1_3.1_7C144_Restore.ipsw iPhone1,1_3.1_7C144_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;b7b5f436f81c6f855410e8b44a3d432ccaacd6fc&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 252,536,460&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPhone)|Northstar 7D11]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7268.20091008.32pNe/iPhone1,1_3.1.2_7D11_Restore.ipsw iPhone1,1_3.1.2_7D11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;e4a1171542dbbd3093516d9c02047b9f7e143050&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 252,515,888&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPhone)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7481.20100202.4orot/iPhone1,1_3.1.3_7E18_Restore.ipsw iPhone1,1_3.1.3_7E18_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;eab23a7f8d2a17cb71046c50fc5f67ec390a3c2b&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 238,319,275&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===[[N82ap|iPhone 3G]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| [[X-Gold 608#Known iPhone Firmware Versions|Baseband]]&lt;br /&gt;
!width=&amp;quot;210&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;140&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;99&amp;quot;| Publicly available virgin [[jailbreak]]?&lt;br /&gt;
!width=&amp;quot;90&amp;quot;| Publicly available virgin [[unlock]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| [[Big Bear 5A345 (iPhone 3G)|Big Bear 5A345]]&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | [[1.45.00]]&lt;br /&gt;
| No download available&lt;br /&gt;
|&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; {{partial|Upgrade to 2.2}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| [[Big Bear 5A347 (iPhone 3G)|Big Bear 5A347]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-4955.20080710.bgt53/iPhone1,2_2.0_5A347_Restore.ipsw iPhone1,2_2.0_5A347_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;af9506ca0034e462674f9f59c5406f159eaf9fc1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 235,957,125&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| [[Big Bear 5B108 (iPhone 3G)|Big Bear 5B108]]&lt;br /&gt;
| [[1.48.02]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5134.20080729.Q2W3E/iPhone1,2_2.0.1_5B108_Restore.ipsw iPhone1,2_2.0.1_5B108_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;e81c7ac7e334a3e9d81b3b47894bfaa1ec495482&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 261,224,227&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.2&lt;br /&gt;
| [[Big Bear 5C1 (iPhone 3G)|Big Bear 5C1]]&lt;br /&gt;
| [[2.08.01]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5241.20080818.t5Fv3/iPhone1,2_2.0.2_5C1_Restore.ipsw iPhone1,2_2.0.2_5C1_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;bef7fef954293046420fbcf947379839178a195b&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 260,761,030&lt;br /&gt;
|-&lt;br /&gt;
| 2.1&lt;br /&gt;
| [[Sugar Bowl 5F136 (iPhone 3G)|Sugar Bowl 5F136]]&lt;br /&gt;
| [[2.11.07]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5198.20080909.K3294/iPhone1,2_2.1_5F136_Restore.ipsw iPhone1,2_2.1_5F136_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;c6957dcbf2a95ccfd6dce374a727b1b7700a9043&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 249,341,655&lt;br /&gt;
|-&lt;br /&gt;
| 2.2&lt;br /&gt;
| [[Timberline 5G77 (iPhone 3G)|Timberline 5G77]]&lt;br /&gt;
| [[2.28.00]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5778.20081120.Aqw4R/iPhone1,2_2.2_5G77_Restore.ipsw iPhone1,2_2.2_5G77_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;f67f8b2b842428bf89456cda0c2d5cf954d111a4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[Ultrasn0w|yellowsn0w]]}}&lt;br /&gt;
| 258,342,348&lt;br /&gt;
|-&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| [[SUTimberline 5H11 (iPhone 3G)|SUTimberline 5H11]]&lt;br /&gt;
| [[2.30.03]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5828.20090127.aQLi8/iPhone1,2_2.2.1_5H11_Restore.ipsw iPhone1,2_2.2.1_5H11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;e0098e6fab5c90b59e067e03ae3ccd4a7cd0f39c&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{partial|Upgrade to 3.0}}&lt;br /&gt;
| 258,359,073&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| [[Kirkwood 7A341 (iPhone 3G)|Kirkwood 7A341]]&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | [[4.26.08]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6578.20090617.VfgtU/iPhone1,2_3.0_7A341_Restore.ipsw iPhone1,2_3.0_7A341_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;94f1fb43de12bff0f168ce690b7e794cc6220ae3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; {{yes|[[ultrasn0w]]}}&lt;br /&gt;
| 241,229,233&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.1&lt;br /&gt;
| [[Kirkwood 7A400 (iPhone 3G)|Kirkwood 7A400]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6972.20090731.Zx3Rr/iPhone1,2_3.0.1_7A400_Restore.ipsw  iPhone1,2_3.0.1_7A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;a148ff39fa4dea499e7a9dd007b63e90c4f56666&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hotfix for an SMS exploit.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 241,274,617&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| [[Northstar 7C144 (iPhone 3G)|Northstar 7C144]]&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | [[5.11.07]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6600.20090909.AwndZ/iPhone1,2_3.1_7C144_Restore.ipsw iPhone1,2_3.1_7C144_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;9b3b3c148170b012012278efda9ff5c38282d559&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; {{yes|[[blacksn0w]] or [[ultrasn0w]]}}&lt;br /&gt;
| 253,361,339&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPhone 3G)|Northstar 7D11]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7265.20091008.Xsd32/iPhone1,2_3.1.2_7D11_Restore.ipsw iPhone1,2_3.1.2_7D11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;b1a6ab2771bb5da372ba75a8fa3e1d72b71359d0&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 253,340,786&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPhone 3G)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| [[5.12.01]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7468.20100202.pbnrt/iPhone1,2_3.1.3_7E18_Restore.ipsw iPhone1,2_3.1.3_7E18_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;f5950afca546f93e281ba3cdb08bc0cfed7f0896&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[ultrasn0w]]}}&lt;br /&gt;
| 239,139,281&lt;br /&gt;
|-&lt;br /&gt;
| 4.0&lt;br /&gt;
| [[Apex 8A293 (iPhone 3G)|Apex 8A293]]&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; | [[5.13.04]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone4/061-7436.20100621.58Yt4/iPhone1,2_4.0_8A293_Restore.ipsw iPhone1,2_4.0_8A293_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;ee1eba9281b902d7ff3f24d50f9aebff0df27f92&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; {{yes|[[ultrasn0w]]}}&lt;br /&gt;
| 306,274,631&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.1&lt;br /&gt;
| [[Apex 8A306 (iPhone 3G)|Apex 8A306]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-8616.20100715.phnt4/iPhone1,2_4.0.1_8A306_Restore.ipsw iPhone1,2_4.0.1_8A306_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;940bd2b36c646f6673419eab661ac1f13248e592&amp;lt;/code&amp;gt;&lt;br /&gt;
| New formula to calculate bars. Otherwise, it's the same as 4.0.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 320,237,975&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.2&lt;br /&gt;
| [[Apex 8A400 (iPhone 3G)|Apex 8A400]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-8802.20100811.XcfpR/iPhone1,2_4.0.2_8A400_Restore.ipsw iPhone1,2_4.0.2_8A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;ee2bc74719170a7a2440b593b6f300727c930c69&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hotfix to prevent malicious misuse of [[Star]]'s exploits.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 320,216,794&lt;br /&gt;
|-&lt;br /&gt;
| 4.1&lt;br /&gt;
| [[Baker 8B117 (iPhone 3G)|Baker 8B117]]&lt;br /&gt;
| [[5.14.02]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-7932.20100908.3fgt5/iPhone1,2_4.1_8B117_Restore.ipsw iPhone1,2_4.1_8B117_Restore.ipsw]&lt;br /&gt;
|&amp;lt;code&amp;gt;d87bab469dd1146ab83ddcc23f03b3164d7e09d4&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{partial|Upgrade baseband to [[6.15.00]]}}&lt;br /&gt;
| 323,137,556&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.1&lt;br /&gt;
| [[Jasper 8C148 (iPhone 3G)|Jasper 8C148]]&lt;br /&gt;
| [[5.15.04]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-9853.20101122.Vfgt5/iPhone1,2_4.2.1_8C148_Restore.ipsw iPhone1,2_4.2.1_8C148_Restore.ipsw]&lt;br /&gt;
|&amp;lt;code&amp;gt;d2ed58586e8ca2153f2e2ec585bba8afc5173378&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{partial|Upgrade baseband to [[6.15.00]]}}&lt;br /&gt;
| 338,579,762&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===[[N88ap|iPhone 3GS]]===&lt;br /&gt;
Units with the new bootrom began shipping around September 2009.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| [[X-Gold 608#Known iPhone Firmware Versions|Baseband]]&lt;br /&gt;
!width=&amp;quot;210&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;140&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Publicly available virgin [[jailbreak]]? ([[IBoot-359.3|old bootrom]])&lt;br /&gt;
!width=&amp;quot;100&amp;quot;| Publicly available virgin [[jailbreak]]? ([[IBoot-359.3.2|new bootrom]])&lt;br /&gt;
!width=&amp;quot;80&amp;quot;| Publicly available virgin [[unlock]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| [[Kirkwood 7A341 (iPhone 3GS)|Kirkwood 7A341]]&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | [[4.26.08]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6582.20090617.LlI87/iPhone2,1_3.0_7A341_Restore.ipsw iPhone2,1_3.0_7A341_Restore.ipsw] &lt;br /&gt;
| &amp;lt;code&amp;gt;d8534408c8679c830fd0c4e36ef9762c11ef73df&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; {{no|[[SHSH]]s unavailable at release}}&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; {{yes|[[ultrasn0w]]}}&lt;br /&gt;
| 312,292,933&lt;br /&gt;
|-&lt;br /&gt;
| 3.0.1&lt;br /&gt;
| [[Kirkwood 7A400 (iPhone_3GS)|Kirkwood 7A400]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6976.20090731.Vgbt5/iPhone2,1_3.0.1_7A400_Restore.ipsw  iPhone2,1_3.0.1_7A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;30006575af931e3da0521febace005152cdb8853&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hotfix for an SMS exploit.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 312,330,244&lt;br /&gt;
|-&lt;br /&gt;
| 3.1&lt;br /&gt;
| [[Northstar 7C144 (iPhone 3GS)|Northstar 7C144]]&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; | [[5.11.07]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6609.20090909.mwws4/iPhone2,1_3.1_7C144_Restore.ipsw  iPhone2,1_3.1_7C144_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;527c74f87588afa1d69c1e2c08eedc88f113013a&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; {{yes|[[blacksn0w]] or [[ultrasn0w]]}}&lt;br /&gt;
| 321,011,474&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPhone 3GS)|Northstar 7D11]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7270.20091008.phn32/iPhone2,1_3.1.2_7D11_Restore.ipsw iPhone2,1_3.1.2_7D11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;6998bb7d9e869b2d89a08853312f9457d070fb1f&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 321,015,700&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPhone 3GS)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| [[5.12.01]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7472.20100202.8tugj/iPhone2,1_3.1.3_7E18_Restore.ipsw iPhone2,1_3.1.3_7E18_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;8cb3775e62c6f72059a962bf891b4e145b965052&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|[[ultrasn0w]]}}&lt;br /&gt;
| 305,122,343&lt;br /&gt;
|-&lt;br /&gt;
| 4.0&lt;br /&gt;
| [[Apex 8A293 (iPhone 3GS)|Apex 8A293]]&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; | [[5.13.04]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone4/061-7437.20100621.5urG8/iPhone2,1_4.0_8A293_Restore.ipsw iPhone2,1_4.0_8A293_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;e065245874c73510ceb8fa4bd9388b60d46eb252&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; {{yes|[[ultrasn0w]]}}&lt;br /&gt;
| 396,281,280&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.1&lt;br /&gt;
| [[Apex 8A306 (iPhone 3GS)‎|Apex 8A306]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-8618.20100715.Zapn4/iPhone2,1_4.0.1_8A306_Restore.ipsw iPhone2,1_4.0.1_8A306_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;c2b6fb9a158547ce726baa1bf8f0558a71518fec&amp;lt;/code&amp;gt;&lt;br /&gt;
| New formula to calculate bars. Otherwise, it's the same as 4.0.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 396,322,891&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.2&lt;br /&gt;
| [[Apex 8A400 (iPhone 3GS)|Apex 8A400]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-8805.20100811.Dcr4e/iPhone2,1_4.0.2_8A400_Restore.ipsw iPhone2,1_4.0.2_8A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;61d21363ced6e006cc226f9a0a0e9c6ed8e048ab&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hotfix to prevent malicious misuse of [[Star]]'s exploits.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 396,310,640&lt;br /&gt;
|-&lt;br /&gt;
| 4.1&lt;br /&gt;
| [[Baker 8B117 (iPhone 3GS)|Baker 8B117]]&lt;br /&gt;
| [[5.14.02]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-7938.20100908.F3rCk/iPhone2,1_4.1_8B117_Restore.ipsw iPhone2,1_4.1_8B117_Restore.ipsw]&lt;br /&gt;
|&amp;lt;code&amp;gt;2d1657cd33ae23b8d4e79e41fe758d09d3c52e30&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{partial|Upgrade baseband to [[6.15.00]]}}&lt;br /&gt;
| 400,572,133&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.1&lt;br /&gt;
| [[Jasper 8C148a (iPhone 3GS)|Jasper 8C148a]]&lt;br /&gt;
| [[5.15.04]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-9895.20101122.Cdew2/iPhone2,1_4.2.1_8C148a_Restore.ipsw  iPhone2,1_4.2.1_8C148a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;2787bb9fbf18594279d05682e6fd16d2b9612a2a&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{partial|Upgrade baseband to [[6.15.00]]}}&lt;br /&gt;
| 420,813,164&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]] only.&lt;br /&gt;
&lt;br /&gt;
===[[N90ap|iPhone 4 (GSM model)]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| [[XMM 6180#Known Firmware Versions|Baseband]]&lt;br /&gt;
!width=&amp;quot;210&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;140&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Publicly available virgin [[jailbreak]]?&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Publicly available virgin [[unlock]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 4.0&lt;br /&gt;
| [[Apex 8A293 (iPhone 4)|Apex 8A293]]&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; | [[1.59.00]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone4/061-7380.20100621,Vfgb5/iPhone3,1_4.0_8A293_Restore.ipsw iPhone3,1_4.0_8A293_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;171c2a3995fa149f2a369ccd87f82c5c30da3f88&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; {{Yes|[[ultrasn0w]]}}&lt;br /&gt;
| 607,363,121&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.1&lt;br /&gt;
| [[Apex 8A306 (iPhone 4)|Apex 8A306]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-8619.20100715.4Pnsx/iPhone3,1_4.0.1_8A306_Restore.ipsw iPhone3,1_4.0.1_8A306_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;a9cf20679273b7e502ab384854ba96cc2a54d532&amp;lt;/code&amp;gt;&lt;br /&gt;
| New formula to calculate bars. Otherwise, it's the same as 4.0.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 607,380,127&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.2&lt;br /&gt;
| [[Apex 8A400 (iPhone 4)|Apex 8A400]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-8807.20100811.3Edre/iPhone3,1_4.0.2_8A400_Restore.ipsw iPhone3,1_4.0.2_8A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;19eb071cdb9f1601b106825d0a16b1449c6eef8c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hotfix to prevent malicious misuse of [[Star]]'s exploits.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 607,375,880&lt;br /&gt;
|-&lt;br /&gt;
| 4.1&lt;br /&gt;
| [[Baker 8B117 (iPhone 4)|Baker 8B117]]&lt;br /&gt;
| [[2.10.04]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-7939.20100908.Lcyg3/iPhone3,1_4.1_8B117_Restore.ipsw iPhone3,1_4.1_8B117_Restore.ipsw]&lt;br /&gt;
|&amp;lt;code&amp;gt;a3f8a333ca181146b862ca6a59c9a6e7c27eba0b&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| 618,501,195&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.1&lt;br /&gt;
| [[Jasper 8C148 (iPhone 4)|Jasper 8C148]]&lt;br /&gt;
| [[3.10.01]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-9858.20101122.Er456/iPhone3,1_4.2.1_8C148_Restore.ipsw iPhone3,1_4.2.1_8C148_Restore.ipsw]&lt;br /&gt;
|&amp;lt;code&amp;gt;366b28e9c95936bd4b11a84d54fefaf079fd6411&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| 654,550,096&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]] only.&lt;br /&gt;
&lt;br /&gt;
===[[N92ap|iPhone 4 (CDMA model)]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;120&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| Baseband&lt;br /&gt;
!width=&amp;quot;210&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;140&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Publicly available virgin [[jailbreak]]?&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Publicly available virgin [[unlock]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.6&lt;br /&gt;
| [[Phoenix 8E200 (iPhone 4 CDMA)|Phoenix 8E200]]&amp;lt;!--This is a placeholder page name. Use it if you like the name, though.--&amp;gt;&lt;br /&gt;
| [[1.51.00]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/041-0177.20110131.Pyvrz/iPhone3,3_4.2.6_8E200_Restore.ipsw iPhone3,3_4.2.6_8E200_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;f32cf46790a473a6c12f9dbd3773bf40fbdf6eee&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial Shipment&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 683,594,406&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]] only.&lt;br /&gt;
&lt;br /&gt;
==[[iPod touch]]==&lt;br /&gt;
===[[N45ap|iPod touch (1st generation)]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;168&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;200&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;150&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;100&amp;quot;| Publicly available virgin [[jailbreak]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| Snowbird 3A100a&lt;br /&gt;
| No download available&lt;br /&gt;
|&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{no}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| Snowbird 3A101a&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-3882.20070910.N8uyT/iPod1,1_1.1_3A101a_Restore.ipsw iPod1,1_1.1_3A101a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;9b0d83c7f8b4328174a3f31e0e93f60e591ae143&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 157,890,186&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| Snowbird 3A110a&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-3932.20070927.p23dD/iPod1,1_1.1.1_3A110a_Restore.ipsw iPod1,1_1.1.1_3A110a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;84bbc6ea8bf29745195bc9926c1874f7c2a36f32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 157,906,686&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.2&lt;br /&gt;
| Oktoberfest 3B48b&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-4036.20071107.9g3DF/iPod1,1_1.1.2_3B48b_Restore.ipsw iPod1,1_1.1.2_3B48b_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;108d8ffe9ea75e61cd5e57170ad388b7fa00d923&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 165,567,897&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Little Bear 4A93&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/061-4060.20080115.9Iuh5/iPod1,1_1.1.3_4A93_Restore.ipsw iPod1,1_1.1.3_4A93_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;8dca23eec69d5ae58fbf3d4a23276e46cbb2e3c6&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 173,511,411&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.4&lt;br /&gt;
| Little Bear 4A102&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-4312.20080226.Btu45/iPod1,1_1.1.4_4A102_Restore.ipsw iPod1,1_1.1.4_4A102_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;c148d1eb1c979bb6434175411d4a372103a4fdd2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 173,519,589&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.5&lt;br /&gt;
| Little Bear 4B1&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-4841.20080714.bgy8O/iPod1,1_1.1.5_4B1_Restore.ipsw iPod1,1_1.1.5_4B1_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;1b818911316e4248ee01d3ec67f9d39afc3db240&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 173,519,637&lt;br /&gt;
|-&lt;br /&gt;
| 2.0&lt;br /&gt;
| [[Big Bear 5A347 (iPod touch)|Big Bear 5A347]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;ae82798e85f9953b0f4798bad36187cb020c9d22&amp;lt;/code&amp;gt;&lt;br /&gt;
| 2.0+ is a paid upgrade series&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 233,409,573&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| [[Big Bear 5B108 (iPod touch)|Big Bear 5B108]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;a81b6e7af4b85ef436d047f9da57c0f694d8964a&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 258,660,321&lt;br /&gt;
|-&lt;br /&gt;
| 2.0.2&lt;br /&gt;
| [[Big Bear 5C1 (iPod touch)|Big Bear 5C1]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;c8b6f9fefa3f3777c56285dfe4c735b1e08a81a2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 258,201,218&lt;br /&gt;
|-&lt;br /&gt;
| 2.1&lt;br /&gt;
| [[Sugar Bowl 5F137 (iPod touch)|Sugar Bowl 5F137]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;fc7f6d0972927df502ffca47438ca75dcccffaf3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 251,155,156&lt;br /&gt;
|-&lt;br /&gt;
| 2.2&lt;br /&gt;
| [[Timberline 5G77 (iPod touch)|Timberline 5G77]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;081a7de363230fb38d0ce092cbbe42f2a50c8a5f&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 260,186,851&lt;br /&gt;
|-&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| [[SUTimberline 5H11 (iPod touch)|SUTimberline 5H11]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;fc69be9e421bc0630567184506ab771f6b7ef68b&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 260,166,688&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| [[Kirkwood 7A341 (iPod touch)|Kirkwood 7A341]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;dff2bd14931225908a360fb8e60a336f17d2dd6d&amp;lt;/code&amp;gt;&lt;br /&gt;
| 3.0+ is a paid upgrade series&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 242,458,552&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| [[Northstar 7C145 (iPod touch)|Northstar 7C145]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;c6270780c166db4c9f4f0a7fa945754a1f9fe7e8&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 249,755,862&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPod touch)|Northstar 7D11]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;7367dd9ba58a3b9777307368a0128e696fdfc9a6&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}} &lt;br /&gt;
| 249,780,497&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPod touch)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;5f897990f19d2f093b35e0813d7d77806404fb1f&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 235,678,189&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===[[N72ap|iPod touch (2nd generation)]]===&lt;br /&gt;
Units with the new bootrom have model numbers that start with &amp;quot;MC.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;168&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;200&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;150&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;95&amp;quot;| Publicly available virgin [[jailbreak]]? ([[IBoot-240.4|old bootrom]])&lt;br /&gt;
!width=&amp;quot;100&amp;quot;| Publicly available virgin [[jailbreak]]? ([[IBoot-240.5.1|new bootrom]])&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 2.1.1&lt;br /&gt;
| [[Sugar Bowl 5F138 (iPod touch 2G)|Sugar Bowl 5F138]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-5494.20080909.8i9o0/iPod2,1_2.1.1_5F138_Restore.ipsw iPod2,1_2.1.1_5F138_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;c3c700be49ad227d1152188e7c1e46b8958fd1e4&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot; {{no|Incompatible device/&lt;br /&gt;
firmware match}}&lt;br /&gt;
| 282,083,944&lt;br /&gt;
|-&lt;br /&gt;
| 2.2&lt;br /&gt;
| [[Timberline 5G77a (iPod touch 2G)|Timberline 5G77a]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/061-5358.20081120.Gtghy/iPod2,1_2.2_5G77a_Restore.ipsw iPod2,1_2.2_5G77a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;34a0a489605f34d6cc6c9954edcaaf9a050deedc&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{no}}&lt;br /&gt;
| 291,123,491&lt;br /&gt;
|-&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| [[SUTimberline 5H11a (iPod touch 2G)|SUTimberline 5H11a]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-5863.20090127.rt56K/iPod2,1_2.2.1_5H11a_Restore.ipsw iPod2,1_2.2.1_5H11a_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;9af5625ea34acdd8abeb6fce71a72651d0c815d5&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 291,140,244&lt;br /&gt;
|-&lt;br /&gt;
| 3.0&lt;br /&gt;
| [[Kirkwood 7A341 (iPod touch 2G)|Kirkwood 7A341]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;0f7fc76d9b9aa826b5ab14be9821a315d3d9dc42&amp;lt;/code&amp;gt;&lt;br /&gt;
| 3.x is a paid upgrade series&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 270,315,364&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| [[Northstar 7C145 (iPod touch 2G)|Northstar 7C145]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;e0d8800a4fc7cc5be6976ddbceb43c2d2a7120d7&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment for units with the new bootrom.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| 277,753,989&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPod touch 2G)|Northstar 7D11]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;e7c83d4a5baec0e81816ae1cd1caf9a4dc38ebf0&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 277,794,671&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPod touch 2G)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| Download Link Prohibited&lt;br /&gt;
| &amp;lt;code&amp;gt;5f4f5c01eda2f811f73167e7d1f82dbeed82367b&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 263,275,211&lt;br /&gt;
|-&lt;br /&gt;
| 4.0&lt;br /&gt;
| [[Apex 8A293 (iPod touch 2G)|Apex 8A293]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone4/061-7435.20100621.tr49t/iPod2,1_4.0_8A293_Restore.ipsw iPod2,1_4.0_8A293_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;c026c373bc535496a6f901de2ba37d4a487413bf&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 330,278,777&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.2&lt;br /&gt;
| [[Apex 8A400 (iPod touch 2G)|Apex 8A400]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-8551.20100811.Xcder/iPod2,1_4.0.2_8A400_Restore.ipsw iPod2,1_4.0.2_8A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;06a42297d94461264eb64d7c8640cc5d1c19edeb&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hotfix to prevent malicious misuse of [[Star]]'s exploits.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| 344,248,876&lt;br /&gt;
|-&lt;br /&gt;
| 4.1&lt;br /&gt;
| [[Baker 8B117 (iPod touch 2G)|Baker 8B117]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-7937.20100908.ghj4f/iPod2,1_4.1_8B117_Restore.ipsw iPod2,1_4.1_8B117_Restore.ipsw]&lt;br /&gt;
|&amp;lt;code&amp;gt;97abde6207660bd876fd476275dd526d0dcf3d19&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 348,027,174&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.1&lt;br /&gt;
| [[Jasper 8C148 (iPod touch 2G)|Jasper 8C148]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-9855.20101122.Lrft6/iPod2,1_4.2.1_8C148_Restore.ipsw iPod2,1_4.2.1_8C148_Restore.ipsw]&lt;br /&gt;
|&amp;lt;code&amp;gt;b9efddc7bb4350c237a8d3846af61bbfc8a2f647&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|363,553,480&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]] only.&lt;br /&gt;
&lt;br /&gt;
===[[N18ap|iPod touch (3rd generation)]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;168&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;200&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;150&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;99&amp;quot;| Publicly available virgin [[jailbreak]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| [[Northstar 7C145 (iPod touch 3G)|Northstar 7C145]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-7163.20090909.NtstR/iPod3,1_3.1.1_7C145_Restore.ipsw iPod3,1_3.1.1_7C145_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;a3eddbe2cf77858bae7087dc8b2035f0d3097e57&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
| 311,702,789&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| [[Northstar 7C146 (iPod touch 3G)|Northstar 7C146]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7238.20090918.23GhT/iPod3,1_3.1.1_7C146_Restore.ipsw iPod3,1_3.1.1_7C146_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;f66a7286b261137f25ddbbd84047f9a7ea181904&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes|Yes&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| 311,690,768&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.2&lt;br /&gt;
| [[Northstar 7D11 (iPod touch 3G)|Northstar 7D11]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7271.20091008.Tch23/iPod3,1_3.1.2_7D11_Restore.ipsw iPod3,1_3.1.2_7D11_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;02dcee28d788d594a2939ab564f4f183af6ccdf2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 311,740,034&lt;br /&gt;
|-&lt;br /&gt;
| 3.1.3&lt;br /&gt;
| [[SUNorthstarTwo 7E18 (iPod touch 3G)|SUNorthstarTwo 7E18]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7473.20100202.4i44t/iPod3,1_3.1.3_7E18_Restore.ipsw iPod3,1_3.1.3_7E18_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;375fd469b18bfc0b74c7cfa5b4d5945197b1d106&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 295,870,806&lt;br /&gt;
|-&lt;br /&gt;
| 4.0&lt;br /&gt;
| [[Apex 8A293 (iPod touch 3G)|Apex 8A293]]&lt;br /&gt;
| [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone4/061-7381.20100621.AzSP9/iPod3,1_4.0_8A293_Restore.ipsw iPod3,1_4.0_8A293_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;36fe02b83f87d6305db572e1644841e3cd64cc7d&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 384,178,784&lt;br /&gt;
|-&lt;br /&gt;
| 4.0.2&lt;br /&gt;
| [[Apex 8A400 (iPod touch 3G)|Apex 8A400]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-8554.20100811.Bgt54/iPod3,1_4.0.2_8A400_Restore.ipsw iPod3,1_4.0.2_8A400_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;481b21044130125b117d53207f725b70fb061855&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hotfix to prevent malicious misuse of [[Star]]'s exploits.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 384,203,993&lt;br /&gt;
|-&lt;br /&gt;
| 4.1&lt;br /&gt;
| [[Baker 8B117 (iPod touch 3G)|Baker 8B117]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-7941.20100908.sV9KE/iPod3,1_4.1_8B117_Restore.ipsw iPod3,1_4.1_8B117_Restore.ipsw]&lt;br /&gt;
|&amp;lt;code&amp;gt;3162bad4060b7a58c9942ddb483e5bd9bcc5269f&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 388,255,189&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.1&lt;br /&gt;
| [[Jasper 8C148 (iPod touch 3G)|Jasper 8C148]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-9860.20101122.Xsde3/iPod3,1_4.2.1_8C148_Restore.ipsw iPod3,1_4.2.1_8C148_Restore.ipsw]&lt;br /&gt;
|&amp;lt;code&amp;gt;1127a042c535f7cf0be950ff8946862d5fb05b36&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 408,118,620&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]] only.&lt;br /&gt;
&lt;br /&gt;
===[[N81ap|iPod touch (4th generation)]]===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;font-size: smaller; text-align: center; width: auto; table-layout: fixed; border-collapse: collapse;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;40&amp;quot;| Version&lt;br /&gt;
!width=&amp;quot;168&amp;quot;| Build&lt;br /&gt;
!width=&amp;quot;200&amp;quot;| IPSW Download URL&lt;br /&gt;
!width=&amp;quot;220&amp;quot;| SHA1 Hash&lt;br /&gt;
!width=&amp;quot;150&amp;quot;| Comments&lt;br /&gt;
!width=&amp;quot;99&amp;quot;| Publicly available virgin [[jailbreak]]?&lt;br /&gt;
!width=&amp;quot;70&amp;quot;| File Size&lt;br /&gt;
|-&lt;br /&gt;
| 4.1&lt;br /&gt;
| [[Baker 8B117 (iPod touch 4G)|Baker 8B117]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-8490.20100901.hyjtR/iPod4,1_4.1_8B117_Restore.ipsw iPod4,1_4.1_8B117_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;a464492bf6ad25d65b378c85d8b181f973ede38a&amp;lt;/code&amp;gt;&lt;br /&gt;
| Initial shipment.&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 608,360,672&lt;br /&gt;
|-&lt;br /&gt;
| 4.1&lt;br /&gt;
| [[Baker 8B118 (iPod touch 4G)|Baker 8B118]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-9344.20100922.Urgt43/iPod4,1_4.1_8B118_Restore.ipsw iPod4,1_4.1_8B118_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;331fb1342f5dab8c04cead74384a1e0fc1145952&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes}}&lt;br /&gt;
| 608,360,927&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.1&lt;br /&gt;
| [[Jasper 8C148 (iPod touch 4G)|Jasper 8C148]]&lt;br /&gt;
| [http://appldnld.apple.com/iPhone4/061-9859.20101122.$erft/iPod4,1_4.2.1_8C148_Restore.ipsw iPod4,1_4.2.1_8C148_Restore.ipsw]&lt;br /&gt;
| &amp;lt;code&amp;gt;6a890696126d0cb7f9ccd6b913ecb09cf2029820&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| {{yes|Yes}}&lt;br /&gt;
|638,177,119&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; [[Tethered jailbreak]] only.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[VFDecrypt]]&lt;br /&gt;
* [[VFDecrypt Keys]]&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
*[http://www.trejan.com/projects/ipod/ Firmware List]&lt;br /&gt;
*[http://itunes.com/version Apple Firmware XML]&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:N90AP&amp;diff=16091</id>
		<title>Talk:N90AP</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:N90AP&amp;diff=16091"/>
		<updated>2011-02-12T03:07:52Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anyone yet have more info on the White iPhone 4? As we have included this on the main page for the N90ap, but AFAIK you can't yet get a (''legal'') version. {{unsigned|DanClarkePro|14:33, 23 November 2010 (UTC)}}&lt;br /&gt;
&lt;br /&gt;
:Hey, my White iPhone 4 is insulted that you called it illegal... --[[User:Iemit737|Iemit737]] 03:07, 12 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Why dont we put &amp;quot;iPhone 4&amp;quot; as page title instead of &amp;quot;N90AP&amp;quot;? Begginers would find more easily with iPhone 4.&lt;br /&gt;
: We don't do this and never have done this. This wiki started out as a technical place, and thus it will use technical names for articles. iPhone 4 already redirects here. --[[User:Iemit737|Iemit737]] 03:07, 12 February 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Talk:HFS_Legacy_Volume_Name_Stack_Buffer_Overflow&amp;diff=15839</id>
		<title>Talk:HFS Legacy Volume Name Stack Buffer Overflow</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Talk:HFS_Legacy_Volume_Name_Stack_Buffer_Overflow&amp;diff=15839"/>
		<updated>2011-02-04T21:27:43Z</updated>

		<summary type="html">&lt;p&gt;Iemit737: /* Name */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Name==&lt;br /&gt;
I know pod2g coined this name, but this vulnerability's name is ridiculously long. I'd like to shorten it to &amp;quot;HFS Volume Name Stack Overflow,&amp;quot; provided people are OK with the name change. --[[User:Dialexio|&amp;lt;span style=&amp;quot;color:#C20; font-weight:normal;&amp;quot;&amp;gt;Dialexio&amp;lt;/span&amp;gt;]] 19:11, 4 February 2011 (UTC)&lt;br /&gt;
: I'm kind of playing devil's advocate here but the extreme length is kind of cool to show the intricacy and specificity of the exploit at hand -- and it's nice to preserve the original wording of things... But I suppose it's up to you. --[[User:Iemit737|Iemit737]] 21:27, 4 February 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Iemit737</name></author>
		
	</entry>
</feed>