• Source
    1. <?php
    2. $serial= $_POST["AppleSerialNumber"];
    3. $guid= $_POST["guid"];
    4. $activation= $_POST["activation-info"];
    5.  
    6. //---------------------------------------------------------------------------------------------------------------//
    7. $base_url = 'localhost';
    8.  
    9. if(!isset($activation))
    10. {
    11. echo 'Activation info not found!';
    12. exit;
    13. }
    14. //-Load-e-Decode-XML-Inf-----------------------------------------------------------------------------------------//
    15. $encodedrequest = new DOMDocument;
    16. $encodedrequest->loadXML($activation);
    17. $activationDecoded= base64_decode($encodedrequest->getElementsByTagName('data')->item(0)->nodeValue);
    18.  
    19. $decodedrequest = new DOMDocument;
    20. $decodedrequest->loadXML($activationDecoded);
    21. $nodes = $decodedrequest->getElementsByTagName('dict')->item(0)->getElementsByTagName('*');
    22.  
    23. for ($i = 0; $i < $nodes->length - 1; $i=$i+2)
    24. {
    25. switch ($nodes->item($i)->nodeValue)
    26. {
    27. case "ActivationRandomness": $activationRamdomess = $nodes->item($i + 1)->nodeValue; break;
    28. case "ActivationState": $ActivationState = $nodes->item($i + 1)->nodeValue; break;
    29. case "BasebandMasterKeyHash": $BasebandMasterKeyHash = $nodes->item($i + 1)->nodeValue; break;
    30. case "DeviceCertRequest": $deviceCertRequest=base64_decode($nodes->item($i + 1)->nodeValue); break;
    31. case "DeviceClass": $deviceClass=strtolower($nodes->item($i + 1)->nodeValue); break;
    32. case "IntegratedCircuitCardIdentity": $IntegratedCircuitCardIdentity = $nodes->item($i + 1)->nodeValue; break;
    33. case "UniqueDeviceID": $uniqueDiviceID = $nodes->item($i + 1)->nodeValue; break;
    34. case "InternationalMobileEquipmentIdentity": $imei = $nodes->item($i + 1)->nodeValue; break;
    35. case "ProductType": $ProductType = $nodes->item($i + 1)->nodeValue; break;
    36. case "ProductVersion": $ProductVersion = $nodes->item($i + 1)->nodeValue; break;
    37. case "UniqueChipID": $UniqueChipID = $nodes->item($i + 1)->nodeValue; break; }}
    38.  
    39. //-Variant-accountToken------------------------------------------------------------------------------------------//
    40. $activityURL = "https://albert.apple.com/deviceservices/activity";
    41. $certificateURL = "https://albert.apple.com/deviceservices/certifyMe";
    42. $phoneNumberNotificationURL = "https://albert.apple.com/WebObjects/ALUnbrick.woa/wa/phoneHome";
    43. $wildcardTicket = file_get_contents('certs/wildcardTicket.pem');
    44.  
    45. //-Diretorios----------------------------------------------------------------------------------------------------//
    46. $dir_decoded = 'decoded';
    47. $dir_cert = 'devicecerts';
    48. //-DECODED-------------------------------------------------------------------------------------------------------//
    49. if (!is_dir("requests/".$deviceClass.'/'.$serial.'/'.$dir_decoded.'/')){
    50. mkdir("requests/".$deviceClass.'/'.$serial.'/'.$dir_decoded.'/', 0777, true);}
    51. //-DEVICECERTS---------------------------------------------------------------------------------------------------//
    52. if (!is_dir("requests/".$deviceClass.'/'.$serial.'/'.$dir_cert.'/')){
    53. mkdir("requests/".$deviceClass.'/'.$serial.'/'.$dir_cert.'/', 0777, true);}
    54.  
    55. //-Save-XML-Request-----------------------------------------------------------------------------------------------//
    56. $encodedrequest->save('requests/'.$deviceClass.'/'.$serial.'/ActivationInfoComplete.xml');
    57. $decodedrequest->save('requests/'.$deviceClass.'/'.$serial.'/'.$dir_decoded.'/ActivationInfoXML.xml');
    58. $encodedrequest->save('requests/'.$deviceClass.'/'.$serial.'/'.$uniqueDiviceID.'.xml');
    59. $decodedrequest->save('requests/'.$deviceClass.'/'.$serial.'/'.$dir_decoded.'/'.$uniqueDiviceID.'.xml');
    60. file_put_contents('requests/'.$deviceClass.'/'.$serial.'/'.$dir_cert.'/deviceCertRequest.crt',$deviceCertRequest);
    61. file_put_contents('certs/deviceCertRequest.crt',$deviceCertRequest);
    62. //---------------------------------------------------------------------------------------------------------------//
    63. $privkey = array(file_get_contents('certs/iPhoneDeviceCA_private.pem'),"minacriss");
    64. $mycert = file_get_contents('certs/iPhoneDeviceCA.pem');
    65. $params = array('config' => 'C:/xampp/htdocs/deviceservices/deviceActivation/openssl.cnf');
    66.  
    67. $usercert = openssl_csr_sign($deviceCertRequest,$mycert,$privkey,365, $params, '6');
    68. openssl_x509_export($usercert,$certout);
    69. file_put_contents('requests/'.$deviceClass.'/'.$serial.'/'.$dir_cert.'/DeviceCertificate.crt',$certout);
    70. $deviceCertificate=base64_encode($certout);
    71. file_put_contents('requests/'.$deviceClass.'/'.$serial.'/'.$dir_cert.'/DeviceCertificate-Base64.pem',$deviceCertificate);
    72. file_put_contents('certs/DeviceCertificate.crt',$certout);
    73. file_put_contents('certs/DeviceCertificate-Base64.pem',$deviceCertificate);
    74.  
    75. //-accounToken-----------------------------------------------------------------------------------------------------//
    76. $accountToken='{'."\n\t".'"InternationalMobileEquipmentIdentity" = "'.$imei.'";'."\n\t".'"ActivityURL" = "'.$activityURL.'";'."\n\t".'"ActivationRandomness" = "'.$activationRamdomess.'";'."\n\t".'"UniqueDeviceID" = "'.$uniqueDiviceID.'";'."\n\t".'"CertificateURL" = "'.$certificateURL.'";'."\n\t".'"PhoneNumberNotificationURL" = "'.$phoneNumberNotificationURL.'";'."\n\t".'"WildcardTicket" = "'.$wildcardTicket.'";'."\n".'}';
    77. file_put_contents('requests/'.$deviceClass.'/'.$serial.'/'.$dir_cert.'/accountToken.pem',$accountToken);
    78. $accountTokenBase64=base64_encode($accountToken);
    79. file_put_contents('certs/accountToken.pem',$accountToken);
    80. $pkeyid = openssl_pkey_get_private(file_get_contents("certs/private_key.pem"));
    81.  
    82. //-AccountTokenSignature-----------------------------------------------------------------------------------------//
    83. openssl_sign($accountTokenBase64, $signature, $pkeyid);
    84.  
    85. //-Free-KEY------------------------------------------------------------------------------------------------------//
    86. openssl_free_key($pkeyid);
    87. $accountTokenSignature = base64_encode($signature);
    88.  
    89. //---------------------------------------------------------------------------------------------------------------//
    90. $accountTokenCertificate_decod = file_get_contents('certs/AccountTokenCertificate.pem');
    91. $accountTokenCertificate = base64_encode($accountTokenCertificate_decod);
    92.  
    93. //-FairPlayKeyData-----------------------------------------------------------------------------------------------//
    94. $fairPlayKeyData = file_get_contents('certs/FairPlayKeyData.pem');
    95.  
    96. //-activation_record.plist---------------------------------------------------------------------------------------//
    97. $activation_record = 'file_get_contents("certs/activation_record.plist");
    98. <?xml version="1.0" encoding="UTF-8"?>
    99. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    100. <plist version="1.0">
    101. <dict>
    102. <key>AccountToken</key>
    103. <data>'.$accountTokenBase64.'</data>
    104. <key>AccountTokenCertificate</key>
    105. <data>'.$accountTokenCertificate.'</data>
    106. <key>AccountTokenSignature</key>
    107. <data>'.$accountTokenSignature.'</data>
    108. <key>DeviceCertificate</key>
    109. <data>'.$deviceCertificate.'</data>
    110. <key>FairPlayKeyData</key>
    111. <data>'.$fairPlayKeyData.'</data>
    112. <key>LDActivationVersion</key>
    113. <integer>2</integer>
    114. </dict>
    115. </plist>
    116. ';
    117. file_put_contents('requests/'.$deviceClass.'/'.$serial.'activation_record.plist',$activation_record);
    118. ?>
    119.  
    120. <!DOCTYPE html>
    121. <html>
    122. <head>
    123. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    124. <meta name="keywords" content="iTunes Store" />
    125. <meta name="description" content="iTunes Store" />
    126. <title>iPhone Activation</title>
    127. <link href="http://static.ips.apple.com/ipa_itunes/stylesheets/shared/common-min.css" charset="utf-8" rel="stylesheet" />
    128. <link href="http://static.ips.apple.com/deviceservices/stylesheets/styles.css" charset="utf-8" rel="stylesheet" />
    129. <link href="http://static.ips.apple.com/ipa_itunes/stylesheets/pages/IPAJingleEndPointErrorPage-min.css" charset="utf-8" rel="stylesheet" />
    130. <script id="protocol" type="text/x-apple-plist">
    131. <plist version="1.0">
    132. <dict>
    133. <key>'.$deviceClass.'-activation</key>
    134. <dict>
    135. <key>activation-record</key>
    136. <dict>
    137. <key>AccountToken</key>
    138. <data>'.$accountTokenBase64.'</data>
    139. <key>AccountTokenCertificate</key>
    140. <data>'.$accountTokenCertificate.'</data>
    141. <key>AccountTokenSignature</key>
    142. <data>'.$accountTokenSignature.'</data>
    143. <key>DeviceCertificate</key>
    144. <data>'.$deviceCertificate.'</data>
    145. <key>FairPlayKeyData</key>
    146. <data>'.$fairPlayKeyData.'</data>
    147. </dict>
    148. <key>ack-received</key>
    149. <false/>
    150. <key>show-settings</key>
    151. <true/>
    152. <key>unbrick</key>
    153. <false/>
    154. </dict>
    155. </dict>
    156. </plist>
    157. </script>
    158. <script>var protocolElement = document.getElementById("protocol");var protocolContent = protocolElement.innerText;iTunes.addProtocol(protocolContent);</script>
    159. </head>
    160. <body>
    161. </body>
    162. </html>
    163.  
    164. <!DOCTYPE html>
    165. <html>
    166. <head>
    167. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    168. <meta name="keywords" content="iTunes Store" />
    169. <meta name="description" content="iTunes Store" />
    170. <title>iPhone Activation</title>
    171. <link href="http://static.ips.apple.com/ipa_itunes/stylesheets/shared/common-min.css" charset="utf-8" rel="stylesheet" />
    172. <link href="http://static.ips.apple.com/deviceservices/stylesheets/styles.css" charset="utf-8" rel="stylesheet" />
    173. <link href="http://static.ips.apple.com/ipa_itunes/stylesheets/pages/IPAJingleEndPointErrorPage-min.css" charset="utf-8" rel="stylesheet" />
    174. <script id="protocol" type="text/x-apple-plist"><plist version="1.0">
    175. <dict>
    176. <key>iPhone-activation</key>
    177. <dict>
    178. <key>ack-received</key>
    179. <false/>
    180. <key>show-settings</key>
    181. <true/>
    182. <key>unbrick</key>
    183. <false/>
    184. </dict>
    185. </dict>
    186. </plist></script><script>var protocolElement = document.getElementById("protocol");var protocolContent = protocolElement.innerText;iTunes.addProtocol(protocolContent);</script></head><body><div id="jingle-page-wrapper"><div id="jingle-page-wrapper-header"><div id="secure"><img src="http://static.ips.apple.com/ipa_itunes/images/lock.png"/></div><div id="banner"><div id="apple-logo"><img src="http://static.ips.apple.com/ipa_itunes/images/apple_chrome.png"/></div><div id="carrier-logo"></div></div></div><div id="jingle-page-wrapper-content"><form method="post" id="jingle-page-form" action=https://albert.apple.com/deviceservices/deviceActivation><div id="jingle-page-content"><div id="IPAJingleEndPointErrorPage"><h1>Urime! Pajisja лshtл hapur.</h1><p>Pлr tл impostuar dhe sinkronizuar kлtл iPhone, kliko Vazhdo.</p> <p>
    187. <td class="x">Statusi i aktivizimit:</td>
    188. <td class="y"><?php echo $ActivationState; ?></td>
    189. <td class="x">Lloji i produktit:</td>
    190. <td class="y"><?php echo $ProductType; ?><td>
    191. <td class="x">Versioni iOS:</td>
    192. <td class="y"><?php echo $ProductVersion; ?></td>
    193. </table>
    194. Twitter <a href="http://www.twitter.com/ALLMyWORLD2" target="_blank" style="text-decoration:none;color:#115fbf;">@ALLMyWORLD2</a></p>
    195. </div></div></form><div id="ContinueButtonForm"><form method="post" id="ContinueButtonForm" action=http://albert.apple.com/deviceservices/showSettings/showSettings.php><div id="form-submit-buttons"><input type="submit" value="Vazhdo" id="form-submit-buttons-left"/></div></form></div></div></div><div id="jingle-page-wrapper-footer"><div id="footer"><div id="legal">Copyright &copy; 2012 Apple Inc. All rights reserved.| <a target="_blank" href="http://www.apple.com/legal/iphone/us/privacy/">Privacy Policies</a>| <a target="_blank" href="http://www.apple.com/legal/iphone/us/terms/">Terms &amp; Conditions</a></div></div></div></body></html>