Activation

From The iPhone Wiki
Revision as of 04:50, 23 August 2010 by Dialexio (talk | contribs) (Folded in the Activate article.)
Jump to: navigation, search
iPhone with 1 signal bar and damaged hacktivation or it doesn't have an internet connection

Activation is the process by which a new (or newly restored) iPhone can get by the "Emergency Call Screen" to access the SpringBoard. The code in charge of this resides in lockdownd, which is always running on iOS and monitors the activation status of the device. Lockdownd patches (which require a jailbreak) activate your phone and obviate the need to activate legitimately through iTunes with an official carrier.

Activation is handled by https://albert.apple.com/WebObjects/ALActivation.woa/wa/deviceActivation

iTunes uses AMDeviceCopyValue on ActivationInfo to check your IMEI, ICCID, and Serial Number with Apple's database. If they match, you receive an activation token, getting you past the emergency call screen and allowing use of the iPhone. All devices actually go through this process; even the iPod touch is not activated out of the box, but connecting to iTunes will activate the iPod.

The iPhone needs a cellular data connection for the first time, after the activation in iTunes. You can make calls if an alert says "iPhone is activated." If you don't have a cellular data connection (3G, EDGE, GPRS) you won't be able to make calls and you have only 1 bar of reception. If you only have 1 bar and no carrier at the status bar, it isn't activated correctly. Installing ultrasn0w over Wi-Fi will fix it.


Here's a python script to spoof it:

import httplib,urllib
import time
ai=open("a.plist",'r')
aidata=ai.read()
conn = httplib.HTTPSConnection("albert.apple.com")
headers = {"Content-type": "application/x-www-form-urlencoded", "User-Agent": 'iTunes/7.6 (Windows; U; Microsoft Windows XP Professional Service Pack 2 (Build 2600)) DPI/96}'}
params = urllib.urlencode({
	'activation-info': aidata
	})
conn.request('POST', '/WebObjects/ALActivation.woa/wa/deviceActivation',params,headers)
response = conn.getresponse()
resdata=response.read()
f=open("arsp.xml",'w')
f.write(resdata)
#time.sleep(1)