<?php
Class TKMDecrypt
{
var $KEY_SIZE = 8;
var $INT_TO_CHAR_TABLE = array();
var $HexChars = "0123456789ABCDEF";
public function __construct()
{
$this->INT_TO_CHAR_TABLE = chr(0) . "ZNÇV bCKıUt01ÜLşEaB23OÖ456u7M8S!9ŞFRDAIPHpTĞiü/J+%hrGYsyc&" . "(zn)çvjd=ekğmog?*-öf_İ{l}[]#$@<>;.:\"'WwQqXx\\\n\r,|~é^" .
chr(1) . chr(2) . chr(3) . chr(4) . chr(5) . chr(6) . chr(7) . chr(8) .
chr(9) . chr(11) . chr(12) . chr(14) . chr(15) . chr(16) . chr(17) . chr(18) . chr(19) . chr(20);
$this->INT_TO_CHAR_TABLE = preg_split('//u', $this->INT_TO_CHAR_TABLE, -1, PREG_SPLIT_NO_EMPTY);
}
public function Decrypt0($cipherText, $key)
{
$_loc7_ = 0;
$_loc14_ = 0;
$_loc15_ = "";
$_loc16_ = 0;
$_loc17_ = 0;
$_loc18_ = 0;
$_loc19_ = 0;
$_loc20_ = 0;
$_loc21_ = 0;
$_loc22_ = 0;
$_loc3_ = "";
$_loc4_ = "";
$_loc5_ = "";
$_loc6_ = "";
$_loc8_ = $cipherText[(strlen($cipherText) - 1)] - chr(0);
switch ($_loc8_)
{
case 0:
$_loc6_ = $cipherText;
break;
case 1:
$_loc6_ = $this->convertFromHexStr($cipherText, -1);
break;
case 2:
$_loc14_ = $cipherText[(strlen($cipherText) - 2)] - chr(0);
$_loc15_ = $this->deShuffleHexStr($cipherText, $key, $_loc14_, -2);
$_loc6_ = $this->convertFromHexStr($_loc15_, 0);
break;
}
$_loc9_ = array();
$_loc7_ = 0;
while ($_loc7_ < $this->KEY_SIZE)
{
$_loc16_ = ord($_loc6_[(20 + $_loc7_)]) - 90;
$_loc17_ = (int)(ord($_loc6_[25 + $this->KEY_SIZE + $_loc16_]) - 90);
$_loc9_[$_loc7_] = $_loc17_;
$_loc7_++;
}
$_loc10_ = 0;
$_loc7_ = 0;
while ($_loc7_ < $this->KEY_SIZE)
{
$_loc10_ = $_loc10_ + $_loc9_[$_loc7_];
$_loc7_++;
}
$_loc10_ = $_loc10_ % $_loc9_[0];
$_loc10_++;
$_loc11_ = 0;
$_loc7_ = 0;
while ($_loc7_ < 5)
{
$_loc18_ = ord($_loc6_[(20 + $this->KEY_SIZE + $_loc7_)]) - (60 + $_loc7_);
$_loc5_ = $_loc5_ . chr($_loc18_);
$_loc7_++;
}
$_loc11_ = intval($_loc5_);
$_loc4_ = substr($_loc6_, 55 + $this->KEY_SIZE, $_loc11_);
$_loc12_ = $_loc11_;
$_loc13_ = 0;
$_loc7_ = 0;
while ($_loc7_ < $_loc12_)
{
$_loc19_ = ord($_loc4_[($_loc7_)]);
$_loc20_ = $_loc9_[$_loc13_ % $this->KEY_SIZE];
$_loc21_ = $_loc19_ << 8 - $_loc20_ & 255;
$_loc19_ = ($_loc19_ >> $_loc20_ | $_loc21_) & 255;
$_loc22_ = $_loc19_;
$_loc22_ = $_loc22_ - (int)($_loc10_);
$_loc3_ = $_loc3_ . $this->INT_TO_CHAR_TABLE[($_loc22_)];
$_loc13_++;
$_loc7_++;
}
return $_loc3_;
}
protected function convertFromHexStr($param1, $param2)
{
$_loc6_ = 0;
$_loc3_ = strlen($param1) + $param2;
$_loc4_ = "";
$_loc5_ = 0;
while ($_loc5_ < $_loc3_)
{
$_loc6_ = (int)(strpos($this->HexChars, $param1[$_loc5_]) << 4 | strpos($this->HexChars, $param1[$_loc5_ + 1]));
$_loc4_ = $_loc4_ . chr($_loc6_);
$_loc5_ = $_loc5_ + 2;
}
return $_loc4_;
}
protected function deShuffleHexStr($param1, $param2, $param3, $param4)
{
$_loc5_ = 0;
$_loc6_ = 0;
$_loc12_ = 0;
$_loc13_ = 0;
$_loc14_ = 0;
$_loc7_ = array();
$_loc8_ = array();
$_loc5_ = 0;
while ($_loc5_ < $this->KEY_SIZE)
{
$_loc7_[($_loc5_ + $param3) % $this->KEY_SIZE] = ord($param2[($_loc5_)]) - ord(0);
$_loc5_++;
}
$_loc9_ = strlen($param1) + $param4;
$_loc10_ = substr($param1, 0, $_loc9_);
$_loc11_ = (int)($_loc9_ / $this->KEY_SIZE);
$_loc15_ = 0;
while ($_loc15_ < strlen($_loc10_))
{
$_loc8_[] = ord($_loc10_[$_loc15_]);
$_loc15_++;
}
$_loc5_ = 0;
while ($_loc5_ < $_loc11_)
{
$_loc12_ = $_loc5_ * $this->KEY_SIZE;
$_loc6_ = 0;
while ($_loc6_ < $this->KEY_SIZE)
{
$_loc13_ = $_loc12_ + $_loc7_[$_loc6_];
$_loc14_ = ord($param1[($_loc12_ + $_loc6_)]);
$_loc8_[$_loc13_] = $_loc14_;
$_loc6_++;
}
$_loc5_++;
}
$_loc10_ = "";
$_loc5_ = 0;
while ($_loc5_ < Count($_loc8_))
{
$_loc10_ = $_loc10_ . chr($_loc8_[$_loc5_]);
$_loc5_++;
}
return $_loc10_;
}
}
$TKMDecrypt = new TKMDecrypt();
$encData = 'XXXXXXX';
$speedDataStr = $TKMDecrypt->Decrypt0($encData, "62403715");
echo $speedDataStr;