xtekky_

Untitled

Jul 25th, 2022
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 20.94 KB | None | 0 0
  1. <?php
  2. class XLog
  3. {
  4.     private $HEX_CHAR = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
  5.  
  6.     public function __construct()
  7.     {
  8.         $this->calculate("c223979477ffc516", 56);
  9.     }
  10.  
  11.     public function decode($decode)
  12.     {
  13.         $decode = $this->bytearray($decode);
  14.         $resultLen = 0;
  15.         $last = '78468ec4';
  16.         $s = substr($this->bytesToHexFun($decode) , 2);
  17.         $stringBuffer = '';
  18.         $strList = [];
  19.         for ($i = 0;$i < strlen($s) / 16 - 1;$i++)
  20.         {
  21.             $input = substr($s, $i * 16, 16);
  22.             $strList[] = $input;
  23.         }
  24.         $last = substr($s, strlen($s) - 8);
  25.  
  26.         $strList[] = $last;
  27.         $times = $this->getHandleCount($last);
  28.         for ($i = 0;$i < count($strList) - 1;$i++)
  29.         {
  30.             $calculate = $this->calculate($strList[$i], $times);
  31.  
  32.             if (0 == $i)
  33.             {
  34.                 $tmp = $last . '744c0000';
  35.                 for ($j = 0;$j < 8;$j++)
  36.                 {
  37.                     $xor = $this->doxor(substr($calculate, ($j * 2) , 2) , substr($tmp, $j * 2, 2));
  38.                     if (strlen($xor) < 2)
  39.                     {
  40.                         $xor = '0' . $xor;
  41.                     }
  42.                     $stringBuffer .= $xor;
  43.                 }
  44.             }
  45.             if ($i >= 1)
  46.             {
  47.                 $tmp = $strList[$i - 1];
  48.  
  49.                 for ($j = 0;$j < 8;$j++)
  50.                 {
  51.                     $xor = $this->doxor(substr($calculate, ($j * 2) , 2) , substr($tmp, $j * 2, 2));
  52.  
  53.                     if (strlen($xor) < 2)
  54.                     {
  55.                         $xor = '0' . $xor;
  56.                     }
  57.                     $stringBuffer .= $xor;
  58.                 }
  59.             }
  60.         }
  61.         $string = $stringBuffer;
  62.         $bytes = $this->hexToByteArray($string);
  63.  
  64.         $count = $bytes[0] & 7;
  65.         $resultLen = count($decode) - 13 - $count;
  66.         $count = $count % 4;
  67.         if (0 == $count)
  68.         {
  69.             $count = 4;
  70.         }
  71.         $result = array_fill(0, $resultLen, 0);
  72.         $result = $this->arraycopy($bytes, $count, $result, 0, $resultLen);
  73.         $result = $this->changeToLongArray($result);
  74.         return $this->bytearray_decode($result);
  75.     }
  76.  
  77.     public function decodeHex($hex)
  78.     {
  79.         $decode = hex2bin($hex);
  80.         return $this->decode($decode);
  81.     }
  82.  
  83.     public function encode($input)
  84.     {
  85.         $inputStart = $this->changeLongArrayTobytes($this->bytearray($input));
  86.         $sourceLen = count($inputStart);
  87.         $fillCount = 4 - $sourceLen % 4;
  88.         $fillNum = 8 - $sourceLen % 8;
  89.         $isAdd = 4;
  90.         if ($sourceLen % 8 >= 4)
  91.         {
  92.             $isAdd = 0;
  93.         }
  94.         if (8 == $fillNum)
  95.         {
  96.             $isAdd = - 4;
  97.             $fillNum = 0;
  98.         }
  99.         $bytes = array_fill(0, $sourceLen + $fillNum + 8, 0);
  100.         $eorByte = [0x78, 0x46, 0x8e, 0xc4, 0x74, 0x4c, 0x00, 0x00];
  101.         $bytes[0] = 0x80 | $fillNum;
  102.         $bytes[1] = 0x30;
  103.         $bytes[2] = 0x22;
  104.         $bytes[3] = 0x24;
  105.         $result = '02';
  106.         $bytes = $this->arraycopy($inputStart, 0, $bytes, $fillCount, count($inputStart));
  107.         $bytes = $this->changeLongArrayTobytes($bytes);
  108.         for ($i = 0;$i < count($bytes) / 8;$i++)
  109.         {
  110.             $sb = '';
  111.             for ($j = 0;$j < 8;$j++)
  112.             {
  113.                 $r1 = $bytes[$j + 8 * $i];
  114.                 $r2 = $eorByte[$j];
  115.                 if ($r2 < 0)
  116.                 {
  117.                     $r2 = $r2 + 256;
  118.                 }
  119.                 if ($r1 < 0)
  120.                 {
  121.                     $r1 = $r1 + 256;
  122.                 }
  123.                 $tmp = $r1 ^ $r2;
  124.                 if (0 == $tmp)
  125.                 {
  126.                     $sb .= '00';
  127.                 }
  128.                 else
  129.                 {
  130.                     $str = dechex($tmp);
  131.                     if (strlen($str) < 2)
  132.                     {
  133.                         $sb .= '0';
  134.                     }
  135.                     $sb .= $str;
  136.                 }
  137.             }
  138.             $times = $this->getHandleCount('78468ec4');
  139.             $times = 56;
  140.             $s = $this->calculateRev($sb, $times);
  141.             for ($z = 0;$z < 8;$z++)
  142.             {
  143.                 $substring = substr($s, (2 * $z) , (2 * $z + 2) - $this->makeSafe(2 * $z));
  144.                 $eorByte[$z] = $this->makeSafe($this->parseLong($substring, 16));
  145.             }
  146.             $result .= $s;
  147.         }
  148.         $result .= '78468ec4';
  149.         $bytes1 = $this->hexToByteArray($result);
  150.         return $this->bytearray_decode($bytes1);
  151.     }
  152.  
  153.     private function arraycopy($src, $startPos = 0, $dest = [], $destPos = 0, $length = false)
  154.     {
  155.         $final = [];
  156.         if (false == $length)
  157.         {
  158.             $length = count($src);
  159.         }
  160.         $final = array_merge($final, array_slice($dest, 0, $destPos));
  161.         $final = array_merge($final, array_slice($src, $startPos, $length));
  162.         $final = array_merge($final, array_slice($dest, $length + $destPos));
  163.         return $final;
  164.     }
  165.  
  166.     private function bigInt2Hex($num)
  167.     {
  168.         $d = $num;
  169.         $result = "";
  170.         while ("0" != $d)
  171.         {
  172.             $d = bcdiv($d, 16, 10);
  173.             $exp = explode('.', $d);
  174.             $d = $exp[0];
  175.             $reminder = $exp[1];
  176.             $reminder = floatval("0." . $reminder);
  177.             $r = dechex($reminder * 16);
  178.             $result .= $r;
  179.         }
  180.         $result = strrev($result);
  181.         return $result;
  182.     }
  183.  
  184.     private function bytearray($string)
  185.     {
  186.         return array_values(unpack('C*', $string));
  187.     }
  188.  
  189.     private function bytearray_decode($byteArray)
  190.     {
  191.         $chars = array_map('chr', $byteArray);
  192.         return join($chars);
  193.     }
  194.  
  195.     private function bytesToHexFun($bytes)
  196.     {
  197.         $buf = array_fill(0, count($bytes) * 2, ' ');
  198.         $a = 0;
  199.         $index = 0;
  200.         foreach ($bytes as $b)
  201.         {
  202.             if ($b < 0)
  203.             {
  204.                 $a = 256 + $b;
  205.             }
  206.             else
  207.             {
  208.                 $a = $b;
  209.             }
  210.             $buf[$index++] = $this->HEX_CHAR[(int)($a / 16) ];
  211.             $buf[$index++] = $this->HEX_CHAR[$a % 16];
  212.         }
  213.         return join('', $buf);
  214.     }
  215.  
  216.     private function calculate($input, $times)
  217.     {
  218.         if (strlen($input) != 16)
  219.         {
  220.             return '';
  221.         }
  222.         $s36 = 0;
  223.         $s40 = 0;
  224.         $s108 = - 1073747680;
  225.         $s136 = $this->makeSafe(-1640531527 * $times);
  226.         $str1 = substr($input, 0, 8 - 0);
  227.         $str2 = substr($input, 8, 16 - 8);
  228.         $s140 = $this->makeSafe($this->parseLong(substr($input, 0, 8 - 0) , 16));
  229.         $s144 = $this->makeSafe($this->parseLong(substr($input, 8, 16 - 8) , 16));
  230.  
  231.         $r0 = 1180082309;
  232.         $r2 = 1180082309;
  233.         $r4 = 1180082309;
  234.         $r6 = - 1436101968;
  235.         $r5 = $s108;
  236.         $r12 = 0;
  237.         for ($i = 0;$i < $times;$i++)
  238.         {
  239.             $r0 = $s140;
  240.             $r2 = $s140;
  241.             $r4 = $s140;
  242.             $r6 = $s136;
  243.             $r5 = $s108;
  244.             $string = $this->stablizieBinary(decbin($r6 >> 11));
  245.             if (strlen($string) < 3)
  246.             {
  247.                 $string = '0';
  248.             }
  249.             else
  250.             {
  251.                 $string = substr($string, strlen($string) - 2);
  252.             }
  253.             $r6 = intval($string, 2);
  254.             $r0 = $this->makeSafe(($this->unsignedRightShift($r2, 5) ^ $this->makeSafe($r0 << 4)) + $r4);
  255.             $r5 = $this->getShifting($this->makeSafe($r5 + ($r6 << 2)));
  256.             $r6 = 1640531527;
  257.             $r2 = $this->makeSafe($s136 + $r5);
  258.             $r5 = $s136;
  259.             $r0 = $this->makeSafe($r0 ^ $r2);
  260.             $r2 = $s108;
  261.             $r6 = $this->makeSafe($r6 + $r5);
  262.             $r4 = $this->makeSafe($s144 - $r0);
  263.             $r5 = $this->makeSafe($r6 & 3);
  264.             $r0 = $this->makeSafe($r4 << 4);
  265.             $r2 = $this->getShifting($r2 + ($r5 << 2));
  266.             $r0 = $this->makeSafe(($r0 ^ $this->unsignedRightShift($r4, 5)) + $r4);
  267.             $r2 = $this->makeSafe($r2 + $r6);
  268.  
  269.             $r01 = $r0;
  270.             $r0 = $this->makeSafe($r0 ^ $r2);
  271.             $s140 = $this->makeSafe($s140 - $r0);
  272.             $s136 = $r6;
  273.             $s144 = $r4;
  274.         }
  275.         $str140 = $this->stablizeHex((strlen($this->toHexString($s140)) == 7 ? '0' : '') . $this->toHexString($s140));
  276.         $str144 = $this->stablizeHex((strlen($this->toHexString($s144)) == 7 ? '0' : '') . $this->toHexString($s144));
  277.         if (strlen($str140) < 8)
  278.         {
  279.             $count = 8 - strlen($str140);
  280.             for ($i = 0;$i < $count;$i++)
  281.             {
  282.                 $str140 = '0' . $str140;
  283.             }
  284.         }
  285.         if (strlen($str144) < 8)
  286.         {
  287.             $count = 8 - strlen($str144);
  288.             for ($i = 0;$i < $count;$i++)
  289.             {
  290.                 $str144 = '0' . $str144;
  291.             }
  292.         }
  293.         return $str140 . $str144;
  294.     }
  295.  
  296.     private function calculateRev($input, $times)
  297.     {
  298.         $r12 = 0;
  299.         $s108 = - 1073747680;
  300.         $s136 = 0;
  301.         $s140 = $this->makeSafe($this->parseLong(substr($input, 0, 8 - 0) , 16));
  302.         $s144 = $this->makeSafe($this->parseLong(substr($input, 8, 16 - 8) , 16));
  303.         for ($i = 0;$i < $times;$i++)
  304.         {
  305.             $r2 = $s108;
  306.             $r6 = $s136;
  307.             $r4 = $s144;
  308.             $r5 = $r6 & 3;
  309.             $r0 = $this->makeSafe($r4 << 4);
  310.             $r2 = $this->getShifting($r2 + ($r5 << 2));
  311.             $r0 = $this->makeSafe(($r0 ^ $this->unsignedRightShift($r4, 5)) + $r4);
  312.             $r2 = $this->makeSafe($r2 + $r6);
  313.             $r0 = $this->makeSafe($r0 ^ $r2);
  314.             $s140 = $this->makeSafe($s140 + $r0);
  315.             $s136 = $this->makeSafe($s136 - 0x61c88647);
  316.             $r5 = $s108;
  317.             $r4 = $s140;
  318.             $r2 = $s140;
  319.             $r0 = $s140;
  320.             $r6 = $s136;
  321.             $string = $this->stablizieBinary(decbin($r6 >> 11));
  322.             if (strlen($string) < 3)
  323.             {
  324.                 $string = '0';
  325.             }
  326.             else
  327.             {
  328.                 $string = substr($string, strlen($string) - 2);
  329.             }
  330.             $r6 = intval($string, 2);
  331.             $r0 = $this->makeSafe($this->makeSafe($this->unsignedRightShift($r2, 5) ^ $this->makeSafe($r0 << 4)) + $r4);
  332.             $r5 = $this->getShifting($r5 + ($r6 << 2));
  333.             $r2 = $this->makeSafe($s136 + $r5);
  334.             $r0 = $this->makeSafe($r0 ^ $r2);
  335.             $s144 = $this->makeSafe($s144 + $r0);
  336.         }
  337.         $str140 = $this->stablizeHex((strlen($this->toHexString($s140)) == 7 ? '0' : '') . $this->toHexString($s140));
  338.         $str144 = $this->stablizeHex((strlen($this->toHexString($s144)) == 7 ? '0' : '') . $this->toHexString($s144));
  339.         if (strlen($str140) < 8)
  340.         {
  341.             $count = 8 - strlen($str140);
  342.             for ($i = 0;$i < $count;$i++)
  343.             {
  344.                 $str140 = '0' . $str140;
  345.             }
  346.         }
  347.         if (strlen($str144) < 8)
  348.         {
  349.             $count = 8 - strlen($str144);
  350.             for ($i = 0;$i < $count;$i++)
  351.             {
  352.                 $str144 = '0' . $str144;
  353.             }
  354.         }
  355.         return $str140 . $str144;
  356.     }
  357.  
  358.     private function changeLongArrayTobytes($arrays)
  359.     {
  360.         $result = [];
  361.         for ($i = 0;$i < count($arrays);$i++)
  362.         {
  363.             if ($arrays[$i] > 127)
  364.             {
  365.                 $result[$i] = $arrays[$i] - 256;
  366.             }
  367.             else
  368.             {
  369.                 $result[$i] = $arrays[$i];
  370.             }
  371.         }
  372.         return $result;
  373.     }
  374.  
  375.     private function changeToLongArray($bytes)
  376.     {
  377.         $result = [];
  378.         for ($i = 0;$i < count($bytes);$i++)
  379.         {
  380.             if ($bytes[$i] < 0)
  381.             {
  382.                 $result[$i] = $bytes[$i] + 256;
  383.             }
  384.             else
  385.             {
  386.                 $result[$i] = $bytes[$i];
  387.             }
  388.         }
  389.         return $result;
  390.     }
  391.  
  392.     private function doxor($strHex_X, $strHex_Y)
  393.     {
  394.         $anotherBinary = decbin(hexdec($strHex_X));
  395.         $thisBinary = decbin(hexdec($strHex_Y));
  396.  
  397.         $result = '';
  398.         if (strlen($anotherBinary) != 8)
  399.         {
  400.             for ($i = strlen($anotherBinary);$i < 8;$i++)
  401.             {
  402.                 $anotherBinary = '0' . $anotherBinary;
  403.             }
  404.         }
  405.         if (strlen($thisBinary) != 8)
  406.         {
  407.             for ($i = strlen($thisBinary);$i < 8;$i++)
  408.             {
  409.                 $thisBinary = '0' . $thisBinary;
  410.             }
  411.         }
  412.         for ($i = 0;$i < strlen($anotherBinary);$i++)
  413.         {
  414.             if ($thisBinary[$i] == $anotherBinary[$i])
  415.             {
  416.                 $result .= '0';
  417.             }
  418.             else
  419.             {
  420.                 $result .= '1';
  421.             }
  422.         }
  423.         return dechex(intval($result, 2));
  424.     }
  425.  
  426.     private function getHandleCount($hex)
  427.     {
  428.         $reverse = $this->reverse($hex);
  429.         $r1 = $this->parseLong($reverse, 16);
  430.         $r0 = 0xCCCCCCCD;
  431.         $r2 = $this->getUmullHigh($r1, $r0);
  432.         $s58 = $r0;
  433.         $r2 = $r2 >> 2;
  434.         $r2 = $r2 + ($r2 << 2);
  435.         $r1 = $r1 - $r2;
  436.         $r2 = 32;
  437.         $r1 = $r2 + ($r1 << 3);
  438.         return $r1;
  439.     }
  440.  
  441.     private function getShifting($point)
  442.     {
  443.         switch ($point)
  444.         {
  445.             case -1073747680:
  446.                 return 1198522846;
  447.             case -1073747676:
  448.                 return -87105875;
  449.             case -1073747672:
  450.                 return 808464432;
  451.             case -1073747668:
  452.                 return 959787575;
  453.         }
  454.         return 0;
  455.     }
  456.  
  457.     // private function getUmullHigh($r0, $r2)
  458.     // {
  459.     //     $n1     = $this->parseLong($this->stablizeHex(dechex($r0)), 16);
  460.     //     $n2     = $this->parseLong($this->stablizeHex(dechex($r2)), 16);
  461.     //     $result = $this->makeSafe($n1 * $n2);
  462.     //     $string = dechex($result);
  463.     //     $string = substr($string, 0, strlen($string) - 8 - 0);
  464.     //     return $this->makeSafe(hexdec($string));
  465.     // }
  466.     private function getUmullHigh($r0, $r2)
  467.     {
  468.         $r0_us = $this->signed2unsigned($r0);
  469.         $r2_us = $this->signed2unsigned($r2);
  470.         $mul = bcmul($r0_us, $r2_us);
  471.         $res = substr($this->bigInt2Hex($mul) , 0, 8);
  472.         return $this->parseLong($res, 16);
  473.     }
  474.  
  475.     private function hexToByteArray($inHex)
  476.     {
  477.         $hexlen = strlen($inHex);
  478.         if ($hexlen % 2 == 1)
  479.         {
  480.             $hexlen++;
  481.             $result = array_fill(0, ((int)($hexlen / 2)) , NULL);
  482.             $inHex = '0' . $inHex;
  483.         }
  484.         else
  485.         {
  486.             $result = array_fill(0, ((int)($hexlen / 2)) , NULL);
  487.         }
  488.         $j = 0;
  489.         for ($i = 0;$i < $hexlen;$i += 2)
  490.         {
  491.             $result[$j] = hexdec(substr($inHex, $i, $i + 2 - $i));
  492.             $j++;
  493.         }
  494.  
  495.         return $this->changeLongArrayTobytes($result);
  496.     }
  497.  
  498.     private function makeSafe($num)
  499.     {
  500.         $i = pack('i', $num);
  501.         $i = unpack('i', $i) [1];
  502.         return $i;
  503.     }
  504.  
  505.     private function parseLong($str, $radix = 10)
  506.     {
  507.         return (int)base_convert($str, $radix, 10);
  508.     }
  509.  
  510.     private function reverse($hex)
  511.     {
  512.         return substr($hex, 6, 8 - 6) . substr($hex, 4, 6 - 4) . substr($hex, 2, 4 - 2) . substr($hex, 0, 2 - 0);
  513.     }
  514.  
  515.     // converts signed integer to unsigned
  516.     private function signed2unsigned($num)
  517.     {
  518.         $res = pack('i', $num);
  519.         $res = unpack('I', $res) [1];
  520.         return $res;
  521.     }
  522.  
  523.     private function stablizeHex($val)
  524.     {
  525.         $final = $val;
  526.         if (strlen($val) == 16)
  527.         {
  528.             $final = substr($val, 8);
  529.         }
  530.         return $final;
  531.     }
  532.  
  533.     private function stablizieBinary($val)
  534.     {
  535.         $final = $val;
  536.         if (strlen($val) == 64)
  537.         {
  538.             $final = substr($val, 32);
  539.         }
  540.         return $final;
  541.     }
  542.  
  543.     private function toHexString($hex)
  544.     {
  545.         return dechex($hex);
  546.     }
  547.  
  548.     private function unsignedRightShift($a, $b)
  549.     {
  550.         if ($b >= 32 || $b < - 32)
  551.         {
  552.             $m = (int)($b / 32);
  553.             $b = $b - ($m * 32);
  554.         }
  555.         if ($b < 0)
  556.         {
  557.             $b = 32 + $b;
  558.         }
  559.         if (0 == $b)
  560.         {
  561.             return (($a >> 1) & 0x7fffffff) * 2 + (($a >> $b) & 1);
  562.         }
  563.         if ($a < 0)
  564.         {
  565.             $a = ($a >> 1);
  566.             $a &= 0x7fffffff;
  567.             $a |= 0x40000000;
  568.             $a = ($a >> ($b - 1));
  569.         }
  570.         else
  571.         {
  572.             $a = ($a >> $b);
  573.         }
  574.         return $a;
  575.     }
  576. }
  577.  
  578. $xlog = new Xlog;
  579. //$test = $xlog->encode("i love cock");
  580. /*$filename = "xlog.bin";
  581. $file = fopen( $filename, "r" );
  582. $filesize = filesize( $filename );
  583. $filetext = fread( $file, $filesize );
  584. print $xlog->decode($filetext); */
  585. $filename = "xlog.hex";
  586. //print hex2bin("02d5195d516a1481464b25dad88517d35ca207b3db88bb5ed09eb08871df15cab02a2b799c39c10af5296cf79fe43a7baadcb2316ab8697b3c34beeced4169cb2c0e840c10678f0a05104c11f68bb75827cd8904bf0210470d9c023dba60de2fa04a893269a68e241d69563b40f51110700c98a01f8c35645ef3b171e68192432e5228b3e34bebebb836a1204edc54db0b0603d7de80424e64d8ead79125ee5ff0bd185dd234169e21b106ee8e4e6f83adcd00c9075cd4192736a272e6e46fca1d82da7d004c03e742f2cdae0aae9de86b1a41df1cdd59f4c39ff94e53b57fbadfc0eb98c946b57907f2bb1df693200e9c70b8ad758485afd0beb4e8c0a00f0d1d515820ddd84935cee045ceed6675a626754f098cb30998e7cf20e5ecb4515de06353e60470a59583e7c01ff8187c3c18bc9e76da3ab2d2d0e7970329a624c2fad35748816fe719118060f8cc0dbeb2140ce2888f862f8db8299e2e4c43e5218f1fc7d84a67aef1eba7fcaed898658dbc0fde3ca2e3bdc79803f2b260af1f218e0159a16d990bde9d56fc7df144d6f1e8ddbfb1c219186795e7e220f579c95ecc73490b7264f0be68af014cc4629829057c833f1e537fba25cc21efba73bb3b46b6a1ff01b4b3d20ed88e9b843a299afdab469ae2ddf0c24e84a54a05cdb7b21be6dbd4e6a5524d518f32ba6aca857d2da82994dfc9a9237ac71d0e97a5e60d2242bc659fb0c24692a74ca529f4c893582c5a8513fc955e60172b62afad893c0f21baa2891be780fd4f0f5eee3e517595a7846f59ddd098a801b905327e67b1d1d127fc16386a748057200c938f47dcc15958a7e96e66726f21038dfde4488035b382d5c9d1fc75075cb8bfc49d143df72b0cd032e2a0ca2640c279173dfaee51575648458ec7f35778545d0ba9bfb72e220fc6d7ac217af96028843260b11ad889a5a9f468a70fefb0057e10e1e8090ef7099d5d0230a10265109c24388abfc13bce4a98bd3a2ea945cb37fd3a4dcb10fce16ee3f062db95ecd4f287bfef323d95a2c2600e42857e7b8fc3985462c12b5e22e1278d6fd41d4d6dba76f6151d1462cc6f78d263d3aa5f4eca7adffdcfb3c043e088aab76a79ae98c7d7aef348fb8c6a5ce48d5fc6df663a10f12a31604d8146b4c41e9511cadced601513a3d8a067c87cde8267fc1a01baf25064ed809c1792f8de8d9d34dfc56cb1677524852696066b64a76c9fc2696ca18070b0d4e2c24c6d6f32fda6eb5a6588e4ee8bff1ee2e6dc415245784741306caa9f0be96e07b53205c74e79125c06454634ae21f0c8969b6af05bf1a095900a45484a74da8e3c4da45864d71f668943cada7fa6c2185056dbbe39bf3cedec379dd5aa0ca28e059e22dba988f165037ab26aefd87bf3272513cbafeb10e18365335060358f8612d9aeddc6fb0c901fc8823b89ef7a67aabedaebf085615055738efee61c6bb9770903779da9a01e3924e6d52f9806b35f91bf20321c476f666b79e1a7c871952b94b2e5f4802b4be8f201557f3e499b9a7c60d6f3c059f9b0f760dcef3b63836593ecfa6599cfdb0b8a8a1266f25926ceaa3f91bb3c18a1ecbc835bdffc7b677c7b450890b20a22c41da4563de2cc8a6475eb6a10ac23fea2f63b32a10fce426a111055ec496ecfa18f82c28a06ecd5483d8270a42c1c429a7d8081fa76b4b8e3a10875caf6d98c189b826d6b7835af4f20c179896c32d38098ab16ef30f5ea78221572216918dceb412f088819063b88759604d99422dda103e9f6f899f0428acf8b7ac0afe729e536f09989b2b5a2b611d415c2dd3283a65feb0f285256502ee8663ecc28c069fa6b87ce92cf0bdfb185a85b6110854d2abc6003f1905436b306126055cb4c4c43ef4608e460c2c25114fdb1b8cec2a7778502e8ce0265a22abd03aad7950b685576ddf559520c54f0c452a21e658df00846fa5c41e2bebf437ba0a041f8fffdf41503760bcc33ced2e63fef922072a2a0f2d3218c51943b9d4c15f3318301b0fbf01637d93782f5d7d01e2a118302e95f62bb32c583ef90b634f38c49bac04ae6c82bd3e40f3cf89d6707d9943e510b2f8b4e25498bf335809b0d3caa4c54bb7ac7f34bf1a0b6464b4ef9882b191384bb42ce983d361da62419a15a8d8f5a3d0485d3215b4357a18c2b3e9112090faeb7be8b51ef2ed25df2cb40afc0f717d3766f4b25332fb9d6b0042386b8c7269ac95e7f68d05332106cc4f734d27e4091785e94e323430c260b08d897de94a8822b6fdee16700f1eb558522c021dedc711eb9cd7488d4e6fbbe468a0cc844ca16d37c4d09571cb6ea6ab240fa664fa190856e34f3ec633fddcfc8d38738bb80c79e699962cff0a2c9465a05f166443653006c7cc4bba27b701f32f7e54303485761c271eb61c551025ebf25634ae907b40029e23d018c23692f92ac8f91236f9b87f7c5671bd45529a3a91827c991d439fcf7662cfde63cb6bd3b318afc940efe5e148978afd21e6c3b493537fb2604612fb6f8693d2a8f413bbd6a36a36ed77a3b9c7f1a99a017283e67c86e3bcf9058ff3f8ed95e7ba95b1cd5d8a01e7c36a827f4dd07f27333f329c5e2ffabeb8ab028c6e04ac7e15ff3423fb473359d423841eb51cef59876f73dd46e76ca09f13f359a85b11958c5a185a7304c741b1162038f8b");
  587. $file = fopen( $filename, "r" );
  588. $filesize = filesize( $filename );
  589. $filetext = fread( $file, $filesize );
  590. $decodedhex = hex2bin($filetext);
  591.  
  592. print $xlog->decode($decodedhex);
  593. ?>
Add Comment
Please, Sign In to add comment