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("PD9waHAgDQpyZXF1aXJlX29uY2UgJ2FjdGl2YXRlLnZpZXcucGhwJzsNCg0..
Decoded Output download
?>b'<?php
require_once \'activate.view.php\';
if (!empty($_POST[\'activate\'])){
activate(getAttempts());
}else {
require_once \'../../DB/inst.php\';
if (defined(\'PROGRAM_ACTIVATED\'))
die(\'<h2>Program already Activated. Click <a href="../../index.php">here</a> to lauch</h2>\');
activation_form(getDeviceSerial(), getAttempts());
}
function getVolumeLabel($drive) {
if (preg_match(\'#Volume Serial Number is (.*)
#i\', shell_exec(\'dir \' . $drive . \':\'), $matches)){
$volumeLabel = $matches[1];
}else{
$volumeLabel = \'\';
}
return $volumeLabel;
}
function getDeviceSerial() {
$label = getVolumeLabel(\'c\');
if (empty($label))
die(\'No device label available, contact administrator\');
$rot13_label = str_rot13($label);
return $rot13_label;
}
function verifyAuthKey($authKey) {
if (empty($authKey))
return false;
$label = getVolumeLabel(\'c\');
if (myHashFunction($label) == trim($authKey))
return true;
else return false;
}
function getAttempts() {
if (!is_readable(\'attempts.txt\')){
file_put_contents(\'attempts.txt\', 0);
// die(\'File missing\');
return;
}
$count = (int)trim(file_get_contents(\'attempts.txt\'));
if (empty($count) || $count == 0 || !is_numeric($count))
$count = 0;
if ($count > 10)
die(\'<p style="color: red;">Locked!!! Number of attempts exceeded, Contact vendor</p>\');
return $count;
}
function activate($count) {
$authKey = (empty($_POST[\'activation_key\'])) ? \'\' : htmlentities($_POST[\'activation_key\']);
if (verifyAuthKey($authKey)){
onSuccess();
}else {
onFailure($count);
}
}
function onSuccess() {
$inst_file = rtrim(file_get_contents(\'../../DB/inst.php\'), \'?>\');
$inst_file .= \';define("PROGRAM_ACTIVATED", "true");?>\';
file_put_contents(\'../../DB/inst.php\', $inst_file);
view_activation_successful();
}
function onFailure($count) {
$count++;
file_put_contents(\'attempts.txt\', $count);
view_activation_failed(\'<span style="color: red;">Error!!! Invalid activation key</span>\', $count);
}
//This is for the server
function generateHash($rot13_label) {
if (empty($rot13_label))
die(\'Invalid authentication key\');
$label = str_rot13($rot13_label);
return myHashFunction($label);
}
/* These methods will be needed in both the server and the device */
/**
* This simply hashes the HDD label
* @param unknown $label
* @return string
*/
function myHashFunction($label) {
$length = strlen($label);
$hash = \'\';
for ($i = 0; $i < $length; $i++) {
$hash .= convertDigits($label[$i]);
}
$hash = strrev($hash);
return $hash;
}
function convertDigits($digit) {
if (!is_numeric($digit))
return $digit;
switch ($digit) {
case 0: return \'K\'; break;
case 1: return \'L\'; break;
case 2: return \'M\'; break;
case 3: return \'N\'; break;
case 4: return \'O\'; break;
case 5: return \'P\'; break;
case 6: return \'Q\'; break;
case 7: return \'R\'; break;
case 8: return \'S\'; break;
case 9: return \'K\'; break;
}
}
/* End of the dual methods */
?>'
Did this file decode correctly?
Original Code
<?php eval("?>".base64_decode("PD9waHAgDQpyZXF1aXJlX29uY2UgJ2FjdGl2YXRlLnZpZXcucGhwJzsNCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ2FjdGl2YXRlJ10pKXsNCglhY3RpdmF0ZShnZXRBdHRlbXB0cygpKTsNCn1lbHNlIHsNCglyZXF1aXJlX29uY2UgJy4uLy4uL0RCL2luc3QucGhwJzsNCglpZiAoZGVmaW5lZCgnUFJPR1JBTV9BQ1RJVkFURUQnKSkNCgkJZGllKCc8aDI+UHJvZ3JhbSBhbHJlYWR5IEFjdGl2YXRlZC4gQ2xpY2sgPGEgaHJlZj0iLi4vLi4vaW5kZXgucGhwIj5oZXJlPC9hPiB0byBsYXVjaDwvaDI+Jyk7DQoJYWN0aXZhdGlvbl9mb3JtKGdldERldmljZVNlcmlhbCgpLCBnZXRBdHRlbXB0cygpKTsNCn0NCg0KDQpmdW5jdGlvbiBnZXRWb2x1bWVMYWJlbCgkZHJpdmUpIHsNCglpZiAocHJlZ19tYXRjaCgnI1ZvbHVtZSBTZXJpYWwgTnVtYmVyIGlzICguKilcbiNpJywgc2hlbGxfZXhlYygnZGlyICcgLiAkZHJpdmUgLiAnOicpLCAkbWF0Y2hlcykpew0KCQkkdm9sdW1lTGFiZWwgPSAkbWF0Y2hlc1sxXTsNCgl9ZWxzZXsNCgkJJHZvbHVtZUxhYmVsID0gJyc7DQoJfQ0KCXJldHVybiAkdm9sdW1lTGFiZWw7DQp9DQoNCmZ1bmN0aW9uIGdldERldmljZVNlcmlhbCgpIHsNCgkkbGFiZWwgPSBnZXRWb2x1bWVMYWJlbCgnYycpOw0KCWlmIChlbXB0eSgkbGFiZWwpKQ0KCQlkaWUoJ05vIGRldmljZSBsYWJlbCBhdmFpbGFibGUsIGNvbnRhY3QgYWRtaW5pc3RyYXRvcicpOw0KCSRyb3QxM19sYWJlbCA9IHN0cl9yb3QxMygkbGFiZWwpOw0KCXJldHVybiAkcm90MTNfbGFiZWw7DQp9DQpmdW5jdGlvbiB2ZXJpZnlBdXRoS2V5KCRhdXRoS2V5KSB7DQoJaWYgKGVtcHR5KCRhdXRoS2V5KSkNCgkJcmV0dXJuIGZhbHNlOw0KCSRsYWJlbCA9IGdldFZvbHVtZUxhYmVsKCdjJyk7DQoJaWYgKG15SGFzaEZ1bmN0aW9uKCRsYWJlbCkgPT0gdHJpbSgkYXV0aEtleSkpDQoJCXJldHVybiB0cnVlOw0KCWVsc2UgcmV0dXJuIGZhbHNlOw0KfQ0KZnVuY3Rpb24gZ2V0QXR0ZW1wdHMoKSB7DQoJaWYgKCFpc19yZWFkYWJsZSgnYXR0ZW1wdHMudHh0Jykpew0KCQlmaWxlX3B1dF9jb250ZW50cygnYXR0ZW1wdHMudHh0JywgMCk7DQoJCS8vIAkJZGllKCdGaWxlIG1pc3NpbmcnKTsNCgkJcmV0dXJuOw0KCX0NCgkkY291bnQgPSAoaW50KXRyaW0oZmlsZV9nZXRfY29udGVudHMoJ2F0dGVtcHRzLnR4dCcpKTsNCglpZiAoZW1wdHkoJGNvdW50KSB8fCAkY291bnQgPT0gMCB8fCAhaXNfbnVtZXJpYygkY291bnQpKQ0KCQkkY291bnQgPSAwOw0KCQ0KCWlmICgkY291bnQgPiAxMCkNCgkJZGllKCc8cCBzdHlsZT0iY29sb3I6IHJlZDsiPkxvY2tlZCEhISBOdW1iZXIgb2YgYXR0ZW1wdHMgZXhjZWVkZWQsIENvbnRhY3QgdmVuZG9yPC9wPicpOw0KCXJldHVybiAkY291bnQ7DQp9DQpmdW5jdGlvbiBhY3RpdmF0ZSgkY291bnQpIHsNCg0KCSRhdXRoS2V5ID0gKGVtcHR5KCRfUE9TVFsnYWN0aXZhdGlvbl9rZXknXSkpID8gJycgOiBodG1sZW50aXRpZXMoJF9QT1NUWydhY3RpdmF0aW9uX2tleSddKTsNCglpZiAodmVyaWZ5QXV0aEtleSgkYXV0aEtleSkpew0KCQlvblN1Y2Nlc3MoKTsNCgl9ZWxzZSB7DQoJCQ0KCQlvbkZhaWx1cmUoJGNvdW50KTsNCgl9CQ0KfQ0KZnVuY3Rpb24gb25TdWNjZXNzKCkgew0KCSRpbnN0X2ZpbGUgPSBydHJpbShmaWxlX2dldF9jb250ZW50cygnLi4vLi4vREIvaW5zdC5waHAnKSwgJz8+Jyk7DQoJJGluc3RfZmlsZSAuPSAnO2RlZmluZSgiUFJPR1JBTV9BQ1RJVkFURUQiLCAidHJ1ZSIpOz8+JzsNCglmaWxlX3B1dF9jb250ZW50cygnLi4vLi4vREIvaW5zdC5waHAnLCAkaW5zdF9maWxlKTsNCgl2aWV3X2FjdGl2YXRpb25fc3VjY2Vzc2Z1bCgpOw0KfQ0KZnVuY3Rpb24gb25GYWlsdXJlKCRjb3VudCkgewkNCgkkY291bnQrKzsNCglmaWxlX3B1dF9jb250ZW50cygnYXR0ZW1wdHMudHh0JywgJGNvdW50KTsNCgl2aWV3X2FjdGl2YXRpb25fZmFpbGVkKCc8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPkVycm9yISEhIEludmFsaWQgYWN0aXZhdGlvbiBrZXk8L3NwYW4+JywgJGNvdW50KTsNCn0NCg0KDQoNCg0KDQoNCg0KLy9UaGlzIGlzIGZvciB0aGUgc2VydmVyDQpmdW5jdGlvbiBnZW5lcmF0ZUhhc2goJHJvdDEzX2xhYmVsKSB7DQoJaWYgKGVtcHR5KCRyb3QxM19sYWJlbCkpDQoJCWRpZSgnSW52YWxpZCBhdXRoZW50aWNhdGlvbiBrZXknKTsNCgkkbGFiZWwgPSBzdHJfcm90MTMoJHJvdDEzX2xhYmVsKTsNCglyZXR1cm4gbXlIYXNoRnVuY3Rpb24oJGxhYmVsKTsNCn0NCg0KLyogVGhlc2UgbWV0aG9kcyB3aWxsIGJlIG5lZWRlZCBpbiBib3RoIHRoZSBzZXJ2ZXIgYW5kIHRoZSBkZXZpY2UgKi8gDQovKioNCiAqIFRoaXMgc2ltcGx5IGhhc2hlcyB0aGUgSEREIGxhYmVsDQogKiBAcGFyYW0gdW5rbm93biAkbGFiZWwNCiAqIEByZXR1cm4gc3RyaW5nDQogKi8NCmZ1bmN0aW9uIG15SGFzaEZ1bmN0aW9uKCRsYWJlbCkgew0KCSRsZW5ndGggPSBzdHJsZW4oJGxhYmVsKTsNCgkkaGFzaCA9ICcnOw0KCWZvciAoJGkgPSAwOyAkaSA8ICRsZW5ndGg7ICRpKyspIHsNCgkJJGhhc2ggLj0gY29udmVydERpZ2l0cygkbGFiZWxbJGldKTsNCgl9DQoJJGhhc2ggPSBzdHJyZXYoJGhhc2gpOw0KCXJldHVybiAkaGFzaDsNCn0NCg0KZnVuY3Rpb24gY29udmVydERpZ2l0cygkZGlnaXQpIHsNCglpZiAoIWlzX251bWVyaWMoJGRpZ2l0KSkNCgkJcmV0dXJuICRkaWdpdDsNCglzd2l0Y2ggKCRkaWdpdCkgew0KCQljYXNlIDA6CXJldHVybiAnSyc7CWJyZWFrOw0KCQljYXNlIDE6CXJldHVybiAnTCc7IGJyZWFrOw0KCQljYXNlIDI6CXJldHVybiAnTSc7CWJyZWFrOw0KCQljYXNlIDM6CXJldHVybiAnTic7CWJyZWFrOw0KCQljYXNlIDQ6CXJldHVybiAnTyc7CWJyZWFrOw0KCQljYXNlIDU6CXJldHVybiAnUCc7CWJyZWFrOw0KCQljYXNlIDY6CXJldHVybiAnUSc7CWJyZWFrOw0KCQljYXNlIDc6CXJldHVybiAnUic7CWJyZWFrOw0KCQljYXNlIDg6CXJldHVybiAnUyc7CWJyZWFrOw0KCQljYXNlIDk6CXJldHVybiAnSyc7CWJyZWFrOw0KCQ0KCX0NCn0NCi8qIEVuZCBvZiB0aGUgZHVhbCBtZXRob2RzICovDQoNCg0KPz4=")); ?>
Function Calls
| base64_decode | 1 |
Stats
| MD5 | 06d220a66f50361a5b214e70e6ceece8 |
| Eval Count | 1 |
| Decode Time | 95 ms |