Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $Activation = $_POST['activation-info']; $encodedrequest = new DOMDocument; ..
Decoded Output download
<?php
$Activation = $_POST['activation-info'];
$encodedrequest = new DOMDocument;
$encodedrequest->loadXML($Activation);
$activationDecoded= base64_decode($encodedrequest->getElementsByTagName('data')->item(0)->nodeValue);
$decodedrequest = new DOMDocument;
$decodedrequest->loadXML($activationDecoded);
$nodes = $decodedrequest->getElementsByTagName('dict')->item(0)->getElementsByTagName('*');
for ($i = 0; $i < $nodes->length - 1; $i=$i+2)
{
${$nodes->item($i)->nodeValue} = preg_match('/(true|false)/', $nodes->item($i + 1)->nodeName) ? $nodes->item($i + 1)->nodeName : $nodes->item($i + 1)->nodeValue;
switch ($nodes->item($i)->nodeValue)
{
case "ActivationState": $activationState = $nodes->item($i + 1)->nodeValue; break;
case "ActivationRandomness": $activationRandomness = $nodes->item($i + 1)->nodeValue; break;
case "DeviceCertRequest": $deviceCertRequest = $nodes->item($i + 1)->nodeValue; break;
case "DeviceClass": $deviceClass = $nodes->item($i + 1)->nodeValue; break;
case "BasebandChipID": $BasebandChipID = $nodes->item($i + 1)->nodeValue; break;
case "InternationalMobileEquipmentIdentity": $imei = $nodes->item($i + 1)->nodeValue; break;
case "MobileEquipmentIdentifier": $meid = $nodes->item($i + 1)->nodeValue; break;
case "ProductType": $ProductType = $nodes->item($i + 1)->nodeValue; break;
case "ProductVersion": $ProductVersion = $nodes->item($i + 1)->nodeValue; break;
case "OSType": $OSType = $nodes->item($i + 1)->nodeValue; break;
case "WifiAddress": $wifi = $nodes->item($i + 1)->nodeValue; break;
case "UniqueChipID": $UniqueChipID = $nodes->item($i + 1)->nodeValue; break;
case "ChipID": $chipID = $nodes->item($i + 1)->nodeValue; break;
case "BluetoothAddress": $BluetoothAddress = $nodes->item($i + 1)->nodeValue; break;
case "UniqueDeviceID": $UniqueDeviceID = $nodes->item($i + 1)->nodeValue; break;
case "SerialNumber": $serialNumber = $nodes->item($i + 1)->nodeValue; break;
case "BasebandMasterKeyHash": $BasebandMasterKeyHash = $nodes->item($i + 1)->nodeValue; break;
case "BasebandSerialNumber": $BasebandSerialNumber = $nodes->item($i + 1)->nodeValue; break;
case "BasebandChipID": $BasebandChipID = $nodes->item($i + 1)->nodeValue; break;
case "RegulatoryModelNumber": $RegulatoryModelNumber = $nodes->item($i + 1)->nodeValue; break;
case "ModelNumber": $ModelNumber = $nodes->item($i + 1)->nodeValue; break;
case "BuildVersion": $BuildVersion = $nodes->item($i + 1)->nodeValue; break;
case "mac_fg": $mac_fg = $nodes->item($i + 1)->nodeValue; break;
case "SIMStatus": $SIMStatus = $nodes->item($i + 1)->nodeValue; break;
case "UIKCertification": $UIKCertification = $nodes->item($i + 1)->nodeValue; break;
case "InternationalMobileSubscriberIdentity": $imsi = $nodes->item($i + 1)->nodeValue; break;
case "IntegratedCircuitCardIdentity": $iccid = $nodes->item($i + 1)->nodeValue; break;
}
}
function ExplodeContent($Key, $String, $Inf)
{
$Var = explode("<key>".$Key."</key>", $Inf)[1];
$Var1 = explode("<".$String.">", $Var)[1];
$Var2 = explode("</".$String.">", $Var1)[0];
return $Var2;
}
function SignActivation($Key, $Information)
{
$pkeyid = openssl_pkey_get_private($Key);
openssl_sign($Information, $signature, $pkeyid, 'sha1WithRSAEncryption');
openssl_free_key($pkeyid);
return base64_encode($signature);
}
function URLEncoded($Information)
{
return urlencode($Information);
}
function SendRequestToAlbert($Information)
{
$ch = curl_init();
$url = 'https://albert.apple.com/WebObjects/ALUnbrick.woa/wa/deviceActivation';
$post_data2 ="activation-info=".$Information;
curl_setopt($ch, CURLOPT_URL , $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
curl_setopt($ch, CURLOPT_TIMEOUT , 60);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: albert.apple.com", "Content-Type: application/x-www-form-urlencoded", "Connection: keep-alive", "Accept: *", "Accept-Language: en-US", "Content-Length: ".strlen($post_data2)));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_USERAGENT , "iOS Device Activator (MobileActivation-353.200.48)" );
curl_setopt($ch, CURLOPT_POST , 1);
curl_setopt($ch, CURLOPT_POSTFIELDS , $post_data2);
$xml_response2 = curl_exec($ch);
return $xml_response2;
}
$UCRTInfo = ExplodeContent("ActivationInfoXML", "data", $Activation);
$UCRTRkc = ExplodeContent("RKCertification", "data", $Activation);
$UCRTRks = ExplodeContent("RKSignature", "data", $Activation);
$UCRTRequest = "<?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>ActivationInfoXML</key>
<data>
".$UCRTInfo."
</data>
<key>RKCertification</key>
<data>
".$UCRTRkc."
</data>
<key>RKSignature</key>
<data>
".$UCRTRks."
</data>
</dict>
</plist>";
$url = "https://tbsc.apple.com/oob/vend";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$headers = array(
"Content-Type: application/xml",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $UCRTRequest);
$UCRT = curl_exec($curl);
file_put_contents("file", $UCRT);
curl_close($curl);
$UCRTCertificate = base64_encode($UCRT);
$FactoryKey = "-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQC3BKrLPIBabhpr+4SvuQHnbF0ssqRIQ67/1bTfArVuUF6p9sdc
v70N+r8yFxesDmpTmKitLP06szKNAO1k5JVk9/P1ejz08BMe9eAb4juAhVWdfAIy
aJ7sGFjeSL015mAvrxTFcOM10F/qSlARBiccxHjPXtuWVr0fLGrhM+/AMQIDAQAB
AoGACGW3bHHPNdb9cVzt/p4Pf03SjJ15ujMY0XY9wUm/h1s6rLO8+/10MDMEGMlE
dcmHiWRkwOVijRHxzNRxEAMI87AruofhjddbNVLt6ppW2nLCK7cEDQJFahTW9GQF
zpVRQXXfxr4cs1X3kutlB6uY2VGltxQFYsj5djv7D+A72A0CQQDZj1RGdxbeOo4X
zxfA6n42GpZavTlM3QzGFoBJgCqqVu1JQOzooAMRT+NPfgoE8+usIVVB4Io0bCUT
WLpkEytTAkEA11rzIpGIhFkPtNc/33fvBFgwUbsjTs1V5G6z5ly/XnG9ENfLblgE
obLmSmz3irvBRWADiwUx5zY6FN/Dmti56wJAdiScakufcnyvzwQZ7Rwp/61+erYJ
GNFtb2Cmt8NO6AOehcopHMZQBCWy1ecm/7uJ/oZ3avfJdWBI3fGv/kpemwJAGMXy
oDBjpu3j26bDRz6xtSs767r+VctTLSL6+O4EaaXl3PEmCrx/U+aTjU45r7Dni8Z+
wdhIJFPdnJcdFkwGHwJAPQ+wVqRjc4h3Hwu8I6llk9whpK9O70FLo1FMVdaytElM
yqzQ2/05fMb7F6yaWhu+Q2GGXvdlURiA3tY0CsfM0w==
-----END RSA PRIVATE KEY-----";
$FairPlayCertChain = (substr(chunk_split('MIIC8zCCAlygAwIBAgIKAlKu1qgdFrqsmzANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEVMBMGA1UECxMMQXBwbGUgaVBob25lMR8wHQYDVQQDExZBcHBsZSBpUGhvbmUgRGV2aWNlIENBMB4XDTIxMTAxMTE4NDczMVoXDTI0MTAxMTE4NDczMVowgYMxLTArBgNVBAMWJDE2MEQzRkExLUM3RDUtNEY4NS04NDQ4LUM1Q0EzQzgxMTE1NTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlDdXBlcnRpbm8xEzARBgNVBAoTCkFwcGxlIEluYy4xDzANBgNVBAsTBmlQaG9uZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtwSqyzyAWm4aa/uEr7kB52xdLLKkSEOu/9W03wK1blBeqfbHXL+9Dfq/MhcXrA5qU5iorSz9OrMyjQDtZOSVZPfz9Xo89PATHvXgG+I7gIVVnXwCMmie7BhY3ki9NeZgL68UxXDjNdBf6kpQEQYnHMR4z17blla9Hyxq4TPvwDECAwEAAaOBlTCBkjAfBgNVHSMEGDAWgBSy/iEjRIaVannVgSaOcxDYp0yOdDAdBgNVHQ4EFgQURyh+oArXlcLvCzG4m5/QxwUFzzMwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBaAwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBAGCiqGSIb3Y2QGCgIEAgUAMA0GCSqGSIb3DQEBBQUAA4GBAKwB9DGwHsinZu78lk6kx7zvwH5d0/qqV1+4Hz8EG3QMkAOkMruSRkh8QphF+tNhP7y93A2kDHeBSFWk/3Zy/7riB/dwl94W7vCox/0EJDJ+L2SXvtB2VEv8klzQ0swHYRV9+rUCBWSglGYlTNxfAsgBCIsm8O1Qr5SnIhwfutc4MIIDaTCCAlGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLTArBgNVBAMTJEFwcGxlIGlQaG9uZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzA0MTYyMjU0NDZaFw0xNDA0MTYyMjU0NDZaMFoxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBcHBsZSBJbmMuMRUwEwYDVQQLEwxBcHBsZSBpUGhvbmUxHzAdBgNVBAMTFkFwcGxlIGlQaG9uZSBEZXZpY2UgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPGUSsnquloYYK3Lok1NTlQZaRdZB2bLl+hmmkdfRq5nerVKc1SxywT2vTa4DFU4ioSDMVJl+TPhl3ecK0wmsCU/6TKqewh0lOzBSzgdZ04IUpRai1mjXNeT9KD+VYW7TEaXXm6yd0UvZ1y8Cxi/WblshvcqdXbSGXH0KWO5JQuvAgMBAAGjgZ4wgZswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFLL+ISNEhpVqedWBJo5zENinTI50MB8GA1UdIwQYMBaAFOc0Ki4i3jlga7SUzneDYS8xoHw1MDgGA1UdHwQxMC8wLaAroCmGJ2h0dHA6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2EvaXBob25lLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAd13PZ3pMViukVHe9WUg8Hum+0I/0kHKvjhwVd/IMwGlXyU7DhUYWdja2X/zqj7W24Aq57dEKm3fqqxK5XCFVGY5HI0cRsdENyTP7lxSiiTRYj2mlPedheCn+k6T5y0U4Xr40FXwWb2nWqCF1AgIudhgvVbxlvqcxUm8Zz7yDeJ0JFovXQhyO5fLUHRLCQFssAbf8B4i8rYYsBUhYTspVJcxVpIIltkYpdIRSIARA49HNvKK4hzjzMS/OhKQpVKw+OCEZxptCVeN2pjbdt9uzi175oVo/u6B2ArKAW17u6XEHIdDMOe7cb33peVI6TD15W4MIpyQPbp8orlXe+tA8JDCCA/MwggLboAMCAQICARcwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTA3MDQxMjE3NDMyOFoXDTIyMDQxMjE3NDMyOFoweTELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS0wKwYDVQQDEyRBcHBsZSBpUGhvbmUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjHr7wR8C0nhBbRqS4IbhPhiFwKEVgXBzDyApkY4j7/Gnu+FT86Vu3Bk4EL8NrM69ETOpLgAm0h/ZbtP1k3bNy4BOz/RfZvOeo7cKMYcIq+ezOpV7WaetkC40Ij7igUEYJ3Bnk5bCUbbv3mZjE6JtBTtTxZeMbUnrc6APZbh3aEFWGpClYSQzqR9cVNDP2wKBESnC+LLUqMDeMLhXr0eRslzhVVrE1K1jqRKMmhe7IZkrkz4nwPWOtKd6tulqz3KWjmqcJToAWNWWkhQ1jez5jitp9SkbsozkYNLnGKGUYvBNgnH9XrBTJie2htodoUraETrjIg+z5nhmrs8ELhsefAgMBAAGjgZwwgZkwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOc0Ki4i3jlga7SUzneDYS8xoHw1MB8GA1UdIwQYMBaAFCvQaUeUdgn+9GuNLkCm90dNfwheMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2Evcm9vdC5jcmwwDQYJKoZIhvcNAQEFBQADggEBAB3R1XvddE7XF/yCLQyZm15CcvJp3NVrXg0Ma0s+exQl3rOU6KD6D4CJ8hc9AAKikZG+dFfcr5qfoQp9ML4AKswhWev9SaxudRnomnoD0Yb25/awDktJ+qO3QbrX0eNWoX2Dq5eu+FFKJsGFQhMmjQNUZhBeYIQFEjEra1TAoMhBvFQe51StEwDSSse7wYqvgQiO8EYKvyemvtzPOTqAcBkjMqNrZl2eTahHSbJ7RbVRM6d0ZwlOtmxvSPcsuTMFRGtFvnRLb7KGkbQ+JSglnrPCUYb8T+WvO6q7RCwBSeJ0szT6RO8UwhHyLRkaUYnTCEpBbFhW3ps64QVX5WLP0g8wggS7MIIDo6ADAgECAgECMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBcHBsZSBJbmMuMSYwJAYDVQQLEx1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEWMBQGA1UEAxMNQXBwbGUgUm9vdCBDQTAeFw0wNjA0MjUyMTQwMzZaFw0zNTAyMDkyMTQwMzZaMGIxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBcHBsZSBJbmMuMSYwJAYDVQQLEx1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEWMBQGA1UEAxMNQXBwbGUgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOSRqQkfkdseR1DrBe1eeYQt6zaiV0xV7IsZid75S2z1B6siMALoGD74UAnTf0GomPnRymacJGsR0KO75Bsqwx+VnnoMpEeLW9QWNzPLxA9NzhRp0ckZcvVdDtV/X5vyJQO6VY9NXQ3xZDUjFUsVWR2zlPf2nJ7PULrBWFBnjwi0IPfLrCwgb3C2PwEwjLdDzw+dPfMrSSgayP7OtbkO2V4c1ss9tTqt9A8OAJILsSEWLnTVPA3bYharo3GSR1NVwa8vQbP4++NwzeajTEV+H0xrUJZBicR0YgsQg0GHM4qBsTBY7FoEMoxos48d3mVz/2deZbxJ2HafMxRloXeUyS0CAwEAAaOCAXowggF2MA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQr0GlHlHYJ/vRrjS5ApvdHTX8IXjAfBgNVHSMEGDAWgBQr0GlHlHYJ/vRrjS5ApvdHTX8IXjCCAREGA1UdIASCAQgwggEEMIIBAAYJKoZIhvdjZAUBMIHyMCoGCCsGAQUFBwIBFh5odHRwczovL3d3dy5hcHBsZS5jb20vYXBwbGVjYS8wgcMGCCsGAQUFBwICMIG2GoGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wDQYJKoZIhvcNAQEFBQADggEBAFw2mUwteLftjJvc83eb8nbSdzBPwR+Fg4UbmT1HN/Kpm0COLNSxkBLYvvRzm+7SZA/LeU802KI++Xj/a8gH7H05g4tTINM4xLG/mk8Ka/8r/FmnBQl8F0BWER5007eLIztHo9VvJOLr0bdw3w9F4SfK8W147ee1Fxeo3H4iNcol1dkP1mvUoiQjEfehrI9zgWDGG1sJL5Ky+ERI8GA4nhX1PSZnIIozavcNgs/e66Mv+VNqW2TAYzN39zoHLFbr2g8hDtq6cxlPtdk2f8GHVdmnmbkyQvvY1XGefqFStxu9k0IkEirHDx22TZxeY8hLgBdQqorV2uT80AkHN7B1dSE=', 68, "
"), 0, -2));
$ActivationInfoXMLWildcard = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<plist version=\"1.0\">
<dict>
<key>ActivationRandomness</key>
<string>BRAYAN-VILLA</string>
<key>ActivationRequiresActivationTicket</key>
<true/>
<key>ActivationState</key>
<string>Unactivated</string>
<key>BasebandActivationTicketVersion</key>
<string>V2</string>
<key>BasebandChipID</key>
<integer>".$BasebandChipID."</integer>
<key>BasebandMasterKeyHash</key>
<string>".$BasebandMasterKeyHash."</string>
<key>BasebandSerialNumber</key>
<data>
".$BasebandSerialNumber."
</data>
<key>BuildVersion</key>
<string>".$BuildVersion."</string>
<key>DeviceCertRequest</key>
<data>
".$deviceCertRequest."
</data>
<key>DeviceClass</key>
<string>iPad</string>
<key>DeviceVariant</key>
<string>A</string>
<key>FMiPAccountExists</key>
<false/>
<key>IntegratedCircuitCardIdentity</key>
<string>8935103016300053247</string>
<key>InternationalMobileEquipmentIdentity</key>
<string>354408062336653</string>
<key>InternationalMobileSubscriberIdentity</key>
<string>268030103481639</string>
<key>MobileEquipmentIdentifier</key>
<string>35440806233665</string>
<key>ModelNumber</key>
<string>".$ModelNumber."</string>
<key>ProductType</key>
<string>iPad2,1</string>
<key>ProductVersion</key>
<string>20.0</string>
<key>RegionCode</key>
<string>LZ</string>
<key>RegionInfo</key>
<string>LZ/A</string>
<key>SIMStatus</key>
<string>kCTSIMSupportSIMStatusReady</string>
<key>SupportsPostponement</key>
<false/>
<key>kCTPostponementInfoServiceProvisioningState</key>
<true/>
<key>SerialNumber</key>
<string>DNPN91NQG5MD</string>
<key>UniqueChipID</key>
<integer>6043329169056442</integer>
<key>UniqueDeviceID</key>
<string>af4d9c97979b992541224ebdfdc976dc3b5bc066</string>
</dict>
</plist>";
$ActivationInfoXMLFairPlay = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<plist version=\"1.0\">
<dict>
<key>ActivationRandomness</key>
<string>BRAYAN-VILLA</string>
<key>ActivationRequiresActivationTicket</key>
<true/>
<key>ActivationState</key>
<string>Unactivated</string>
<key>BasebandActivationTicketVersion</key>
<string>V2</string>
<key>BasebandChipID</key>
<integer>7278817</integer>
<key>BasebandMasterKeyHash</key>
<string>8CB15EE4C8002199070D9500BB8FB183B02713A5CA2A6B92DB5E75CE15536182</string>
<key>BasebandSerialNumber</key>
<data>
0xEMaVABEqT5emWk
</data>
<key>BuildVersion</key>
<string>".$BuildVersion."</string>
<key>DeviceCertRequest</key>
<data>
".$deviceCertRequest."
</data>
<key>DeviceClass</key>
<string>iPad</string>
<key>DeviceVariant</key>
<string>A</string>
<key>FMiPAccountExists</key>
<false/>
<key>InternationalMobileEquipmentIdentity</key>
<string>013423005288880</string>
<key>ModelNumber</key>
<string>".$ModelNumber."</string>
<key>ProductType</key>
<string>iPad2,1</string>
<key>ProductVersion</key>
<string>".$ProductVersion."</string>
<key>RegionCode</key>
<string>LZ</string>
<key>RegionInfo</key>
<string>LZ/A</string>
<key>SIMStatus</key>
<string>kCTSIMSupportSIMStatusNotInserted</string>
<key>SupportsPostponement</key>
<true/>
<key>kCTPostponementInfoServiceProvisioningState</key>
<true/>
<key>SerialNumber</key>
<string>C38K4AG6DTTN</string>
<key>SupportsPostponement</key>
<true/>
<key>UniqueChipID</key>
<integer>".$UniqueChipID."</integer>
<key>UniqueDeviceID</key>
<string>".$UniqueDeviceID."</string>
</dict>
</plist>";
$ActivationInfoXMLWildcardBase64 = base64_encode($ActivationInfoXMLWildcard);
$ActivationInfoXMLFairPlayBase64 = base64_encode($ActivationInfoXMLFairPlay);
$SignatureWildcard = SignActivation($FactoryKey, $ActivationInfoXMLWildcard);
$InformationEstructureWildcard = "<dict>
<key>ActivationInfoComplete</key>
<true/>
<key>ActivationInfoXML</key>
<data>".$ActivationInfoXMLWildcardBase64."</data>
<key>FairPlayCertChain</key>
<data>".$FairPlayCertChain."</data>
<key>FairPlaySignature</key>
<data>".$SignatureWildcard."</data>
</dict>";
$ActivationInfoXMLWildcardURLEncoded = URLEncoded($InformationEstructureWildcard);
$ActivationRecordWildcard = SendRequestToAlbert($ActivationInfoXMLWildcardURLEncoded);
if(!file_exists("albert.apple.com/".$serialNumber))
{
mkdir("albert.apple.com/".$serialNumber, 00777, true);
}
file_put_contents("albert.apple.com/".$serialNumber."/activation_record_tmp_wildcard", $ActivationRecordWildcard);
$getRecord = file_get_contents("albert.apple.com/".$serialNumber."/activation_record_tmp_wildcard");
$getAccountToken = ExplodeContent("AccountToken", "data", $getRecord);
$AccountTokenDecoded = base64_decode($getAccountToken);
$getWildcard = explode('"ActivationTicket" = "', $AccountTokenDecoded)[1];
if($getWildcard == NULL)
{
$getWildcard = explode('"WildcardTicket" = "', $AccountTokenDecoded)[1];
}
$WildcardTicket = explode('";', $getWildcard)[0];
if(!file_exists("Wildcards/".$serialNumber))
{
mkdir("Wildcards/".$serialNumber, 00777, true);
}
file_put_contents("Wildcards/".$serialNumber."/Wildcard.der", $WildcardTicket);
$SignatureFairPlay = SignActivation($FactoryKey, $ActivationInfoXMLFairPlay);
$InformationEstructureFairPlay = "<dict>
<key>ActivationInfoComplete</key>
<true/>
<key>ActivationInfoXML</key>
<data>".$ActivationInfoXMLFairPlayBase64."</data>
<key>FairPlayCertChain</key>
<data>".$FairPlayCertChain."</data>
<key>FairPlaySignature</key>
<data>".$SignatureFairPlay."</data>
</dict>";
$ActivationInfoXMLFairPlayURLEncoded = URLEncoded($InformationEstructureFairPlay);
$ActivationRecordFairPlay = SendRequestToAlbert($ActivationInfoXMLFairPlayURLEncoded);
file_put_contents("albert.apple.com/".$serialNumber."/activation_record_tmp_fairplay", $ActivationRecordFairPlay);
$getRecordFairPlay = file_get_contents("albert.apple.com/".$serialNumber."/activation_record_tmp_fairplay");
$AccountTokenCertificate = ExplodeContent("AccountTokenCertificate", "data", $getRecordFairPlay);
$DeviceCertificate = ExplodeContent("DeviceCertificate", "data", $getRecordFairPlay);
$FairPlayKeyData = ExplodeContent("FairPlayKeyData", "data", $getRecordFairPlay);
if($meid != NULL)
{
$What = "WildcardTicket";
}
else
{
$What = "ActivationTicket";
}
$AccountTokenCustom =
'{'.
(isset($imei) ? "
".'"InternationalMobileEquipmentIdentity" = "'.$imei.'";' : '').
($deviceType == "iPhone" ? "
".'"PhoneNumberNotificationURL" = "https://albert.apple.com/deviceservices/phoneHome";' : '').
"
".'"'.$What.'" = "'.$WildcardTicket.'";'."".
"
".'"SerialNumber" = "'.$serialNumber.'";'.
(isset($imsi) ? "
".'"InternationalMobileSubscriberIdentity" = "'.$imsi.'";' : '').
(isset($meid) ? "
".'"MobileEquipmentIdentifier" = "'.$meid.'";' : '').
"
".'"ProductType" = "'.$ProductType.'";'.
"
".'"UniqueDeviceID" = "'.$UniqueDeviceID.'";'.
"
".'"PostponementInfo" = {};'.
"
".'"ActivationRandomness" = "'.$activationRandomness.'";'.
"
".'"ActivityURL" = "https://albert.apple.com/deviceservices/activity";'.
(isset($iccid) ? "
".'"IntegratedCircuitCardIdentity" = "'.$iccid.'";' : '').
"
".
'}';
$FactoryKey2 = 'LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQ0KTUlJQ1hRSUJBQUtCZ1FDelltWHNTTjNkN1VUVThmNzd3bTlDMElJSkF3Q21BZWl4QndrbVd4SmwyMzlSRmU5UA0KUmJPUHprMFdIVGlFQVJCWFRveHg0VjdlWnhSMTJraWFURy93UldWbTZKeTFva3owVThIc21HS1FzSlMrRXZLZw0KckZ4M0ZnZHpjbHFYdWxCT1p6QlNIdkF3VG8reXBOUFIrdmhtZVllUkw2SHZUdVpCalpRWUtlRHl6d0lEQVFBQg0KQW9HQkFLTDd2ekZORDFDcFdJWEdEZTkrdklwUFdpYUg5Tm5nR0NSb0NSY3hYZWp2NHFDd3Rrc25RRHRqck1Sdg0KN2o1NW5QaEdaUEsvV3V2bGFrQ2VBS000MmVaRi9xMmdSQmVBWkpOUWtTSEJXOWQvT0V0N2JsYTkyRmorOElqUA0KQTNjUStleW8vS3lOdEY2T0w5S0U2Z2hNc2tLc0dCa2RNWmtESkhNeFZ1K3NLMzVwQWtFQTNRQmJPd0I0dFBkSw0KNHcrUnd1Zm9UbW1TRHhUR081dXZwc0JSbkZRNEswczNXZlBqaHVtRFFSQmVpYytIeFREWTcyTzEvaURwVGJMOQ0KcFRXNGY1cWVzd0pCQU0vSzEwOGEzNzBEeWJBODdGWVZ2TURPR0JKc3VkSXpMTGhOajRlUDRwTzIrRGFpOTU1WQ0KcVhURjFudGxPWDdsRDczUVlGeXJmcnZNcVdqNDNpM2xhWFVDUUZVeW12a1BBSG03VCtwakNTMWJXK3BHdHFFTA0Kd0RRZ204R3NLSW9jeVo2Zkc1S1kvQ0Q1aXJrZGgyU1hWZDhHS3N0MjVDVTVLTmZrWmZZMzFJMlUzUk1DUVFDNA0KRHFHSE5YUEgxb29ack8xZkYyUVptTFNqNVdEM3UxSzZjaUZYMy9EQURVdHlBZ3E2WFNqRkFkVUplbEZpZ0gzZw0KRWFxNWkwTDRFTUppOUViQmVydGRBa0FkTWVmNVNOa2dlMjZucTdueWxxMC9tVkEwc0VQVEEvYlNBTXJaRFZnVg0KNFVCTFhxMTJ5MXBRQXJKLzhyemtkTDR4NmZhazUwcXp1cEFhL0plcjhraWUNCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0t';
$KeyApple=base64_decode($FactoryKey2);
$PKS = openssl_pkey_get_private($KeyApple);
openssl_sign($AccountTokenCustom, $signature, $PKS);
openssl_free_key($PKS);
$AccountTokenCustomEncoded= base64_encode($AccountTokenCustom);
$AccountTokenSignature= base64_encode($signature);
if($UCRTCertificate != NULL)
{
$UniqueDeviceCertificate = "<key>UniqueDeviceCertificate</key>
<data>
".(substr(chunk_split($UCRTCertificate, 68, "
"), 0, -2))."
</data>";
}
$ActivationRecord =
'<plist version="1.0">
<dict>
<key>'.($deviceClass == "iPhone" ? 'iphone' : 'device').'-activation</key>
<dict>
<key>activation-record</key>
<dict>
<key>unbrick</key>
<true/>
<key>AccountTokenCertificate</key>
<data>
'."
".''.(substr(chunk_split($AccountTokenCertificate, 68, "
"), 0, -2)).''.'
</data>
<key>AccountToken</key>
<data>
'."
".''.(substr(chunk_split($AccountTokenCustomEncoded, 68, "
"), 0, -2)).''.'
</data>
<key>AccountTokenSignature</key>
<data>
'."
".''.(substr(chunk_split($AccountTokenSignature, 68, "
"), 0, -2)).''.'
</data>
<key>DeviceCertificate</key>
<data>
'."
".''.(substr(chunk_split($DeviceCertificate, 68, "
"), 0, -2)).''.'
</data>
<key>LDActivationVersion</key>
<integer>2</integer>
<key>FairPlayKeyData</key>
<data>
'."
".''.(substr(chunk_split($FairPlayKeyData, 68, "
"), 0, -2)).''.'
</data>
<key>DeviceConfigurationFlags</key>
<string>0</string>
'.$UniqueDeviceCertificate.'
</dict>
</dict>
</dict>
</plist>';
header('content-type: application/xml');
header('Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0');
echo $ActivationRecord;
die();
Did this file decode correctly?
Original Code
<?php
$Activation = $_POST['activation-info'];
$encodedrequest = new DOMDocument;
$encodedrequest->loadXML($Activation);
$activationDecoded= base64_decode($encodedrequest->getElementsByTagName('data')->item(0)->nodeValue);
$decodedrequest = new DOMDocument;
$decodedrequest->loadXML($activationDecoded);
$nodes = $decodedrequest->getElementsByTagName('dict')->item(0)->getElementsByTagName('*');
for ($i = 0; $i < $nodes->length - 1; $i=$i+2)
{
${$nodes->item($i)->nodeValue} = preg_match('/(true|false)/', $nodes->item($i + 1)->nodeName) ? $nodes->item($i + 1)->nodeName : $nodes->item($i + 1)->nodeValue;
switch ($nodes->item($i)->nodeValue)
{
case "ActivationState": $activationState = $nodes->item($i + 1)->nodeValue; break;
case "ActivationRandomness": $activationRandomness = $nodes->item($i + 1)->nodeValue; break;
case "DeviceCertRequest": $deviceCertRequest = $nodes->item($i + 1)->nodeValue; break;
case "DeviceClass": $deviceClass = $nodes->item($i + 1)->nodeValue; break;
case "BasebandChipID": $BasebandChipID = $nodes->item($i + 1)->nodeValue; break;
case "InternationalMobileEquipmentIdentity": $imei = $nodes->item($i + 1)->nodeValue; break;
case "MobileEquipmentIdentifier": $meid = $nodes->item($i + 1)->nodeValue; break;
case "ProductType": $ProductType = $nodes->item($i + 1)->nodeValue; break;
case "ProductVersion": $ProductVersion = $nodes->item($i + 1)->nodeValue; break;
case "OSType": $OSType = $nodes->item($i + 1)->nodeValue; break;
case "WifiAddress": $wifi = $nodes->item($i + 1)->nodeValue; break;
case "UniqueChipID": $UniqueChipID = $nodes->item($i + 1)->nodeValue; break;
case "ChipID": $chipID = $nodes->item($i + 1)->nodeValue; break;
case "BluetoothAddress": $BluetoothAddress = $nodes->item($i + 1)->nodeValue; break;
case "UniqueDeviceID": $UniqueDeviceID = $nodes->item($i + 1)->nodeValue; break;
case "SerialNumber": $serialNumber = $nodes->item($i + 1)->nodeValue; break;
case "BasebandMasterKeyHash": $BasebandMasterKeyHash = $nodes->item($i + 1)->nodeValue; break;
case "BasebandSerialNumber": $BasebandSerialNumber = $nodes->item($i + 1)->nodeValue; break;
case "BasebandChipID": $BasebandChipID = $nodes->item($i + 1)->nodeValue; break;
case "RegulatoryModelNumber": $RegulatoryModelNumber = $nodes->item($i + 1)->nodeValue; break;
case "ModelNumber": $ModelNumber = $nodes->item($i + 1)->nodeValue; break;
case "BuildVersion": $BuildVersion = $nodes->item($i + 1)->nodeValue; break;
case "mac_fg": $mac_fg = $nodes->item($i + 1)->nodeValue; break;
case "SIMStatus": $SIMStatus = $nodes->item($i + 1)->nodeValue; break;
case "UIKCertification": $UIKCertification = $nodes->item($i + 1)->nodeValue; break;
case "InternationalMobileSubscriberIdentity": $imsi = $nodes->item($i + 1)->nodeValue; break;
case "IntegratedCircuitCardIdentity": $iccid = $nodes->item($i + 1)->nodeValue; break;
}
}
function ExplodeContent($Key, $String, $Inf)
{
$Var = explode("<key>".$Key."</key>", $Inf)[1];
$Var1 = explode("<".$String.">", $Var)[1];
$Var2 = explode("</".$String.">", $Var1)[0];
return $Var2;
}
function SignActivation($Key, $Information)
{
$pkeyid = openssl_pkey_get_private($Key);
openssl_sign($Information, $signature, $pkeyid, 'sha1WithRSAEncryption');
openssl_free_key($pkeyid);
return base64_encode($signature);
}
function URLEncoded($Information)
{
return urlencode($Information);
}
function SendRequestToAlbert($Information)
{
$ch = curl_init();
$url = 'https://albert.apple.com/WebObjects/ALUnbrick.woa/wa/deviceActivation';
$post_data2 ="activation-info=".$Information;
curl_setopt($ch, CURLOPT_URL , $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
curl_setopt($ch, CURLOPT_TIMEOUT , 60);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: albert.apple.com", "Content-Type: application/x-www-form-urlencoded", "Connection: keep-alive", "Accept: *", "Accept-Language: en-US", "Content-Length: ".strlen($post_data2)));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_USERAGENT , "iOS Device Activator (MobileActivation-353.200.48)" );
curl_setopt($ch, CURLOPT_POST , 1);
curl_setopt($ch, CURLOPT_POSTFIELDS , $post_data2);
$xml_response2 = curl_exec($ch);
return $xml_response2;
}
$UCRTInfo = ExplodeContent("ActivationInfoXML", "data", $Activation);
$UCRTRkc = ExplodeContent("RKCertification", "data", $Activation);
$UCRTRks = ExplodeContent("RKSignature", "data", $Activation);
$UCRTRequest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ActivationInfoXML</key>\n\t<data>\n\t".$UCRTInfo."\n\t</data>\n\t<key>RKCertification</key>\n\t<data>\n\t".$UCRTRkc."\n\t</data>\n\t<key>RKSignature</key>\n\t<data>\n\t".$UCRTRks."\n\t</data>\n</dict>\n</plist>";
$url = "https://tbsc.apple.com/oob/vend";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$headers = array(
"Content-Type: application/xml",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $UCRTRequest);
$UCRT = curl_exec($curl);
file_put_contents("file", $UCRT);
curl_close($curl);
$UCRTCertificate = base64_encode($UCRT);
$FactoryKey = "-----BEGIN RSA PRIVATE KEY-----\nMIICWwIBAAKBgQC3BKrLPIBabhpr+4SvuQHnbF0ssqRIQ67/1bTfArVuUF6p9sdc\nv70N+r8yFxesDmpTmKitLP06szKNAO1k5JVk9/P1ejz08BMe9eAb4juAhVWdfAIy\naJ7sGFjeSL015mAvrxTFcOM10F/qSlARBiccxHjPXtuWVr0fLGrhM+/AMQIDAQAB\nAoGACGW3bHHPNdb9cVzt/p4Pf03SjJ15ujMY0XY9wUm/h1s6rLO8+/10MDMEGMlE\ndcmHiWRkwOVijRHxzNRxEAMI87AruofhjddbNVLt6ppW2nLCK7cEDQJFahTW9GQF\nzpVRQXXfxr4cs1X3kutlB6uY2VGltxQFYsj5djv7D+A72A0CQQDZj1RGdxbeOo4X\nzxfA6n42GpZavTlM3QzGFoBJgCqqVu1JQOzooAMRT+NPfgoE8+usIVVB4Io0bCUT\nWLpkEytTAkEA11rzIpGIhFkPtNc/33fvBFgwUbsjTs1V5G6z5ly/XnG9ENfLblgE\nobLmSmz3irvBRWADiwUx5zY6FN/Dmti56wJAdiScakufcnyvzwQZ7Rwp/61+erYJ\nGNFtb2Cmt8NO6AOehcopHMZQBCWy1ecm/7uJ/oZ3avfJdWBI3fGv/kpemwJAGMXy\noDBjpu3j26bDRz6xtSs767r+VctTLSL6+O4EaaXl3PEmCrx/U+aTjU45r7Dni8Z+\nwdhIJFPdnJcdFkwGHwJAPQ+wVqRjc4h3Hwu8I6llk9whpK9O70FLo1FMVdaytElM\nyqzQ2/05fMb7F6yaWhu+Q2GGXvdlURiA3tY0CsfM0w==\n-----END RSA PRIVATE KEY-----";
$FairPlayCertChain = (substr(chunk_split('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', 68, "\n\t"), 0, -2));
$ActivationInfoXMLWildcard = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<plist version=\"1.0\">\n<dict>\n\t<key>ActivationRandomness</key>\n\t<string>BRAYAN-VILLA</string>\n\t<key>ActivationRequiresActivationTicket</key>\n\t<true/>\n\t<key>ActivationState</key>\n\t<string>Unactivated</string>\n\t<key>BasebandActivationTicketVersion</key>\n\t<string>V2</string>\n\t<key>BasebandChipID</key>\n\t<integer>".$BasebandChipID."</integer>\n\t<key>BasebandMasterKeyHash</key>\n\t<string>".$BasebandMasterKeyHash."</string>\n\t<key>BasebandSerialNumber</key>\n\t<data>\n\t".$BasebandSerialNumber."\n\t</data>\n\t<key>BuildVersion</key>\n\t<string>".$BuildVersion."</string>\n\t<key>DeviceCertRequest</key>\n\t<data>\n\t".$deviceCertRequest."\n\t</data>\n\t<key>DeviceClass</key>\n\t<string>iPad</string>\n\t<key>DeviceVariant</key>\n\t<string>A</string>\n\t<key>FMiPAccountExists</key>\n\t<false/>\n\t<key>IntegratedCircuitCardIdentity</key>\n\t<string>8935103016300053247</string>\n\t<key>InternationalMobileEquipmentIdentity</key>\n\t<string>354408062336653</string>\n\t<key>InternationalMobileSubscriberIdentity</key>\n\t<string>268030103481639</string>\n\t<key>MobileEquipmentIdentifier</key>\n\t<string>35440806233665</string>\n\t<key>ModelNumber</key>\n\t<string>".$ModelNumber."</string>\n\t<key>ProductType</key>\n\t<string>iPad2,1</string>\n\t<key>ProductVersion</key>\n\t<string>20.0</string>\n\t<key>RegionCode</key>\n\t<string>LZ</string>\n\t<key>RegionInfo</key>\n\t<string>LZ/A</string>\n\t<key>SIMStatus</key>\n\t<string>kCTSIMSupportSIMStatusReady</string>\n\t<key>SupportsPostponement</key>\n\t<false/>\n\t<key>kCTPostponementInfoServiceProvisioningState</key>\n\t<true/>\n\t<key>SerialNumber</key>\n\t<string>DNPN91NQG5MD</string>\n\t<key>UniqueChipID</key>\n\t<integer>6043329169056442</integer>\n\t<key>UniqueDeviceID</key>\n\t<string>af4d9c97979b992541224ebdfdc976dc3b5bc066</string>\n</dict>\n</plist>";
$ActivationInfoXMLFairPlay = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<plist version=\"1.0\">\n<dict>\n\t<key>ActivationRandomness</key>\n\t<string>BRAYAN-VILLA</string>\n\t<key>ActivationRequiresActivationTicket</key>\n\t<true/>\n\t<key>ActivationState</key>\n\t<string>Unactivated</string>\n\t<key>BasebandActivationTicketVersion</key>\n\t<string>V2</string>\n\t<key>BasebandChipID</key>\n\t<integer>7278817</integer>\n\t<key>BasebandMasterKeyHash</key>\n\t<string>8CB15EE4C8002199070D9500BB8FB183B02713A5CA2A6B92DB5E75CE15536182</string>\n\t<key>BasebandSerialNumber</key>\n\t<data>\n\t0xEMaVABEqT5emWk\n\t</data>\n\t<key>BuildVersion</key>\n\t<string>".$BuildVersion."</string>\n\t<key>DeviceCertRequest</key>\n\t<data>\n\t".$deviceCertRequest."\n\t</data>\n\t<key>DeviceClass</key>\n\t<string>iPad</string>\n\t<key>DeviceVariant</key>\n\t<string>A</string>\n\t<key>FMiPAccountExists</key>\n\t<false/>\n\t<key>InternationalMobileEquipmentIdentity</key>\n\t<string>013423005288880</string>\n\t<key>ModelNumber</key>\n\t<string>".$ModelNumber."</string>\n\t<key>ProductType</key>\n\t<string>iPad2,1</string>\n\t<key>ProductVersion</key>\n\t<string>".$ProductVersion."</string>\t\n\t<key>RegionCode</key>\n\t<string>LZ</string>\n\t<key>RegionInfo</key>\n\t<string>LZ/A</string>\n\t<key>SIMStatus</key>\n\t<string>kCTSIMSupportSIMStatusNotInserted</string>\n\t<key>SupportsPostponement</key>\n\t<true/>\n\t<key>kCTPostponementInfoServiceProvisioningState</key>\n\t<true/>\n\t<key>SerialNumber</key>\n\t<string>C38K4AG6DTTN</string>\n\t<key>SupportsPostponement</key>\n\t<true/>\n\t<key>UniqueChipID</key>\n\t<integer>".$UniqueChipID."</integer>\n\t<key>UniqueDeviceID</key>\n\t<string>".$UniqueDeviceID."</string>\n</dict>\n</plist>";
$ActivationInfoXMLWildcardBase64 = base64_encode($ActivationInfoXMLWildcard);
$ActivationInfoXMLFairPlayBase64 = base64_encode($ActivationInfoXMLFairPlay);
$SignatureWildcard = SignActivation($FactoryKey, $ActivationInfoXMLWildcard);
$InformationEstructureWildcard = "<dict>\n\t<key>ActivationInfoComplete</key>\n\t<true/>\n\t<key>ActivationInfoXML</key>\n\t<data>".$ActivationInfoXMLWildcardBase64."</data>\n\t<key>FairPlayCertChain</key>\n\t<data>".$FairPlayCertChain."</data>\n\t<key>FairPlaySignature</key>\n\t<data>".$SignatureWildcard."</data>\n</dict>";
$ActivationInfoXMLWildcardURLEncoded = URLEncoded($InformationEstructureWildcard);
$ActivationRecordWildcard = SendRequestToAlbert($ActivationInfoXMLWildcardURLEncoded);
if(!file_exists("albert.apple.com/".$serialNumber))
{
mkdir("albert.apple.com/".$serialNumber, 00777, true);
}
file_put_contents("albert.apple.com/".$serialNumber."/activation_record_tmp_wildcard", $ActivationRecordWildcard);
$getRecord = file_get_contents("albert.apple.com/".$serialNumber."/activation_record_tmp_wildcard");
$getAccountToken = ExplodeContent("AccountToken", "data", $getRecord);
$AccountTokenDecoded = base64_decode($getAccountToken);
$getWildcard = explode('"ActivationTicket" = "', $AccountTokenDecoded)[1];
if($getWildcard == NULL)
{
$getWildcard = explode('"WildcardTicket" = "', $AccountTokenDecoded)[1];
}
$WildcardTicket = explode('";', $getWildcard)[0];
if(!file_exists("Wildcards/".$serialNumber))
{
mkdir("Wildcards/".$serialNumber, 00777, true);
}
file_put_contents("Wildcards/".$serialNumber."/Wildcard.der", $WildcardTicket);
$SignatureFairPlay = SignActivation($FactoryKey, $ActivationInfoXMLFairPlay);
$InformationEstructureFairPlay = "<dict>\n\t<key>ActivationInfoComplete</key>\n\t<true/>\n\t<key>ActivationInfoXML</key>\n\t<data>".$ActivationInfoXMLFairPlayBase64."</data>\n\t<key>FairPlayCertChain</key>\n\t<data>".$FairPlayCertChain."</data>\n\t<key>FairPlaySignature</key>\n\t<data>".$SignatureFairPlay."</data>\n</dict>";
$ActivationInfoXMLFairPlayURLEncoded = URLEncoded($InformationEstructureFairPlay);
$ActivationRecordFairPlay = SendRequestToAlbert($ActivationInfoXMLFairPlayURLEncoded);
file_put_contents("albert.apple.com/".$serialNumber."/activation_record_tmp_fairplay", $ActivationRecordFairPlay);
$getRecordFairPlay = file_get_contents("albert.apple.com/".$serialNumber."/activation_record_tmp_fairplay");
$AccountTokenCertificate = ExplodeContent("AccountTokenCertificate", "data", $getRecordFairPlay);
$DeviceCertificate = ExplodeContent("DeviceCertificate", "data", $getRecordFairPlay);
$FairPlayKeyData = ExplodeContent("FairPlayKeyData", "data", $getRecordFairPlay);
if($meid != NULL)
{
$What = "WildcardTicket";
}
else
{
$What = "ActivationTicket";
}
$AccountTokenCustom =
'{'.
(isset($imei) ? "\n\t".'"InternationalMobileEquipmentIdentity" = "'.$imei.'";' : '').
($deviceType == "iPhone" ? "\n\t".'"PhoneNumberNotificationURL" = "https://albert.apple.com/deviceservices/phoneHome";' : '').
"\n\t".'"'.$What.'" = "'.$WildcardTicket.'";'."".
"\n\t".'"SerialNumber" = "'.$serialNumber.'";'.
(isset($imsi) ? "\n\t".'"InternationalMobileSubscriberIdentity" = "'.$imsi.'";' : '').
(isset($meid) ? "\n\t".'"MobileEquipmentIdentifier" = "'.$meid.'";' : '').
"\n\t".'"ProductType" = "'.$ProductType.'";'.
"\n\t".'"UniqueDeviceID" = "'.$UniqueDeviceID.'";'.
"\n\t".'"PostponementInfo" = {};'.
"\n\t".'"ActivationRandomness" = "'.$activationRandomness.'";'.
"\n\t".'"ActivityURL" = "https://albert.apple.com/deviceservices/activity";'.
(isset($iccid) ? "\n\t".'"IntegratedCircuitCardIdentity" = "'.$iccid.'";' : '').
"\n".
'}';
$FactoryKey2 = 'LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQ0KTUlJQ1hRSUJBQUtCZ1FDelltWHNTTjNkN1VUVThmNzd3bTlDMElJSkF3Q21BZWl4QndrbVd4SmwyMzlSRmU5UA0KUmJPUHprMFdIVGlFQVJCWFRveHg0VjdlWnhSMTJraWFURy93UldWbTZKeTFva3owVThIc21HS1FzSlMrRXZLZw0KckZ4M0ZnZHpjbHFYdWxCT1p6QlNIdkF3VG8reXBOUFIrdmhtZVllUkw2SHZUdVpCalpRWUtlRHl6d0lEQVFBQg0KQW9HQkFLTDd2ekZORDFDcFdJWEdEZTkrdklwUFdpYUg5Tm5nR0NSb0NSY3hYZWp2NHFDd3Rrc25RRHRqck1Sdg0KN2o1NW5QaEdaUEsvV3V2bGFrQ2VBS000MmVaRi9xMmdSQmVBWkpOUWtTSEJXOWQvT0V0N2JsYTkyRmorOElqUA0KQTNjUStleW8vS3lOdEY2T0w5S0U2Z2hNc2tLc0dCa2RNWmtESkhNeFZ1K3NLMzVwQWtFQTNRQmJPd0I0dFBkSw0KNHcrUnd1Zm9UbW1TRHhUR081dXZwc0JSbkZRNEswczNXZlBqaHVtRFFSQmVpYytIeFREWTcyTzEvaURwVGJMOQ0KcFRXNGY1cWVzd0pCQU0vSzEwOGEzNzBEeWJBODdGWVZ2TURPR0JKc3VkSXpMTGhOajRlUDRwTzIrRGFpOTU1WQ0KcVhURjFudGxPWDdsRDczUVlGeXJmcnZNcVdqNDNpM2xhWFVDUUZVeW12a1BBSG03VCtwakNTMWJXK3BHdHFFTA0Kd0RRZ204R3NLSW9jeVo2Zkc1S1kvQ0Q1aXJrZGgyU1hWZDhHS3N0MjVDVTVLTmZrWmZZMzFJMlUzUk1DUVFDNA0KRHFHSE5YUEgxb29ack8xZkYyUVptTFNqNVdEM3UxSzZjaUZYMy9EQURVdHlBZ3E2WFNqRkFkVUplbEZpZ0gzZw0KRWFxNWkwTDRFTUppOUViQmVydGRBa0FkTWVmNVNOa2dlMjZucTdueWxxMC9tVkEwc0VQVEEvYlNBTXJaRFZnVg0KNFVCTFhxMTJ5MXBRQXJKLzhyemtkTDR4NmZhazUwcXp1cEFhL0plcjhraWUNCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0t';
$KeyApple=base64_decode($FactoryKey2);
$PKS = openssl_pkey_get_private($KeyApple);
openssl_sign($AccountTokenCustom, $signature, $PKS);
openssl_free_key($PKS);
$AccountTokenCustomEncoded= base64_encode($AccountTokenCustom);
$AccountTokenSignature= base64_encode($signature);
if($UCRTCertificate != NULL)
{
$UniqueDeviceCertificate = "<key>UniqueDeviceCertificate</key>\n\t\t\t\t<data>\n\t\t\t\t".(substr(chunk_split($UCRTCertificate, 68, "\n\t"), 0, -2))."\n\t\t\t\t</data>";
}
$ActivationRecord =
'<plist version="1.0">
<dict>
<key>'.($deviceClass == "iPhone" ? 'iphone' : 'device').'-activation</key>
<dict>
<key>activation-record</key>
<dict>
<key>unbrick</key>
<true/>
<key>AccountTokenCertificate</key>
<data>
'."\n\t".''.(substr(chunk_split($AccountTokenCertificate, 68, "\n\t"), 0, -2)).''.'
</data>
<key>AccountToken</key>
<data>
'."\n\t".''.(substr(chunk_split($AccountTokenCustomEncoded, 68, "\n\t"), 0, -2)).''.'
</data>
<key>AccountTokenSignature</key>
<data>
'."\n\t".''.(substr(chunk_split($AccountTokenSignature, 68, "\n\t"), 0, -2)).''.'
</data>
<key>DeviceCertificate</key>
<data>
'."\n\t".''.(substr(chunk_split($DeviceCertificate, 68, "\n\t"), 0, -2)).''.'
</data>
<key>LDActivationVersion</key>
<integer>2</integer>
<key>FairPlayKeyData</key>
<data>
'."\n\t".''.(substr(chunk_split($FairPlayKeyData, 68, "\n\t"), 0, -2)).''.'
</data>
<key>DeviceConfigurationFlags</key>
<string>0</string>
'.$UniqueDeviceCertificate.'
</dict>
</dict>
</dict>
</plist>';
header('content-type: application/xml');
header('Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0');
echo $ActivationRecord;
die();
Function Calls
None |
Stats
MD5 | cf903b8f3a5ba4e4e7cdcbce412c17c7 |
Eval Count | 0 |
Decode Time | 77 ms |