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(gzinflate(base64_decode('FZq3EqtqtoTzU3XeYbI5MwQID3UjrPDeJ7fwHuHd0w87UIgK1t+r+..
Decoded Output download
function int32($n) {
while ($n >= 2147483648) $n -= 4294967296;
while ($n <= -2147483649) $n += 4294967296;
return (int)$n;
}
/*
power by rocky
*/
eval(gzinflate(base64_decode('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')));
?><?php
eval(gzinflate(base64_decode('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')));
?><??><?php
eval(gzinflate(base64_decode('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')));
?><??>
<?php
function int32($n) {
while ($n >= 2147483648) $n -= 4294967296;
while ($n <= -2147483649) $n += 4294967296;
return (int)$n;
}
class stringchange {
function shr32($x, $bits){
//
if($bits <= 0){
return $x;
}
if($bits >= 32){
return 0;
}
//
$bin = decbin($x);
$l = strlen($bin);
//32032
if($l > 32){
$bin = substr($bin, $l - 32, 32);
}elseif($l < 32){
$bin = str_pad($bin, 32, '0', STR_PAD_LEFT);
}
//0
return bindec(str_pad(substr($bin, 0, 32 - $bits), 32, '0', STR_PAD_LEFT));
}
function byteArrayToShort($b) {
return ($b[0] << 8)
+ ($b[1] & 0xFF);
}
function byteArrayToInt($b) {
return int32(($b[0] << 24)) + (($b[1] & 0xFF) << 16) + (($b[2] & 0xFF) << 8) + ($b[3] & 0xFF);
}
function shortToByteArray($s) {
$shortBuf = array(0,0);
for($i=0;$i<2;$i++) {
$offset = (2 - 1 -$i)*8;
$shortBuf[$i] = ($this->shr32($s,$offset))& 0xFF;
}
return $shortBuf;
}
function intToByteArray($value){
$b = array(0,0,0,0);
for ($i = 0; $i < 4; $i++) {
$offset = (4 - 1 - $i) * 8;
$b[$i] = ($this->shr32($value,$offset)) & 0xFF;
}
return $b;
}
function toByte($c) {
$str="0123456789ABCDEF";
for($i=0;$i<16;$i++)
{
if($str[$i]==$c)
{
return $i;
}
}
return 0;
}
function toByte2($c) {
$str="0123456789ABCDEF";
for($i=0;$i<16;$i++)
{
if(substr($str,$i,1)==$c)
{
return $i;
}
}
return 0;
}
function hexStringToByte($hex) {
$len = strlen($hex);
$result = array ();
$achar= array();
for($i=0;$i<$len;$i++)
{
$achar[$i]=$hex[$i];
}
// $achar = toCharArray($hex);
for ( $i = 0; $i < $len; $i++) {
$pos = $i * 2;
$result[$i] = $this->toByte($achar[$pos]) << 4 | $this->toByte($achar[$pos + 1]);
}
return $result;
}
function hexStringToByte2($hex) {
$len = strlen($hex);
$result = array ();
$achar= array();
for($i=0;$i<$len;$i++)
{
$achar[$i]=substr($hex,$i,1);
}
// $achar = toCharArray($hex);
for ( $i = 0; $i < $len/2; $i++) {
$pos = $i * 2;
$result[$i] = ( $this->toByte2($achar[$pos]) * 16 )+ ( $this->toByte2($achar[$pos + 1]));
}
return $result;
}
function bytesToHexString($bArray) {
$sb="";
for ($i = 0; $i <count($bArray); $i++) {
$sTemp = dechex ($bArray[$i]);
if (strlen($sTemp) < 2)
{
$sTemp="0" . $sTemp;
}
$sb=$sb . $sTemp;
}
return strtoupper($sb);
}
}
class tea {
function shr32($x, $bits){
//
if($bits <= 0){
return $x;
}
if($bits >= 32){
return 0;
}
//
$bin = decbin($x);
$l = strlen($bin);
//32032
if($l > 32){
$bin = substr($bin, $l - 32, 32);
}elseif($l < 32){
$bin = str_pad($bin, 32, '0', STR_PAD_LEFT);
}
//0
return bindec(str_pad(substr($bin, 0, 32 - $bits), 32, '0', STR_PAD_LEFT));
}
//
function encrypt($content, $offset, $key, $times) { //times
$a1 = array(0,0,0,0);
$a2 = array(0,0,0,0);
for ($a = 0; $a < 4; $a++) {
$a1[$a] = $content[$a + $offset];
}
for ($a = 0; $a < 4; $a++) {
$a2[$a] = $content[$a + 4 + $offset];
}
$tempInt = array(0,0);//byteToInt(encryptContent, offset);
$sg = new stringchange();
$tempInt[0] = $sg->byteArrayToInt($a1);
$tempInt[1] = $sg->byteArrayToInt($a2);
$y =int32($tempInt[0]);
$z =int32($tempInt[1]);
$sum = 0;
$delta = 0x9e3779b9; //
$a = $key[0];
$b = $key[1];
$c = $key[2];
$d = $key[3];
if ($delta < 0) {
$delta = $delta + 4294967296;
}
$templong = 0;
$tempz = 0;
$tempz2 = 0;
for ($i = 0; $i < $times; $i++) {
$sum = $sum + $delta;
if ($sum < 0) {
$sum = $sum + 4294967296;
}
if ($sum > 4294967296) {
$sum = $sum - 4294967296;
}
//int z1, z2, z3;
$z1=int32($z1);
$z2=int32($z2);
$z3=int32($z3);
// y += ((z << 4) + a) ^ (z + sum) ^ ((z >> 5) + b);
// int y1, y2, y3, y4;
$y1=int32($y1);
$y2=int32($y2);
$y3=int32($y3);
$y4=int32($y4);
$y1 = $z << 4;
if ($y1 < 0) {
$templong = $y1 + 4294967296;
} else {
$templong = $y1;
}
$y1 = int32( ($templong + $a));
$templong = $z + $sum;
$y2 = int32( $templong);
$y3 =$this->shr32($z,5);
if ($y3 < 0) {
$templong = $y3 + 4294967296;
} else {
$templong = $y3;
}
$tempz = $templong + $b;
if ($tempz > 4294967296) {
$tempz = $tempz - 4294967296;
}
$y3 = int32( $tempz);
$y4 = $y1 ^ $y2 ^ $y3;
if ($y4 < 0) {
$tempz2 = $y4 + 4294967296;
} else {
$tempz2 = $y4;
}
if ($y < 0) {
$templong = $y + 4294967296;
} else {
$templong = $y;
}
$templong=$templong +$tempz2;
if ($templong > 4294967296) {
$templong = $templong - 4294967296;
}
$y = int32( ($templong ));
//z += ((y << 4) + c) ^ (y + sum) ^ ((y >> 5) + d);
$z1 = $y << 4;
if ($z1 < 0) {
$templong = $z1 + 4294967296;
} else {
$templong = $z1;
}
$templong = $templong + $c;
if ($templong > 4294967296) {
$templong = $templong - 4294967296;
}
$z1 = int32( ($templong));
$templong = $y;
if ($templong < 0) {
$templong = $templong + 4294967296;
}
$templong = $templong + $sum;
if ($templong < 0) {
$templong = $templong + 4294967296;
}
if (templong > 4294967296) {
$templong = $templong - 4294967296;
}
$z2 = int32( $templong);
$z3 = $this->shr32($y , 5);
if ($z3 < 0) {
$templong = $z3 + 4294967296;
} else {
$templong = $z3;
}
$templong = $templong + $d;
if ($templong > 4294967296) {
$templong = $templong - 4294967296;
}
$z3 = int32( ($templong));
$tempz = $z;
if ($tempz < 0) {
$tempz = $tempz + 4294967296;
}
if ($tempz > 4294967296) {
$tempz = $tempz - 4294967296;
}
$z4 = 0;
$z4 = ($z1 ^ $z2 ^ $z3);
if ($z4 < 0) {
$templong = $z4 + 4294967296;
} else {
$templong = $z4;
}
$tempz = $tempz + $templong;
if ($tempz > 4294967296) {
$tempz = $tempz - 4294967296;
}
$z = int32( $tempz);
}
if ($y < 0) {
$templong = $y + 4294967296;
} else {
$templong = $y;
}
$tempInt[0] = int32( $this->TEA_ntoh($templong, true));
if ($z < 0) {
$templong = $z + 4294967296;
} else {
$templong = $z;
}
$tempInt[1] = int32( $this->TEA_ntoh($templong, true));
return $this->ByteToByte($this->intToByte($tempInt, 0));
}
//
function decrypt($encryptContent, $offset, $key,$times) {
$a1 = array(0,0,0,0);
$a2 = array(0,0,0,0);
for ($a = 0; $a < 4; $a++) {
$a1[$a] = $encryptContent[$a + $offset];
}
for ($a = 0; $a < 4; $a++) {
$a2[$a] = $encryptContent[$a + 4 + $offset];
}
$tempInt = array(0,0); //byteToInt(encryptContent, offset);
$sg = new stringchange();
$tempInt[0] = $sg->byteArrayToInt($a1);
$tempInt[1] = $sg->byteArrayToInt($a2);
$y = int32($tempInt[0]);
$z = int32($tempInt[1]);
$sum = 0xE3779B90;
$delta = 0x9e3779b9; //
$a = $key[0];
$b = $key[1];
$c = $key[2];
$d = $key[3];
if ($sum < 0) {
$sum = $sum + 4294967296;
}
if ($delta < 0) {
$delta = $delta + 4294967296;
}
$templong = 0;
$tempz = 0;
$tempz2 = 0;
$z1=0;
$z2=0;
$z3=0;
$y1=0;
$y2=0;
$y3=0;
$y4=0;
for ($i = 0; $i < $times; $i++) {
//z1, z2, z3;
$z1=int32($z1);
$z2=int32($z2);
$z3=int32($z3);
$z1 = $y << 4;
if ($z1 < 0) {
$templong = $z1 + 4294967296;
} else {
$templong = $z1;
}
$z1 = int32( $templong + $c);
$templong = $y;
if ($templong < 0) {
$templong = $templong + 4294967296;
}
$templong = $templong + $sum;
if ($templong < 0) {
$templong = $templong + 4294967296;
}
$z2 = int32( $templong);
$z3 = $this->shr32($y , 5);
if ($z3 < 0) {
$templong = $z3 + 4294967296;
} else {
$templong = $z3;
}
$z3 = int32( ($templong + $d));
$tempz = $z;
if ($tempz < 0) {
$tempz = $tempz + 4294967296;
}
$z4 = 0;
$z4 = ($z1 ^ $z2 ^ $z3);
if ($z4 < 0) {
$templong = $z4 + 4294967296;
} else {
$templong = $z4;
}
$tempz = $tempz - $templong;
$z = int32( $tempz);
// z -= ((y << 4) + c) ^ (y + sum) ^ ((y >> 5) + d);
//int y1, y2, y3, y4;
$y1=int32($y1);
$y2=int32($y2);
$y3=int32($y3);
$y4=int32($y4);
$y1 = $z << 4;
if ($y1 < 0) {
$templong = $y1 + 4294967296;
} else {
$templong = $y1;
}
$y1 = int32( ($templong + $a));
$templong = $z + $sum;
$y2 = int32( $templong);
$y3 = $this->shr32($z,5);
if ($y3 < 0) {
$templong = $y3 + 4294967296;
} else {
$templong = $y3;
}
$tempz = $templong + $b;
$y3 = int32( $tempz);
$y4 = $y1 ^ $y2 ^ $y3;
if ($y4 < 0) {
$tempz2 = $y4 + 4294967296;
} else {
$tempz2 = $y4;
}
//y -= ((z << 4) + a) ^ (z + sum) ^ ((z >> 5) + b);
if ($y < 0) {
$templong = $y + 4294967296;
} else {
$templong = $y;
}
$y = int32( ($templong - $tempz2));
$sum = $sum - $delta;
if ($sum < 0) {
$sum = $sum + 4294967296;
}
}
if ($y < 0) {
$templong = $y + 4294967296;
} else {
$templong = $y;
}
$tempInt[0] = int32( $this->TEA_ntoh($templong, true));
if ($z < 0) {
$templong = $z + 4294967296;
} else {
$templong = $z;
}
$tempInt[1] = int32( $this->TEA_ntoh($templong, true));
// return tempInt;
return $this->ByteToByte($this->intToByte($tempInt, 0));
}
function TEA_ntoh($netlong, $_isNetByte /*= false*/) {
$x = ($netlong & 0xff) << 24;
$x |= ($netlong & 0xff00) << 8;
$x |= $this->shr32(($netlong & 0xff0000),8);// >> 8;
$x |= $this->shr32(($netlong & 0xff000000),24);// >> 24;
if ($_isNetByte==true)
{
return $x;
}
else
{
return $netlong;
}
}
//byte[]int[]
function byteToInt($content, $offset) {
$result =array(); //2n == n content.length / 4 == content.length 2
for ($i = 0, $j = $offset; $j < count(content); $i++, $j += 4) {
$result[$i] = transform($content[$j + 3]) |
transform($content[$j + 2]) << 8 |
transform($content[$j + 1]) << 16 |
int32( $content[j] << 24);
}
return $result;
}
function ByteToByte($b) {
$i = count($b);
if ($i % 4 != 0) {
return $b;
}
$re = array ();
for ( $j = 0; $j < count($b); ) {
$re[$j] = $b[$j + 3];
$re[$j + 1] = $b[$j + 2];
$re[$j + 2] = $b[$j + 1];
$re[$j + 3] = $b[$j];
$j = $j + 4;
}
return $re;
}
//int[]byte[]
function intToByte($content, $offset) {
$result = array(); //2n == n content.length * 4 == content.length 2
for ($i = 0, $j = $offset; $j < (count($content)<<2); $i++, $j += 4) {
$result[$j + 3] = ($content[$i] & 0xff);
$result[$j + 2] = (($content[$i] >> 8) & 0xff);
$result[$j + 1] = (($content[$i] >> 16) & 0xff);
$result[$j] = (($content[$i] >> 24) & 0xff);
}
return $result;
}
//
function transform($temp) {
$tempInt = int32( $temp);
if ($tempInt < 0) {
$tempInt += 256;
}
return $tempInt;
}
//TEA
function encryptByTea($info) {
$KEY = array(1952801070, 778923887,1848520307, 1700867630);
$result =array();// new byte[info.length];
for ($offset = 0; $offset < count($info); $offset += 8) {
$tempEncrpt = $this->encrypt($info, $offset, $KEY, 16);
for($j=0;$j<8;$j++)
{
$result[$offset + $j]=$tempEncrpt[$j];
//System.arraycopy(tempEncrpt, 0, result, offset, 8);
}
}
return $result;
}
//TEA
function decryptByTea($secretInfo) {
//$decryptStr = null;
$result =array();// new byte[secretInfo.length];
$KEY = array(1952801070, 778923887,1848520307, 1700867630);
for ($offset = 0; $offset <count($secretInfo); $offset += 8) {
$decryptStr =$this->decrypt($secretInfo, $offset, $KEY, 16);
for($j=0;$j<8;$j++)
{
$result[$offset + $j]=$decryptStr[$j];
//System.arraycopy(tempEncrpt, 0, result, offset, 8);
}
}
return $result;
}
}
class otpdatetime
{
public $year;
public $month;
public $day;
public $hour;
public $minute;
public $second;
function __construct() {
$this->year=2009;
$this->month=1;
$this->day=1;
$this->hour=0;
$this->minute=0;
$this->second=0;
}
function getdatetimeString()
{
return $this->year . "-" . $this->month . "-" . $this->day . " " . $this->hour . ":" . $this->minute . ":" . $this->second;
}
}
/*
$info= array(8);
for($a=0;$a<8;$a++)
{
$info[$a]=60 + $a;
}
$t=new tea();
$info2= $t->encryptByTea($info);
$info= $t->decryptByTea($info2);
for($i=0;$i<8;$i++)
{
echo $info[$i];
}
*/
class tokeninfo {
public $KeyLen;
public $Key;
public $InitTimeYear;
public $InitTimeMonth;
public $InitTimeDay;
public $InitTimeHour;
public $InitTimeMinute;
public $InitTimeSecond;
public $LastLoginTotalMovingValue;
public $LastLoginSecond;
public $TokenTimeOffsetMinute;
public $TokenTimeOffsetSecond;
public $OTPType;
public $OTPChangeTime;
public $OTPCheckPassType;
public $othersByte;
function __construct() {
$this->KeyLen = 0;
$this->Key = array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
$this->InitTimeYear = 0;
$this->InitTimeMonth = 0;
$this->InitTimeDay = 0;
$this->InitTimeHour = 0;
$this->InitTimeMinute = 0;
$this->InitTimeSecond = 0;
$this->LastLoginTotalMovingValue = 0;
$this->LastLoginSecond = 0;
$this->TokenTimeOffsetMinute = 0;
$this->TokenTimeOffsetSecond = 0;
$this->OTPType = 0;
$this->OTPChangeTime = 0;
$this->OTPCheckPassType = 0;
$this->othersByte = array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
}
function settokeninfo($info) {
$sg = new stringchange();
$k =array(0,0) ;
$k[0] = $info[1];
$k[1] = $info[0];
$this->KeyLen =$sg->byteArrayToShort($k);
$i = 0;
for ($i = 0; $i < $this->KeyLen ; $i++) {
$this->Key[$i] = $info[$i + 2];
}
$k[0] = $info[53];
$k[1] = $info[52];
$this->InitTimeYear = $sg->byteArrayToShort($k);
$this->InitTimeMonth = $info[54];
$this->InitTimeDay = $info[55];
$this->InitTimeHour = $info[56];
$this->InitTimeMinute = $info[57];
$this->InitTimeSecond = $info[58];
$k1 = array(0,0,0,0);
$k1[0] = $info[62];
$k1[1] = $info[61];
$k1[2] = $info[60];
$k1[3] = $info[59];
$this->LastLoginTotalMovingValue = $sg->byteArrayToInt($k1);
$this->LastLoginSecond = $info[63];
$k1[0] = $info[67];
$k1[1] = $info[66];
$k1[2] = $info[65];
$k1[3] = $info[64];
$this->TokenTimeOffsetMinute = $sg->byteArrayToInt($k1);
$this->TokenTimeOffsetSecond = $info[68];
$this->OTPType = $info[69];
$this->OTPChangeTime = $info[70];
$this->OTPCheckPassType = $info[71];
for ($i = 0; $i < 48; $i++) {
$this->othersByte[$i] = $info[$i + 72];
}
return $this;
}
function gettokeninfo($stinfo) {
$sg = new stringchange();
$info[] = array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
$k = array(0,0,0,0);
$sk=array(0,0);
$sk = $sg->shortToByteArray($stinfo->KeyLen);
$info[0] = $sk[1];
$info[1] = $sk[0];
for ($i = 0; $i < 50 ; $i++) {
$info[$i + 2] = $stinfo->Key[$i];
}
$sk = $sg->shortToByteArray($stinfo->InitTimeYear);
$info[52] = $sk[1];
$info[53] = $sk[0];
$info[54] = $stinfo->InitTimeMonth;
$info[55] = $stinfo->InitTimeDay;
$info[56] = $stinfo->InitTimeHour;
$info[57] = $stinfo->InitTimeMinute;
$info[58] = stinfo>InitTimeSecond;
$k = $sg->intToByteArray($stinfo->LastLoginTotalMovingValue);
$info[59] = $k[3];
$info[60] = $k[2];
$info[61] = $k[1];
$info[62] = $k[0];
$info[63] = $stinfo->LastLoginSecond;
$k = $sg->intToByteArray($stinfo->TokenTimeOffsetMinute);
$info[64] = $k[3];
$info[65] = $k[2];
$info[66] = $k[1];
$info[67] = $k[0];
$info[68] = $stinfo->TokenTimeOffsetSecond;
$info[69] = $stinfo->OTPType;
$info[70] = $stinfo->OTPChangeTime;
$info[71] = $stinfo->OTPCheckPassType;
for ($i = 0; $i < 48; $i++) {
$info[$i + 72] = $stinfo->othersByte[$i];
}
return $info;
}
}
class seamoonapi
{
// $strSeamoon ="KingKey20050328.88888888889999999999";
// $strSNStringKey = "KingKey20050328.88888888889999999999";
function ConvertHex2Bin($hexdata)
{
$bindata = "";
for ($i=0;$i<strlen($hexdata);$i+=2)
{
$bindata.=chr(hexdec(substr($hexdata,$i,2)));
}
return $bindata;
}
function HashHmac($algo, $data, $key, $raw_output = false)
{
$algo = strtolower($algo);
$pack = 'H'.strlen($algo('test'));
$size = 64;
$opad = str_repeat(chr(0x5C), $size);
$ipad = str_repeat(chr(0x36), $size);
if (strlen($key) > $size)
{
$key = str_pad(pack($pack, $algo($key)), $size, chr(0x00));
}
else
{
$key = str_pad($key, $size, chr(0x00));
}
for ($i = 0; $i < strlen($key) - 1; $i++)
{
$opad[$i] = $opad[$i] ^ $key[$i];
$ipad[$i] = $ipad[$i] ^ $key[$i];
}
$output = $algo($opad.pack($pack, $algo($ipad.$data)));
return ($raw_output) ? pack($pack, $output) : $output;
}
function ComputeOathTruncate($hash, $length = 6)
{
// Convert to decimal
foreach(str_split($hash,2) as $hex)
{
$hmac_result[]=hexdec($hex);
}
// Find offset
$offset = $hmac_result[19] & 0xf;
// Algorithm from RFC
return
substr(str_repeat('0',$length).((
(($hmac_result[$offset+0] & 0x7f) << 24 ) |
(($hmac_result[$offset+1] & 0xff) << 16 ) |
(($hmac_result[$offset+2] & 0xff) << 8 ) |
($hmac_result[$offset+3] & 0xff)
) % pow(10,$length)),-$length); // & 0x7FFFFFFF before the pow()
}
function ComputeOathTOTP($key, $counter)
{
// Counter
//the counter value can be more than one byte long, so we need to go multiple times
$cur_counter = array(0,0,0,0,0,0,0,0);
for($i=7;$i>=0;$i--)
{
$cur_counter[$i] = pack ('C*', $counter);
$counter = $counter >> 8;
}
$bin_counter = implode($cur_counter);
// Pad to 8 chars
if (strlen ($bin_counter) < 8)
{
$bin_counter = str_repeat(chr(0), 8 - strlen($bin_counter)) . $bin_counter;
}
// HMAC hash
$hash = $this->HashHmac('sha1', $bin_counter, $key);
return $hash;
}
function GetOTPPassword($key,$timesecond,$interval,$passwordlen)
{
//$seed_bin = ConvertHex2Bin($key);
for($i=0;$i<count($key);$i++)
{
$seed_bin.=chr($key[$i]);
}
$password_len = $passwordlen;
$timer = intval($timesecond/$interval);
return $this->ComputeOathTruncate($this->ComputeOathTOTP($seed_bin,$timer),$password_len);
}
function getOTPpassword2($key,$interval,$passwordlen,$itimes)
{
for($i=0;$i<count($key);$i++)
{
$seed_bin.=chr($key[$i]);
}
$password_len = $passwordlen;
return $this->ComputeOathTruncate($this->ComputeOathTOTP($seed_bin,$itimes),$password_len);
}
function CheckOTPpassword($key,$interval,$passwordlen,$password,$itimes)
{
$timesecond=time();
//$itimes=10 * (60/$interval);
if($password==$this->GetOTPPassword($key,($timesecond + $itimes*$interval),$interval,$passwordlen))
{
return 1;
}
return 0;
}
function ITSecurity_CheckCB_v6($pCB)//KingKey_HOTP_CheckCB
{
//cMd5InputStr, cMd5ResultStr, cTmpCB;
//int totoa_md5StrLen,i, iCBLen,j;
$strSeamoon="KingKey20050328.88888888889999999999";
$iCBLen = strlen($pCB);
$j = 0;
$cTmpCB=trim($pCB) ;
$pCB= $cTmpCB;
$iCBLen =strlen($pCB);
if(substr($pCB,6,1) == "6")
{
if($iCBLen != 291)
{
return -1;
}
$cMd5InputStr= $strSeamoon;
$totoa_md5StrLen = strlen($strSeamoon) ;
$cMd5InputStr=$cMd5InputStr . substr($pCB,0,17);
$totoa_md5StrLen = $totoa_md5StrLen + 17;
$cMd5InputStr=$cMd5InputStr . substr($pCB,49,strlen($pCB));
$totoa_md5StrLen = $totoa_md5StrLen + 242;
$cMd5ResultStr=strtoupper(md5($cMd5InputStr)) ;
if (substr($pCB,17,32)==$cMd5ResultStr)
{
return 1;
}
else
{
return -1;
}
}
else
{
return -1;
}
}
function KingKey_HOTP_GetInfoFromCB($pInitCB)
{
if(strlen($pInitCB) != 291)
{
return 0;
}
$tmpByteInit =array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
$tmpByteResult=array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
//$TmpLen;
//String tmpStr;
$tmpStr =substr($pInitCB,49, 289);
//
$t = new tea();
$cg = new stringchange();
$tmpByteInit = $cg->hexStringToByte($tmpStr);
$tmpByteResult = $t->decryptByTea($tmpByteInit);
$tinfo=new tokeninfo();
$tinfo=$tinfo->settokeninfo($tmpByteResult);
return $tinfo;
}
function KingKey_HOTP_GetNewCB($pcInitCB, $stTokenInfo)
{
//TEA encrypt
$pcResultCB=$pcInitCB;
$tmpByteInit =array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
$tmpByteResult=array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
$tmpByteInit = $stTokenInfo->gettokeninfo($stTokenInfo);
for($i=0;$i<count($tmpByteInit);$i++)
{
//echo $tmpByteInit[$i];
//echo "<br>";
}
$t = new tea();
$tmpByteResult = $t->encryptByTea($tmpByteInit);
$cg = new stringchange();
$tmpStr = $cg->bytesToHexString($tmpByteResult);
$pcResultCB = substr($pcInitCB,0, 49) . $tmpStr . "==";
$strSNStringKey = "KingKey20050328.88888888889999999999";
$cMd5InputStr = $strSNStringKey;
$cMd5InputStr = $cMd5InputStr . substr($pcInitCB,0, 17);
$cMd5InputStr = $cMd5InputStr . substr($pcResultCB,49, 289);
$cMd5ResultStr = strtoupper(md5($cMd5InputStr));
$pcResultCB = substr($pcResultCB,0, 17) . $cMd5ResultStr . substr($pcResultCB,49,291);
return $pcResultCB;
}
//
function KingKey_HOTP_GetSpaceDayBetweenLastTime($SpaceMovingValue, $IntervalInSecond)
{
if($SpaceMovingValue <= 0)
{
return 0;
}
if(($IntervalInSecond != 60) && ($IntervalInSecond != 30) && ($IntervalInSecond != 20))
{
return 0;
}
$lTotalSeconds = $SpaceMovingValue * $IntervalInSecond;
$TotalDays =(int)($lTotalSeconds / 86400); //86400
return $TotalDays;
}
function GetTotalMovingValueOfNow($IntervalInSecond)
{
$TotalMovingValue = 0;
$iTotalSeconds = 0;
if(($IntervalInSecond != 60) && ($IntervalInSecond != 30) && ($IntervalInSecond != 20))
{
return 0;
}
$TotalMovingValue =(int)( time() / $IntervalInSecond);
return $TotalMovingValue;
}
function checkpassword($pInitCB,$pPassword)
{
$stHotpInfo=new tokeninfo();
//byte OTP6Len[]=new byte[6],OTP8Len[]=new byte[8];
//int iLastTimebettwenDays;
//int iTimeWindow;
$OTPCompareResul=1;
$sg=new stringchange();
if(($pInitCB=="") || ($pPassword == ""))
{
return "-1";
}
if(strlen($pInitCB)<200)
{
return "-1";
}
if(substr($pInitCB,6,1) == "7")
{
$seaotp=new seamoonsea();
return $seaotp->checkpasswordsea($pInitCB,$pPassword);
}
$checkInitCBResult= $this->ITSecurity_CheckCB_v6($pInitCB);
$pResultCB= $pInitCB;
if($checkInitCBResult != 1)
{
return "-1";
}
if($pInitCB[6] != "6")
{
return "-1";
}
if(strlen($pPassword)!=6 && strlen($pPassword) !=8)
{
return "300";
}
$stHotpInfo=$this->KingKey_HOTP_GetInfoFromCB($pInitCB);
if($stHotpInfo =="")
{
return "-1";
}
$lTotalMovingValue =$this->GetTotalMovingValueOfNow($stHotpInfo->OTPChangeTime);
$iLastTimebettwenDays = $this->KingKey_HOTP_GetSpaceDayBetweenLastTime($lTotalMovingValue - $stHotpInfo->LastLoginTotalMovingValue, $stHotpInfo->OTPChangeTime );
// < 1
if($iLastTimebettwenDays <= 30)
{
$iTimeWindow = 5;
}
else if(($iLastTimebettwenDays > 30) && ($iLastTimebettwenDays <= 90)) // 1~3
{
$iTimeWindow = 10;
}
else if(($iLastTimebettwenDays > 90) && ($iLastTimebettwenDays <= 180)) // 3~6
{
$iTimeWindow = 15;
}
else if(($iLastTimebettwenDays > 180) && ($iLastTimebettwenDays <= 360)) // 6~12
{
$iTimeWindow = 30;
}
else // 12
{
$iTimeWindow = 45;
}
if($stHotpInfo->OTPChangeTime==30)
{
$iTimeWindow = $iTimeWindow * 2;
}
elseif ($stHotpInfo->OTPChangeTime==20)
{
$iTimeWindow = $iTimeWindow * 3;
}
else if($stHotpInfo->OTPChangeTime==60)
{
$iTimeWindow = $iTimeWindow;
}
else
{
return "300";
}
if($stHotpInfo->OTPType==1)
{
$OTPLen=6;
}
else
{
$OTPLen=8;
}
//$stHotpInfo->LastLoginTotalMovingValue;
for($i=-1 * $iTimeWindow;$i<$iTimeWindow;$i++)
{
if($lTotalMovingValue + $i <= $stHotpInfo->LastLoginTotalMovingValue)
{
continue;
}
if( $this->CheckOTPpassword($stHotpInfo->Key,$stHotpInfo->OTPChangeTime,$OTPLen,$pPassword,$stHotpInfo->TokenTimeOffsetMinute +$i)==1)
{
$stHotpInfo->TokenTimeOffsetMinute = $stHotpInfo->TokenTimeOffsetMinute + $i;
$stHotpInfo->LastLoginTotalMovingValue = $lTotalMovingValue;
//get new CB
$pResultCB=$this->KingKey_HOTP_GetNewCB($pInitCB, $stHotpInfo);
return $pResultCB;
}
}
return 0;
}
function passwordsyn($pInitCB,$pPassword)
{
$stHotpInfo=new tokeninfo();
//byte OTP6Len[]=new byte[6],OTP8Len[]=new byte[8];
//int iLastTimebettwenDays;
//int iTimeWindow;
$OTPCompareResul=1;
$sg=new stringchange();
if(($pInitCB=="") || ($pPassword == ""))
{
return "-1";
}
if(substr($pInitCB,6,1) == "7")
{
$seaotp=new seamoonsea();
return $seaotp->passwordsynsea($pInitCB,$pPassword);
}
$checkInitCBResult= $this->ITSecurity_CheckCB_v6($pInitCB);
$pResultCB= $pInitCB;
if($checkInitCBResult != 1)
{
return "-1";
}
if($pInitCB[6] != "6")
{
return "-1";
}
if(strlen($pPassword)!=6 && strlen($pPassword) !=8)
{
return "300";
}
$stHotpInfo=$this->KingKey_HOTP_GetInfoFromCB($pInitCB);
if($stHotpInfo =="")
{
return "-1";
}
$lTotalMovingValue =$this->GetTotalMovingValueOfNow($stHotpInfo->OTPChangeTime);
$iLastTimebettwenDays = $this->KingKey_HOTP_GetSpaceDayBetweenLastTime($lTotalMovingValue - $stHotpInfo->LastLoginTotalMovingValue, $stHotpInfo->OTPChangeTime );
// < 18
if($iLastTimebettwenDays <= 540)
{
$iTimeWindow = 60;
}
else // 18
{
$iTimeWindow = 90;
}
if($stHotpInfo->OTPChangeTime==30)
{
$iTimeWindow = $iTimeWindow * 2;
}
elseif ($stHotpInfo->OTPChangeTime==20)
{
$iTimeWindow = $iTimeWindow * 3;
}
else if($stHotpInfo->OTPChangeTime==60)
{
$iTimeWindow = $iTimeWindow;
}
else
{
return "300";
}
if($stHotpInfo->OTPType==1)
{
$OTPLen=6;
}
else
{
$OTPLen=8;
}
//$stHotpInfo->LastLoginTotalMovingValue;
for($i=-1 * $iTimeWindow;$i<$iTimeWindow;$i++)
{
if($lTotalMovingValue + $i <= $stHotpInfo->LastLoginTotalMovingValue)
{
continue;
}
if( $this->CheckOTPpassword($stHotpInfo->Key,$stHotpInfo->OTPChangeTime,$OTPLen,$pPassword,$stHotpInfo->TokenTimeOffsetMinute +$i)==1)
{
$stHotpInfo->TokenTimeOffsetMinute = $stHotpInfo->TokenTimeOffsetMinute + $i;
$stHotpInfo->LastLoginTotalMovingValue = $lTotalMovingValue;
//get new CB
$pResultCB=$this->KingKey_HOTP_GetNewCB($pInitCB, $stHotpInfo);
return $pResultCB;
}
}
return 0;
}
}
class seamoonsea
{
function checkcb($pcb)
{
if(strlen($pcb)!=400)
{
return -1;
}
$cMd5InputStr="ShenzhenSeamoonCommunicationTechnologyCo,Ltd,20050328.88888888889999999999";
$cMd5InputStr=$cMd5InputStr . substr($pcb,0,49) . substr($pcb,81,strlen($pcb));
if(substr($pcb,49,32)==strtoupper(md5($cMd5InputStr)))
{
return 1;
}
else
{
return -1;
}
}
function checkpasswordsea($pcb,$password)
{
if ($this->checkcb($pcb)!=1 )
{
reutrn -1;
}
$pResultCB=array();
for($tempk=0;$tempk<strlen($pcb);$tempk++)
{
$pResultCB[$tempk]= substr($pcb,$tempk,1);
}
$pucKey;
$InitDayTime=new otpdatetime();
$LastDayTime=new otpdatetime();
$stNow=new otpdatetime();
$iMinuteOffSet;
$iSecondOffSet;
$ucPswType;
$ucLastLoninState;
$ucLastPsw;
$iPswChangeTime;
$iPswActiveTime;
$ucPswActiveType;
$iKeyLen=(ord(substr($pcb,91,1))-48) * 100 + (ord(substr($pcb,92,1))-48)* 10 + (ord(substr($pcb,93,1))-48);
for($i=0;$i<5;$i++)
{
$pucKey[$i]=substr($pcb,94+$i,1);
}
for($i=0;$i<$iKeyLen-5;$i++)
{
$pucKey[$i+5 ]=substr($pcb,124+$i,1);
}
$stNow->year=date("Y");
$stNow->month=date("m") ;
$stNow->day=date("d");
$stNow->hour= date("H") ;
$stNow->minute=date("i") ;
$InitDayTime->year=(ord(substr($pcb,81,1))-48) * 1000 + (ord(substr($pcb,82,1))-48) * 100 + (ord(substr($pcb,89,1))-48) * 10 + (ord(substr($pcb,90,1))-48);
$InitDayTime->month=(ord(substr($pcb,112,1))-48) * 10 + (ord(substr($pcb,113,1))-48) ;
$InitDayTime->day=(ord(substr($pcb,116,1))-48) * 10 + (ord(substr($pcb,117,1))-48) ;
$InitDayTime->hour=(ord(substr($pcb,85,1))-48) * 10 + (ord(substr($pcb,86,1))-48) ;
$InitDayTime->minute=(ord(substr($pcb,108,1))-48) * 10 + (ord(substr($pcb,109,1))-48);
$InitDayTime->second=(ord(substr($pcb,120,1))-48) * 10 + (ord(substr($pcb,121,1))-48);
$LastDayTime->year=(ord(substr($pcb,110,1))-48) * 1000 + (ord(substr($pcb,111,1))-48) * 100 + (ord(substr($pcb,114,1))-48) * 10 + (ord(substr($pcb,115,1))-48);
$LastDayTime->month=(ord(substr($pcb,118,1))-48) * 10 + (ord(substr($pcb,119,1))-48) ;
$LastDayTime->day=(ord(substr($pcb,87,1))-48) * 10 + (ord(substr($pcb,88,1))-48) ;
$LastDayTime->hour=(ord(substr($pcb,106,1))-48) * 10 + (ord(substr($pcb,107,1))-48) ;
$LastDayTime->minute=(ord(substr($pcb,83,1))-48) * 10 + (ord(substr($pcb,84,1))-48);
$LastDayTime->second=(ord(substr($pcb,122,1))-48) * 10 + (ord(substr($pcb,123,1))-48);
$iMinuteOffSet=(ord(substr($pcb,100,1))-48) * 10 + (ord(substr($pcb,101,1))-48) * 10 + (ord(substr($pcb,102,1))-48);
if( substr($pcb,99,1)=="2")
{
$iMinuteOffSet=$iMinuteOffSet * -1;
}
$iSecondOffSet= (ord(substr($pcb,104,1))-48) * 10 + (ord(substr($pcb,105,1))-48);
if(substr($pcb,99,1)=="2")
{
$iSecondOffSet=$iSecondOffSet * -1;
}
$ucPswType=ord(substr($pcb,224,1))-48;
$ucLastLoninState=ord(substr($pcb,386,1))-48;
$ucLastPsw[0]= ord(substr($pcb,225,1));
$ucLastPsw[1]= ord(substr($pcb,226,1));
$ucLastPsw[2]= ord(substr($pcb,393,1));
$ucLastPsw[3]= ord(substr($pcb,394,1));
$ucLastPsw[4]= ord(substr($pcb,395,1));
$ucLastPsw[5]= ord(substr($pcb,396,1));
$ucLastPsw[6]=0;
$iPswChangeTime=(ord(substr($pcb,387,1))-48) * 1000 + (ord(substr($pcb,388,1))-48) * 100 + (ord(substr($pcb,389,1))-48) * 10 + (ord(substr($pcb,390,1))-48);
$iPswActiveTime= (ord(substr($pcb,391,1))-48) * 10 + (ord(substr($pcb,392,1))-48);
$ucPswActiveType=ord(substr($pcb,397,1))-48;
$nowtimecount=(int)((time()-mktime($InitDayTime->hour,$InitDayTime->minute,$InitDayTime->second,$InitDayTime->month,$InitDayTime->day,$InitDayTime->year))/60);
$lasttimecount=(int)(
mktime($LastDayTime->hour,$LastDayTime->minute,$LastDayTime->second,$LastDayTime->month,$LastDayTime->day,$LastDayTime->year)
/60-mktime($InitDayTime->hour,$InitDayTime->minute,$InitDayTime->second,$InitDayTime->month,$InitDayTime->day,$InitDayTime->year)/60);
$iTimeWindow=(int)($lasttimecount/(60*24));
if($iTimeWindow<60)
{
$iTimeWindow=5;
}
else if($iTimeWindow>=60 && $iTimeWindow<360)
{
$iTimeWindow=30;
}
else
{
$iTimeWindow=60;
}
if($iPswChangeTime!=60)
{
return -1;
}
for($i=-1*$iTimeWindow;$i<=$iTimeWindow;$i++)
{
if (($nowtimecount + $iMinuteOffSet + $i) <=($lasttimecount + $iMinuteOffSet)) {
continue;
}
if( $this->SMGetPsw($pucKey,$nowtimecount + $iMinuteOffSet + $i)==$password)
{
$pResultCB[110] =(int) ($stNow->year / 1000 );
$pResultCB[111] =(int) (($stNow->year % 1000) / 100 );
$pResultCB[114] =(int)(($stNow->year % 100) / 10 );
$pResultCB[115] =(int)((($stNow->year % 10) ));
$pResultCB[118] =(int)( $stNow->month / 10);
$pResultCB[119] =(int)( ($stNow->month % 10) );
$pResultCB[87] = (int)($stNow->day / 10);
$pResultCB[88] = (int)(($stNow->day % 10) );
$pResultCB[106] = (int) ($stNow->hour / 10 );
$pResultCB[107] =(int)( ($stNow->hour % 10));
$pResultCB[83] =(int)( $stNow->minute / 10);
$pResultCB[84] =(int)(($stNow->minute % 10)) ;
$pResultCB[122] = '0';
$pResultCB[123] = '0';
//
$pResultCB[100] = (int) (($i + $iMinuteOffSet) / 100);
$pResultCB[101] = (int) ((($i + $iMinuteOffSet) % 100) / 10);
$pResultCB[102] = (int) (($i + $iMinuteOffSet) % 10);
if ($i + $iMinuteOffSet > 0) {
$pResultCB[99] = '1';
} else {
$pResultCB[99] = '2';
}
//
for ($i = 103; $i < 106; $i++) {
$pResultCB[$i] = '0';
}
$pResultCB[386] = '1';
$strSeamoon="ShenzhenSeamoonCommunicationTechnologyCo,Ltd,20050328.88888888889999999999";
$cMd5InputStr = $strSeamoon;
for ($i = 0; $i < 49; $i++) {
$cMd5InputStr = $cMd5InputStr . ($pResultCB[$i]);
}
for ($i = 0; $i < 319; $i++) {
$cMd5InputStr = $cMd5InputStr . ($pResultCB[81 +$i]);
}
$cMd5ResultStr =strtoupper(md5($cMd5InputStr));
for ($i = 0; $i < 32; $i++) {
$pResultCB[49 + $i] = substr($cMd5ResultStr,$i,1) ;
}
$returnstr="";
for($i=0;$i<400;$i++)
{
$returnstr= $returnstr . $pResultCB[$i];
}
return $returnstr;
}
}
return "0";
}
function passwordsynsea($pcb,$password)
{
if ($this->checkcb($pcb)!=1 )
{
reutrn -1;
}
$pResultCB=array();
for($tempk=0;$tempk<strlen($pcb);$tempk++)
{
$pResultCB[$tempk]= substr($pcb,$tempk,1);
}
$pucKey;
$InitDayTime=new otpdatetime();
$LastDayTime=new otpdatetime();
$stNow=new otpdatetime();
$iMinuteOffSet;
$iSecondOffSet;
$ucPswType;
$ucLastLoninState;
$ucLastPsw;
$iPswChangeTime;
$iPswActiveTime;
$ucPswActiveType;
$iKeyLen=(ord(substr($pcb,91,1))-48) * 100 + (ord(substr($pcb,92,1))-48)* 10 + (ord(substr($pcb,93,1))-48);
for($i=0;$i<5;$i++)
{
$pucKey[$i]=substr($pcb,94+$i,1);
}
for($i=0;$i<$iKeyLen-5;$i++)
{
$pucKey[$i+5 ]=substr($pcb,124+$i,1);
}
$stNow->year=date("Y");
$stNow->month=date("m") ;
$stNow->day=date("d");
$stNow->hour= date("H") ;
$stNow->minute=date("i") ;
$InitDayTime->year=(ord(substr($pcb,81,1))-48) * 1000 + (ord(substr($pcb,82,1))-48) * 100 + (ord(substr($pcb,89,1))-48) * 10 + (ord(substr($pcb,90,1))-48);
$InitDayTime->month=(ord(substr($pcb,112,1))-48) * 10 + (ord(substr($pcb,113,1))-48) ;
$InitDayTime->day=(ord(substr($pcb,116,1))-48) * 10 + (ord(substr($pcb,117,1))-48) ;
$InitDayTime->hour=(ord(substr($pcb,85,1))-48) * 10 + (ord(substr($pcb,86,1))-48) ;
$InitDayTime->minute=(ord(substr($pcb,108,1))-48) * 10 + (ord(substr($pcb,109,1))-48);
$InitDayTime->second=(ord(substr($pcb,120,1))-48) * 10 + (ord(substr($pcb,121,1))-48);
$LastDayTime->year=(ord(substr($pcb,110,1))-48) * 1000 + (ord(substr($pcb,111,1))-48) * 100 + (ord(substr($pcb,114,1))-48) * 10 + (ord(substr($pcb,115,1))-48);
$LastDayTime->month=(ord(substr($pcb,118,1))-48) * 10 + (ord(substr($pcb,119,1))-48) ;
$LastDayTime->day=(ord(substr($pcb,87,1))-48) * 10 + (ord(substr($pcb,88,1))-48) ;
$LastDayTime->hour=(ord(substr($pcb,106,1))-48) * 10 + (ord(substr($pcb,107,1))-48) ;
$LastDayTime->minute=(ord(substr($pcb,83,1))-48) * 10 + (ord(substr($pcb,84,1))-48);
$LastDayTime->second=(ord(substr($pcb,122,1))-48) * 10 + (ord(substr($pcb,123,1))-48);
$iMinuteOffSet=(ord(substr($pcb,100,1))-48) * 10 + (ord(substr($pcb,101,1))-48) * 10 + (ord(substr($pcb,102,1))-48);
if( substr($pcb,99,1)=="2")
{
$iMinuteOffSet=$iMinuteOffSet * -1;
}
$iSecondOffSet= (ord(substr($pcb,104,1))-48) * 10 + (ord(substr($pcb,105,1))-48);
if(substr($pcb,99,1)=="2")
{
$iSecondOffSet=$iSecondOffSet * -1;
}
$ucPswType=ord(substr($pcb,224,1))-48;
$ucLastLoninState=ord(substr($pcb,386,1))-48;
$ucLastPsw[0]= ord(substr($pcb,225,1));
$ucLastPsw[1]= ord(substr($pcb,226,1));
$ucLastPsw[2]= ord(substr($pcb,393,1));
$ucLastPsw[3]= ord(substr($pcb,394,1));
$ucLastPsw[4]= ord(substr($pcb,395,1));
$ucLastPsw[5]= ord(substr($pcb,396,1));
$ucLastPsw[6]=0;
$iPswChangeTime=(ord(substr($pcb,387,1))-48) * 1000 + (ord(substr($pcb,388,1))-48) * 100 + (ord(substr($pcb,389,1))-48) * 10 + (ord(substr($pcb,390,1))-48);
$iPswActiveTime= (ord(substr($pcb,391,1))-48) * 10 + (ord(substr($pcb,392,1))-48);
$ucPswActiveType=ord(substr($pcb,397,1))-48;
$nowtimecount=(int)((time()-mktime($InitDayTime->hour,$InitDayTime->minute,$InitDayTime->second,$InitDayTime->month,$InitDayTime->day,$InitDayTime->year))/60);
$lasttimecount=(int)(
mktime($LastDayTime->hour,$LastDayTime->minute,$LastDayTime->second,$LastDayTime->month,$LastDayTime->day,$LastDayTime->year)
/60-mktime($InitDayTime->hour,$InitDayTime->minute,$InitDayTime->second,$InitDayTime->month,$InitDayTime->day,$InitDayTime->year)/60);
$iTimeWindow=90;
if($iPswChangeTime!=60)
{
return -1;
}
for($i=-1*$iTimeWindow;$i<=$iTimeWindow;$i++)
{
if (($nowtimecount + $iMinuteOffSet + $i) <=($lasttimecount + $iMinuteOffSet)) {
continue;
}
if( $this->SMGetPsw($pucKey,$nowtimecount + $iMinuteOffSet + $i)==$password)
{
$pResultCB[110] =(int) ($stNow->year / 1000 );
$pResultCB[111] =(int) (($stNow->year % 1000) / 100 );
$pResultCB[114] =(int)(($stNow->year % 100) / 10 );
$pResultCB[115] =(int)((($stNow->year % 10) ));
$pResultCB[118] =(int)( $stNow->month / 10);
$pResultCB[119] =(int)( ($stNow->month % 10) );
$pResultCB[87] = (int)($stNow->day / 10);
$pResultCB[88] = (int)(($stNow->day % 10) );
$pResultCB[106] = (int) ($stNow->hour / 10 );
$pResultCB[107] =(int)( ($stNow->hour % 10));
$pResultCB[83] =(int)( $stNow->minute / 10);
$pResultCB[84] =(int)(($stNow->minute % 10)) ;
$pResultCB[122] = '0';
$pResultCB[123] = '0';
//
$pResultCB[100] = (int) (($i + $iMinuteOffSet) / 100);
$pResultCB[101] = (int) ((($i + $iMinuteOffSet) % 100) / 10);
$pResultCB[102] = (int) (($i + $iMinuteOffSet) % 10);
if ($i + $iMinuteOffSet > 0) {
$pResultCB[99] = '1';
} else {
$pResultCB[99] = '2';
}
//
for ($i = 103; $i < 106; $i++) {
$pResultCB[$i] = '0';
}
$pResultCB[386] = '1';
$strSeamoon="ShenzhenSeamoonCommunicationTechnologyCo,Ltd,20050328.88888888889999999999";
$cMd5InputStr = $strSeamoon;
for ($i = 0; $i < 49; $i++) {
$cMd5InputStr = $cMd5InputStr . ($pResultCB[$i]);
}
for ($i = 0; $i < 319; $i++) {
$cMd5InputStr = $cMd5InputStr . ($pResultCB[81 +$i]);
}
$cMd5ResultStr =strtoupper(md5($cMd5InputStr));
for ($i = 0; $i < 32; $i++) {
$pResultCB[49 + $i] = substr($cMd5ResultStr,$i,1) ;
}
$returnstr="";
for($i=0;$i<400;$i++)
{
$returnstr= $returnstr . $pResultCB[$i];
}
return $returnstr;
}
}
return "0";
}
function SMGetPsw($key,$iMinutes)
{
$i=0;
for($i=0;$i<count($key);$i++)
{
$shain[$i]= ord($key[$i]);
}
$strSeamoon = "ShenzhenSeamoon20050328";
for($j=0;$j<strlen($strSeamoon);$j++)
{
$shain[$i]= ord(substr($strSeamoon,$j,1));
$i++;
}
$shain[$i]= (int)(($iMinutes & 0xFF000000) >> 24);
$shain[$i+1]= (int)(($iMinutes & 0x00FF0000) >> 16);
$shain[$i+2]= (int)(($iMinutes & 0x0000FF00) >> 8);
$shain[$i+3]= (int)(($iMinutes & 0x000000FF));
$i=$i+4;
$shain[$i]=0;
$shain2="";
for($j=0;$j<=$i;$j++)
{
$shain2=$shain2 . chr($shain[$j]);
}
$re= sha1($shain2);
$re=strtoupper($re);
$sg=new stringchange();
$bytere=$sg->hexStringToByte2($re);
return $this->SMGetpPswFromSha("SEAMOON20050328",1,$bytere);
}
function SMGetpPswFromSha($pSecret,
$ucKeyType,
$ucMessage_Digest
) {
$i=0;
$ch='1';
$ulTmpSum=array ();
$ulTmpSumLen=0;
$Message_Digest =array ();
$ucMessage_Digest2=array ();
for ($kk=0;$kk<20;$kk++)
{
$ucMessage_Digest2[$kk]=$ucMessage_Digest[$kk]& 0x0ff;
}
for ($i = 0; $i < 20; $i++) {
$Message_Digest[$i] = $ucMessage_Digest2[$i];
}
switch ($ucKeyType) {
case 0:
for ($i = 0; $i < 4; $i++) {
$ulTmpSum[$i] = $Message_Digest[$i]
+ $Message_Digest[4 + $i]
+ $Message_Digest[8 + $i]
+ $Message_Digest[12 + $i]
+ $Message_Digest[16 + $i];
}
$ulTmpSumLen = 4;
break;
case 1:
case 2:
for ($i = 0; $i < 4; $i++) {
$ulTmpSum[$i] = $Message_Digest[$i]
+ $Message_Digest[6 + $i]
+ $Message_Digest[12 + $i];
}
$ulTmpSum[4] = $Message_Digest[16] + $Message_Digest[17];
$ulTmpSum[5] = $Message_Digest[18] + $Message_Digest[19];
$ulTmpSumLen = 6;
break;
case 3:
case 4:
for ($i = 0; $i < 8; $i++) {
$ulTmpSum[$i] = $Message_Digest[$i]
+ $Message_Digest[8 + $i]
+ $Message_Digest[16]
+ $Message_Digest[17]
+ $Message_Digest[18]
+ $Message_Digest[19];
}
$ulTmpSumLen = 8;
break;
default:
// printf("
ERROR");
return "";
}
for ($i = 0; $i < $ulTmpSumLen; $i++) {
switch ($ucKeyType) {
case 1:
case 3:
switch ((int) ($ulTmpSum[$i] % 10)) {
case 0:
$ch = '0';
break;
case 1:
$ch = '1';
break;
case 2:
$ch = '2';
break;
case 3:
$ch = '3';
break;
case 4:
$ch = '4';
break;
case 5:
$ch = '5';
break;
case 6:
$ch = '6';
break;
case 7:
$ch = '7';
break;
case 8:
$ch = '8';
break;
case 9:
$ch = '9';
break;
default:
$ch = 'Z';
break;
}
break;
default:
switch ((int) ($ulTmpSum[$i] % 28)) {
case 0:
$ch = 'A';
break;
case 1:
$ch = 'B';
break;
case 2:
$ch = 'C';
break;
case 3:
$ch = 'D';
break;
case 4:
$ch = 'E';
break;
case 5:
$ch = 'F';
break;
case 6:
$ch = 'G';
break;
case 7:
$ch = 'H';
break;
case 8:
$ch = 'J';
break;
case 9:
$ch = 'K';
break;
case 10:
$ch = 'L';
break;
case 11:
$ch = 'M';
break;
case 12:
$ch = 'N';
break;
case 13:
$ch = 'P';
break;
case 14:
$ch = 'Q';
break;
case 15:
$ch = 'R';
break;
case 16:
$ch = 'S';
break;
case 17:
$ch = 'T';
break;
case 18:
$ch = 'W';
break;
case 19:
$ch = 'X';
break;
case 20:
$ch = 'Y';
break;
case 21:
$ch = '3';
break;
case 22:
$ch = '4';
break;
case 23:
$ch = '5';
break;
case 24:
$ch = '6';
break;
case 25:
$ch = '7';
break;
case 26:
$ch = '8';
break;
case 27:
$ch = '9';
break;
default:
$ch = 'Z';
break;
}
break;
}
$psw =$psw . $ch;
}
return $psw;
}
}
?><?
Did this file decode correctly?
Original Code
<?php
eval(gzinflate(base64_decode('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')));
?>
Function Calls
gzinflate | 4 |
base64_decode | 4 |
Stats
MD5 | aa6ad2fe2e308fd7d412a54221a55ab2 |
Eval Count | 4 |
Decode Time | 473 ms |