Difference between revisions of "Activation Token"

From The iPhone Wiki
Jump to: navigation, search
m (Layout Activation Token)
m (Layout ActivationInfo)
Line 29: Line 29:
 
<dict>
 
<dict>
 
<key>ActivationRandomness</key>
 
<key>ActivationRandomness</key>
<string>...</string>
+
<string>(GUID)</string>
 
<key>ActivationRequiresActivationTicket</key>
 
<key>ActivationRequiresActivationTicket</key>
 
<true/>
 
<true/>
Line 45: Line 45:
 
</data>
 
</data>
 
<key>DeviceClass</key>
 
<key>DeviceClass</key>
<string>iPhone</string>
+
<string>(String ENUM "iPhone", "iPod", "iPod touch", "iPad")</string>
 
<key>IntegratedCircuitCardIdentity</key>
 
<key>IntegratedCircuitCardIdentity</key>
<string>...</string>
+
<string>(ICCID as base-10 string)</string>
 
<key>InternationalMobileEquipmentIdentity</key>
 
<key>InternationalMobileEquipmentIdentity</key>
<string>...</string>
+
<string>(IMEI as base-10 string)</string>
 
<key>InternationalMobileSubscriberIdentity</key>
 
<key>InternationalMobileSubscriberIdentity</key>
<string>...</string>
+
<string>(IMSI as base-10 string)</string>
 
<key>ModelNumber</key>
 
<key>ModelNumber</key>
 
<string>MC135</string>
 
<string>MC135</string>
 
<key>PhoneNumber</key>
 
<key>PhoneNumber</key>
<string>...</string>
+
<string>(String like "+1 (555) 555-5555")</string>
 
<key>ProductType</key>
 
<key>ProductType</key>
 
<string>iPhone2,1</string>
 
<string>iPhone2,1</string>
Line 62: Line 62:
 
<string>SIMGID1</string>
 
<string>SIMGID1</string>
 
<data>
 
<data>
...
+
(base64-encoded binary GID1)
 
</data>
 
</data>
 
<string>SIMGID2</string>
 
<string>SIMGID2</string>
 
<data>
 
<data>
...
+
(base64-encoded binary GID2)
 
</data>
 
</data>
 
<key>SIMStatus</key>
 
<key>SIMStatus</key>
<string>kCTSIMSupportSIMStatusReady</string>
+
<string>(ENUM kCTSIMSupportSIMStatusReady kCTSIMSupportSIMStatusNotReady kCTSIMSupportSIMStatusOperatorLocked)</string>
 
<key>SerialNumber</key>
 
<key>SerialNumber</key>
 
<string>...</string>
 
<string>...</string>
Line 77: Line 77:
 
<integer>...</integer>
 
<integer>...</integer>
 
<key>UniqueDeviceID</key>
 
<key>UniqueDeviceID</key>
<string>...</string>
+
<string>(hex UUID)</string>
 
</dict>
 
</dict>
 
</plist>
 
</plist>

Revision as of 03:11, 24 October 2010

iTunes gets a couple things from the phone: the DeviceID, the CHIPID, the IMEI, the ICCID, the IMSI, the phone number (!), and a few other things. This is called the "activation token" and is unique to every iPhone. This token is then sent to the Apple server (alfred.apple.com) via SSL. If the phone number can be matched to the ICCID and IMSI and if the rest of the data is correct, the server appends the WildcardTicket to the token, signs the token with Apple's private key and transmits it back to iTunes. iTunes then calls AMDeviceActivate with this signed token. The device gets the token and checks whether or not the signature matches the token. If it does and if the baseband is able to log in to a GSM network, the device is activated. A patched lockdownd circumvents these checks rather then to provide a valid token.

Layout Activation Token

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
       <key>ActivationInfoComplete</key>
       <true/>
       <key>ActivationInfoXML</key>
       
       (base64-encoded activation info here)
       
       <key>FairPlayCertChain</key>
       
       (base64-encoded cert in DER format)
       
       <key>FairPlaySignature</key>
       
       (base64-encoded signature (SHA1+RSA) of ActivationInfoXML)
       
 </dict>

Layout ActivationInfo

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
       <key>ActivationRandomness</key>
       <string>(GUID)</string>
       <key>ActivationRequiresActivationTicket</key>
       <true/>
       <key>ActivationState</key>
       <string>Unactivated</string>
       <key>BasebandMasterKeyHash</key>
       <string>(TEA key)</string>
       <key>BasebandThumbprint</key>
       <string>(TEA key)string>
       <key>BuildVersion</key>
       <string>8A306</string>
       <key>DeviceCertRequest</key>
       
       (base64 encoded cert)
       
       <key>DeviceClass</key>
       <string>(String ENUM "iPhone", "iPod", "iPod touch", "iPad")</string>
       <key>IntegratedCircuitCardIdentity</key>
       <string>(ICCID as base-10 string)</string>
       <key>InternationalMobileEquipmentIdentity</key>
       <string>(IMEI as base-10 string)</string>
       <key>InternationalMobileSubscriberIdentity</key>
       <string>(IMSI as base-10 string)</string>
       <key>ModelNumber</key>
       <string>MC135</string>
       <key>PhoneNumber</key>
       <string>(String like "+1 (555) 555-5555")</string>
       <key>ProductType</key>
       <string>iPhone2,1</string>
       <key>ProductVersion</key>
       <string>4.0.1</string>
       <string>SIMGID1</string>
       
       (base64-encoded binary GID1)
       
       <string>SIMGID2</string>
       
       (base64-encoded binary GID2)
       
       <key>SIMStatus</key>
       <string>(ENUM kCTSIMSupportSIMStatusReady kCTSIMSupportSIMStatusNotReady kCTSIMSupportSIMStatusOperatorLocked)</string>
       <key>SerialNumber</key>
       <string>...</string>
       <key>SupportsPostponement</key>
       <true/>
       <key>UniqueChipID</key>
       <integer>...</integer>
       <key>UniqueDeviceID</key>
       <string>(hex UUID)</string>
 </dict>
 </plist>

Resources