1
+ <?php
2
+ $ activation = (array_key_exists ('activation-info-base64 ' , $ _POST )
3
+ ? base64_decode ($ _POST ['activation-info-base64 ' ])
4
+ : array_key_exists ('activation-info ' , $ _POST ) ? $ _POST ['activation-info ' ] : '' );
5
+
6
+ if (!isset ($ activation ) || empty ($ activation )) { exit ('make sure device is connected ' ); }
7
+
8
+
9
+ $ encodedrequest = new DOMDocument ;
10
+ $ encodedrequest ->loadXML ($ activation );
11
+ $ activationDecoded = base64_decode ($ encodedrequest ->getElementsByTagName ('data ' )->item (0 )->nodeValue );
12
+
13
+ $ decodedrequest = new DOMDocument ;
14
+ $ decodedrequest ->loadXML ($ activationDecoded );
15
+ $ nodes = $ decodedrequest ->getElementsByTagName ('dict ' )->item (0 )->getElementsByTagName ('* ' );
16
+
17
+ for ($ i = 0 ; $ i < $ nodes ->length - 1 ; $ i =$ i +2 )
18
+ {
19
+
20
+ switch ($ nodes ->item ($ i )->nodeValue )
21
+ {
22
+ case "ActivationRandomness " : $ activationRandomness = $ nodes ->item ($ i + 1 )->nodeValue ; break ;
23
+ case "DeviceClass " : $ deviceClass = $ nodes ->item ($ i + 1 )->nodeValue ; break ;
24
+ case "SerialNumber " : $ serialNumber = $ nodes ->item ($ i + 1 )->nodeValue ; break ;
25
+ case "UniqueDeviceID " : $ uniqueDiviceID = $ nodes ->item ($ i + 1 )->nodeValue ; break ;
26
+ case "MobileEquipmentIdentifier " : $ meid = $ nodes ->item ($ i + 1 )->nodeValue ; break ;
27
+ case "InternationalMobileEquipmentIdentity " : $ imei = $ nodes ->item ($ i + 1 )->nodeValue ; break ;
28
+ case "ActivationState " : $ activationState = $ nodes ->item ($ i + 1 )->nodeValue ; break ;
29
+ case "ProductVersion " : $ productVersion = $ nodes ->item ($ i + 1 )->nodeValue ; break ;
30
+ }
31
+ }
32
+
33
+
34
+ $ snLength = strlen ($ serialNumber );
35
+
36
+ if ($ snLength > 12 ){
37
+ echo "Hmmm something isn't right don't ya think? " ;
38
+ exit ();
39
+ }
40
+ if ($ snLength < 11 ){
41
+ echo "Hmmm something isn't right dont ya think? " ;
42
+ exit ();
43
+ }
44
+
45
+ $ udidLength = strlen ($ uniqueDiviceID );
46
+ if ($ udidLength < 40 ){
47
+ echo "Hmmm something isn't right don't ya think? " ;
48
+ exit ();
49
+ }
50
+ if ($ udidLength > 40 ){
51
+ echo "Hmmm something isn't right don't ya think? " ;
52
+ exit ();
53
+ }
54
+
55
+
56
+ $ devicefolder = $ deviceClass .'/ ' .$ serialNumber .'/ ' ;
57
+ if (!file_exists ($ deviceClass .'/ ' )) mkdir ($ deviceClass .'/ ' , 0777 , true );
58
+ if (!file_exists ($ devicefolder )) mkdir ($ devicefolder , 0777 , true );
59
+ $ decodedrequest ->save ($ devicefolder .'device-request-decoded.xml ' );
60
+
61
+ # -------------------------------------------- Sign account token -----------------------------------------
62
+
63
+ $ accountToken2 =
64
+ '{ ' .(isset ($ imei ) ? "\n\t" .'"InternationalMobileEquipmentIdentity" = " ' .$ imei .'"; ' : '' ).'
65
+ ' .(isset ($ meid ) ? "\n\t" .'"MobileEquipmentIdentifier" = " ' .$ meid .'"; ' : '' ).
66
+ "\n\t" .'"ActivityURL" = "https://albert.apple.com/deviceservices/activity"; ' .
67
+ "\n\t" .'"ActivationRandomness" = " ' .$ activationRandomness .'"; ' .
68
+ "\n\t" .'"UniqueDeviceID" = " ' .$ uniqueDiviceID .'"; ' .
69
+ "\n\t" .'"SerialNumber" = " ' .$ serialNumber .'"; ' .
70
+ "\n\t" .'"CertificateURL" = "https://albert.apple.com/deviceservices/certifyMe"; ' .
71
+ "\n\t" .'"PhoneNumberNotificationURL" = "https://albert.apple.com/deviceservices/phoneHome"; ' .
72
+ "\n\t" .'"WildcardTicket" = "MIICHAIBATALBgkqhkiG9w0BAQWgdzB1AzEAgn1X4NL5tuZIoIjDh5meADOm1sDvpHjtnI9OxfqdZlEDGLZMaeaPY6O+iD0xsB7TBEAaNS6IKhyHU2k9An41IulixP/uC3zWZOIqseSIUyRawhu7/emlH8rRXUWCRopOJks7LNaywlVGTUBGNf3LSRE4MW6fPwQkKcken0AE4QBaAJ9LFFSASxcGlMJDZKMdGYHornvS53uOn4drB5kAAYZyB0ifh20HmQABhnIHSJ+XOAczMTBWWlcAn5c9DAAAAADu7u7u7u7u75+XPgQBAAAAn5c/BAEAAACfl0AEAAAAAASBgKLIKQ5BrMkZh74IoXp54aESoz6VMZHiqvoBUIIOt/+lUqisfpGKOCqjBmE5X20sy6oTeRo9/wph/+BHPJacFE1CJfCMKITvJ2O4c8ZurHX23wOcEERvwCuSZ9gkDhVSm+veC4ZY84Cxma+owiuFquxltae//xxcj3Mv5DfUl6oAo4GdMAsGCSqGSIb3DQEBAQOBjQAwgYkCgYEA7To/ZNHoIJzBUgY0734vsgl+ACxDQ+f4quvmSrPAtgDENSZwaVrHXpF+cRKBABqkDa00YcENx2dtS1tuHLKDNn1zMZLaZRpiK9UeiMPNZL6mlg12BWLwVjlFOGED8U6pfXwOw6D/FCDRgvyGBn7wsw8sEa7AdlYmMHGmkvwgOP0CAwEAAQ==\n"; ' .
73
+ "\n" .
74
+ '} ' ;
75
+ $ accountToken =
76
+ '{ ' .(isset ($ imei ) ? "\n\t" .'"InternationalMobileEquipmentIdentity" = " ' .$ imei .'"; ' : '' ).'
77
+ ' .(isset ($ meid ) ? "\n\t" .'"MobileEquipmentIdentifier" = " ' .$ meid .'"; ' : '' ).
78
+ "\n\t" .'"ActivityURL" = "https://albert.apple.com/deviceservices/activity"; ' .
79
+ "\n\t" .'"ActivationRandomness" = " ' .$ activationRandomness .'"; ' .
80
+ "\n\t" .'"UniqueDeviceID" = " ' .$ uniqueDiviceID .'"; ' .
81
+ "\n\t" .'"SerialNumber" = " ' .$ serialNumber .'"; ' .
82
+ "\n\t" .'"CertificateURL" = "https://albert.apple.com/deviceservices/certifyMe"; ' .
83
+ "\n" .
84
+ '} ' ;
85
+
86
+ $ accountTokenBase64 =base64_encode ($ accountToken );
87
+ $ accountTokenBase642 =base64_encode ($ accountToken2 );
88
+ $ private = '-----BEGIN RSA PRIVATE KEY-----
89
+ MIICXQIBAAKBgQCzYmXsSN3d7UTU8f77wm9C0IIJAwCmAeixBwkmWxJl239RFe9P
90
+ RbOPzk0WHTiEARBXToxx4V7eZxR12kiaTG/wRWVm6Jy1okz0U8HsmGKQsJS+EvKg
91
+ rFx3FgdzclqXulBOZzBSHvAwTo+ypNPR+vhmeYeRL6HvTuZBjZQYKeDyzwIDAQAB
92
+ AoGBAKL7vzFND1CpWIXGDe9+vIpPWiaH9NngGCRoCRcxXejv4qCwtksnQDtjrMRv
93
+ 7j55nPhGZPK/WuvlakCeAKM42eZF/q2gRBeAZJNQkSHBW9d/OEt7bla92Fj+8IjP
94
+ A3cQ+eyo/KyNtF6OL9KE6ghMskKsGBkdMZkDJHMxVu+sK35pAkEA3QBbOwB4tPdK
95
+ 4w+RwufoTmmSDxTGO5uvpsBRnFQ4K0s3WfPjhumDQRBeic+HxTDY72O1/iDpTbL9
96
+ pTW4f5qeswJBAM/K108a370DybA87FYVvMDOGBJsudIzLLhNj4eP4pO2+Dai955Y
97
+ qXTF1ntlOX7lD73QYFyrfrvMqWj43i3laXUCQFUymvkPAHm7T+pjCS1bW+pGtqEL
98
+ wDQgm8GsKIocyZ6fG5KY/CD5irkdh2SXVd8GKst25CU5KNfkZfY31I2U3RMCQQC4
99
+ DqGHNXPH1ooZrO1fF2QZmLSj5WD3u1K6ciFX3/DADUtyAgq6XSjFAdUJelFigH3g
100
+ Eaq5i0L4EMJi9EbBertdAkAdMef5SNkge26nq7nylq0/mVA0sEPTA/bSAMrZDVgV
101
+ 4UBLXq12y1pQArJ/8rzkdL4x6fak50qzupAa/Jer8kie
102
+ -----END RSA PRIVATE KEY----- ' ;
103
+ $ pkeyid = openssl_pkey_get_private ($ private );
104
+ $ pkeyid2 = openssl_pkey_get_private ($ private );
105
+
106
+ openssl_sign ($ accountToken , $ signature , $ pkeyid );
107
+ openssl_free_key ($ pkeyid );
108
+
109
+ openssl_sign ($ accountToken2 , $ signature2 , $ pkeyid2 );
110
+ openssl_free_key ($ pkeyid2 );
111
+ # -------------------------------------------------------------------------------------------------
112
+
113
+
114
+ $ accountTokenSignature = base64_encode ($ signature );
115
+ $ accountTokenSignature2 = base64_encode ($ signature2 );
116
+ $ accountTokenCertificateBase64 = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURaekNDQWsrZ0F3SUJBZ0lCQWpBTkJna3Foa2lHOXcwQkFRVUZBREI1TVFzd0NRWURWUVFHRXdKVlV6RVQKTUJFR0ExVUVDaE1LUVhCd2JHVWdTVzVqTGpFbU1DUUdBMVVFQ3hNZFFYQndiR1VnUTJWeWRHbG1hV05oZEdsdgpiaUJCZFhSb2IzSnBkSGt4TFRBckJnTlZCQU1USkVGd2NHeGxJR2xRYUc5dVpTQkRaWEowYVdacFkyRjBhVzl1CklFRjFkR2h2Y21sMGVUQWVGdzB3TnpBME1UWXlNalUxTURKYUZ3MHhOREEwTVRZeU1qVTFNREphTUZzeEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFLRXdwQmNIQnNaU0JKYm1NdU1SVXdFd1lEVlFRTEV3eEJjSEJzWlNCcApVR2h2Ym1VeElEQWVCZ05WQkFNVEYwRndjR3hsSUdsUWFHOXVaU0JCWTNScGRtRjBhVzl1TUlHZk1BMEdDU3FHClNJYjNEUUVCQVFVQUE0R05BRENCaVFLQmdRREZBWHpSSW1Bcm1vaUhmYlMyb1BjcUFmYkV2MGQxams3R2JuWDcKKzRZVWx5SWZwcnpCVmRsbXoySkhZdjErMDRJekp0TDdjTDk3VUk3ZmswaTBPTVkwYWw4YStKUFFhNFVnNjExVApicUV0K25qQW1Ba2dlM0hYV0RCZEFYRDlNaGtDN1QvOW83N3pPUTFvbGk0Y1VkemxuWVdmem1XMFBkdU94dXZlCkFlWVk0d0lEQVFBQm80R2JNSUdZTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1CMEcKQTFVZERnUVdCQlNob05MK3Q3UnovcHNVYXEvTlBYTlBIKy9XbERBZkJnTlZIU01FR0RBV2dCVG5OQ291SXQ0NQpZR3UwbE01M2cyRXZNYUI4TlRBNEJnTlZIUjhFTVRBdk1DMmdLNkFwaGlkb2RIUndPaTh2ZDNkM0xtRndjR3hsCkxtTnZiUzloY0hCc1pXTmhMMmx3YUc5dVpTNWpjbXd3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUY5cW1yVU4KZEErRlJPWUdQN3BXY1lUQUsrcEx5T2Y5ek9hRTdhZVZJODg1VjhZL0JLSGhsd0FvK3pFa2lPVTNGYkVQQ1M5Vgp0UzE4WkJjd0QvK2Q1WlFUTUZrbmhjVUp3ZFBxcWpubTlMcVRmSC94NHB3OE9OSFJEenhIZHA5NmdPVjNBNCs4CmFia29BU2ZjWXF2SVJ5cFhuYnVyM2JSUmhUekFzNFZJTFM2alR5Rll5bVplU2V3dEJ1Ym1taWdvMWtDUWlaR2MKNzZjNWZlREF5SGIyYnpFcXR2eDNXcHJsanRTNDZRVDVDUjZZZWxpblpuaW8zMmpBelJZVHh0UzZyM0pzdlpEaQpKMDcrRUhjbWZHZHB4d2dPKzdidFcxcEZhcjBaakY5L2pZS0tuT1lOeXZDcndzemhhZmJTWXd6QUc1RUpvWEZCCjRkK3BpV0hVRGNQeHRjYz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= ' ;
117
+ $ fairPlayKeyData = 'LS0tLS1CRUdJTiBDT05UQUlORVItLS0tLQpBQUVBQWQxcUNvNXAyWVo2bm9pTkVsNkI4cEFKbjBQZmxudHFPVklnckJDdDJXakNMdkpCL3V0TW5lZ01sUHBXClBjWjFNQWoyVHk0aGpIQms1OCtUbmE0azZRNVBLTDdQcFJvSlFkOFNFZjFTOERNdTBFclp6bDAvT3BwK2ZtTG4KYXBtcHhXeWVRcGJ6V0c3ZGh0aDFuRmxKam9GNnhlMmMyaTlMVGdlb3UzR05GaERURGhjQlczdkRIT2dGN01wbgpnaXNsWmxDYVRpQ1JIenNERkdNNzVzSjVBK1d6bUpucWpWTXA1RDZtVzM1U1NqTVhuVFNwajRwYmh4dlJlcnV4Ck9Uak1BS254MzgwbEM2bkIycDVsRGZyemdWQ1pTMmwxSW9ETlBkbm9KMjJ4RFpSWEx5d3RpemhZU0hBYStYcGYKd3daWklvWjM3YlcwTTl3TjlVWWQxVTE5MEw1QmdSNjhxYjEyVXQzbEFnVGNjVDRzOVo2Z01ZbGNVRGZsK2Nuawo4dW5qT3lkUVNvSUtJZWZEaGRsMkRibkdaUW04eXVzRlJBTnNRR2xkYzIzeGJTU3VPRFo3UWNmbEVjWnFUcUh3CjU4TytFUllwZmExVjZVbmh2VmlJTERrRTlhbkJFTm9oSnBKeHJqcG12dkc0ZlR0YVlYWlFuOXhZbHEvQktMa1kKdXg2REdUNnFsbnpBdlJqM1dpMUxFeWVFUGNJWnYxRVVoblhPRTgxU0puTVY0RTdsLzRqdy9WOEtRdmxWR3JUVQpwZjNQYVBBbVhsK29IZGlaK3ZRc3g0VzRZT1NLbE0wVFNQM04rb3FWblRWNUNxbFJkM09vVnRYV0dZSTMyM3VnCmZrM2VHM21VLytPMFUxS3Fvd1JFTVVHMjBaWWlxbUprdVE0VmJLTHFuUnZFc2FLZ0F6RDlsbWF3WGFtOWt2QkcKOVhEUUFJK3VoSWVuSWNYVFU0dUVLMWc4NmJNYzdwaHI0WGljWFlpampmTFY0elFtOGhyNlRwWVVtWlJXY2E4YgpaZ0FIN3BKMGJtUnA1aWF6OXRaMDd2Njh5ZnkxeGVNdGxaRkwxTGRVNHRrUmdCK2ZNbnRKWU9FWkV4ei9ETkM4CjNWNWZsV0VDSDRjL1d5dU5jd0o4OGhYVWRDcW9nYjU3bEdiM0NnT0tKOU9UMEdIdXBVY1NBVDY1RU5CcEcvZXEKME1mdVR5TnovZ25HRnFYTUFWaDcwWlUvOHVuT2dIK3pMdWRKdDBkUjR0SDBLWVVjUTdFSGtPTmNKMHNwQk5vcAplYmpBM2RYeGJXaXlSd28reDJaUlp1bFI3TlhRcUFESEZRY2JXcmFZRXI5MjhveGh6SDZkZC96WlBYalBVZE9RCkN0TVRUbGE4RXlXU1p1dFVNdjJFUmFEYytrWkU2bkx1a2pKbEdrUlR1dkhNQnNzYzI0dHcwS1pDbE5FRXp4N2cKNy9Remc0d3Q2Snpsb25tTC9hOVhjSVpoYzB1QXZsTk5CK0w1LzJFeFJhdVZZSTB4U1lkYkFXK3FlWGF2M1hsZwp2VEV5MTFHakY4WmMzaXc4NkdZclhqMmx3QjRpZDJWRFFlQ2xMWGdRaTBId0tTdXkvRGk4K0JmM2dKVm1tSUFoCjUzWTVBaGY4bHUyM3VHMkJSYjlZa29UdWpLMXdzYWdVWWZOb2wxUDlZSUpFUVVOeTFOWFZaUVpNQVZ5UmJUeDcKaHREUFI5anFNK1MzcjQ4SXo3LzEwYkpuWWlKSC8zODRoT3VRR1F6NDlWbGhQbEtDRXFVS25OR1N6emlid3BITgpURkZoT1VLVDc2NFVDNmY4STExelBpWW1WbFlnRVFseVBDL0lxM0pod2M1NFNOS3hzcm9zaHZRN0swQVZ5bnVFCjhqRXgxZjlaTWtvOTU0eTU1TlhaWmh4ZWRmOTFNRklZMHQrVTFMNUp6ODcvQ1FOWnI2emdKZ2FyU2tEN244TG0KcUR1ZWV1KzBEWjdra05kdnV2b1VmNzJOamc2MDk2RG9VdHhOZURwa1NKRmFSSGNVCi0tLS0tRU5EIENPTlRBSU5FUi0tLS0tCg== ' ;
118
+ $ deviceCertificate = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4ekNDQWx5Z0F3SUJBZ0lLQklYbG4wMEdIZXppN0RBTkJna3Foa2lHOXcwQkFRVUZBREJhTVFzd0NRWUQKVlFRR0V3SlZVekVUTUJFR0ExVUVDaE1LUVhCd2JHVWdTVzVqTGpFVk1CTUdBMVVFQ3hNTVFYQndiR1VnYVZCbwpiMjVsTVI4d0hRWURWUVFERXhaQmNIQnNaU0JwVUdodmJtVWdSR1YyYVdObElFTkJNQjRYRFRFNE1EVXhOekl6Ck5EZ3pOMW9YRFRJeE1EVXhOekl6TkRnek4xb3dnWU14TFRBckJnTlZCQU1XSkRJMVJEVkZNelJETFVSRk56QXQKTkRaRVFTMUJRelZFTFVJeVJFVkJRemMwTWpBM1JqRUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWtOQgpNUkl3RUFZRFZRUUhFd2xEZFhCbGNuUnBibTh4RXpBUkJnTlZCQW9UQ2tGd2NHeGxJRWx1WXk0eER6QU5CZ05WCkJBc1RCbWxRYUc5dVpUQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUF2Nmt6V1BVRkE0REIKTzdGR1ZRbXR3blUvbVY5TTJrWkRkNmZWTmtFOUU4K0hMelp0cWNNeHRvL0FSaEVJWkhHTWdiSUcrR3llMzNQUwpTTlBPVDNOMWdMdmhRN1VMSkhlVUhQL1pvYlNPWk83OXYvMDlLd2RvV1pzWm13a3NpWnVmR01WYjYzMVIzMkw1ClFHTzZ5bkJTRXgya3JwWHpOVzJYRjAva0VlaGlGTjBDQXdFQUFhT0JsVENCa2pBZkJnTlZIU01FR0RBV2dCU3kKL2lFalJJYVZhbm5WZ1NhT2N4RFlwMHlPZERBZEJnTlZIUTRFRmdRVVc2d1BPNERLZ0NnU0FmZkRZQWJ3dzVITQpmK0F3REFZRFZSMFRBUUgvQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0lBWURWUjBsQVFIL0JCWXdGQVlJCkt3WUJCUVVIQXdFR0NDc0dBUVVGQndNQ01CQUdDaXFHU0liM1kyUUdDZ0lFQWdVQU1BMEdDU3FHU0liM0RRRUIKQlFVQUE0R0JBR08vV25MK3lhbXhMYXZMWG53VVZWQVNNUE8xOGhma3Q2RzgxNWZucWErMXhhV2tZVnY2VHZQeApjVlZvVnZmcnIvZ2IrL2hjMGdFRm1iL2tlOTJVcEwvN1I4Vm9TL2NCSUhXVm44WFU3a2J1bTVaTlVxeVdMbU9lClZ4VW5kdHptaUFhaTg3VmFNMFFFMjA3ZWpUQVBDc1YwdVppaktwdmEvS0sxZmhlYUp5dTcKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= ' ;
119
+
120
+
121
+ file_put_contents ($ productVersion .'- ' .$ serialNumber .'.html ' ,'<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="keywords" content="iTunes Store" /><meta name="description" content="iTunes Store" /><title>iPhone Activation</title><link href="http://static.ips.apple.com/ipa_itunes/stylesheets/shared/common-min.css" charset="utf-8" rel="stylesheet" /><link href="http://static.ips.apple.com/deviceservices/stylesheets/styles.css" charset="utf-8" rel="stylesheet" /><link href="http://static.ips.apple.com/ipa_itunes/stylesheets/pages/IPAJingleEndPointErrorPage-min.css" charset="utf-8" rel="stylesheet" /><link href="resources/auth_styles.css" charset="utf-8" rel="stylesheet" /><script id="protocol" type="text/x-apple-plist">
122
+ <plist version="1.0">
123
+ <dict>
124
+ <key> ' .($ deviceClass == "iPhone " ? 'iphone ' : 'device ' ).'-activation</key>
125
+ <dict>
126
+ <key>activation-record</key>
127
+ <dict>
128
+ <key>FairPlayKeyData</key>
129
+ <data> ' .$ fairPlayKeyData .'</data>
130
+ <key>AccountTokenCertificate</key>
131
+ <data> ' .$ accountTokenCertificateBase64 .'</data>
132
+ <key>DeviceCertificate</key>
133
+ <data> ' .$ deviceCertificate .'</data>
134
+ <key>AccountTokenSignature</key>
135
+ <data> ' .$ accountTokenSignature2 .'</data>
136
+ <key>AccountToken</key>
137
+ <data> ' .$ accountTokenBase642 .'</data>
138
+ </dict>
139
+ <key>unbrick</key>
140
+ <true/>
141
+ <key>show-settings</key>
142
+ <true/>
143
+ </dict>
144
+ </dict>
145
+ </plist>
146
+ </script><script>var protocolElement = document.getElementById("protocol");var protocolContent = protocolElement.innerText;iTunes.addProtocol(protocolContent);</script></head>
147
+ </html> ' );
148
+
149
+ $ response ='<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="keywords" content="iTunes Store" /><meta name="description" content="iTunes Store" /><title>iPhone Activation</title><link href="http://static.ips.apple.com/ipa_itunes/stylesheets/shared/common-min.css" charset="utf-8" rel="stylesheet" /><link href="http://static.ips.apple.com/deviceservices/stylesheets/styles.css" charset="utf-8" rel="stylesheet" /><link href="http://static.ips.apple.com/ipa_itunes/stylesheets/pages/IPAJingleEndPointErrorPage-min.css" charset="utf-8" rel="stylesheet" /><link href="resources/auth_styles.css" charset="utf-8" rel="stylesheet" /><script id="protocol" type="text/x-apple-plist">
150
+ <plist version="1.0">
151
+ <dict>
152
+ <key> ' .($ deviceClass == "iPhone " ? 'iphone ' : 'device ' ).'-activation</key>
153
+ <dict>
154
+ <key>activation-record</key>
155
+ <dict>
156
+ <key>FairPlayKeyData</key>
157
+ <data> ' .$ fairPlayKeyData .'</data>
158
+ <key>AccountTokenCertificate</key>
159
+ <data> ' .$ accountTokenCertificateBase64 .'</data>
160
+ <key>DeviceCertificate</key>
161
+ <data> ' .$ deviceCertificate .'</data>
162
+ <key>AccountTokenSignature</key>
163
+ <data> ' .$ accountTokenSignature2 .'</data>
164
+ <key>AccountToken</key>
165
+ <data> ' .$ accountTokenBase642 .'</data>
166
+ </dict>
167
+ <key>unbrick</key>
168
+ <true/>
169
+ <key>show-settings</key>
170
+ <true/>
171
+ </dict>
172
+ </dict>
173
+ </plist>
174
+ </script><script>var protocolElement = document.getElementById("protocol");var protocolContent = protocolElement.innerText;iTunes.addProtocol(protocolContent);</script></head>
175
+ </html> ' ;
176
+ echo $ response ;
177
+ exit ;
178
+ ?>
0 commit comments