Эхх что то не работает...
Код:
<?
include 'x_blowfish.php';
// Вычисляет чек сумму для login сервера
function checksum($raw) {
$ckecksum = 0;
$raw = unpack("L*",$raw);
for ($i=1;$i<=count($raw);$i++) {
$ckecksum ^= $raw[$i];
}
return pack("L",$ckecksum);
}
// Вывод пакета для отладки
function _p($hex) {
print str_repeat("_",54);
for ($i=0;$i<strlen($hex);$i++) {
if ($i % 0x10 == 0) printf("\r\n0x%02X | ",$i);
printf("%02X ",ord($hex{$i}));
}
print "\r\n";
}
$key = "_;5.]94-31==-%xT!^[$\x00";
$crypt = new x_blowfish($key);
$packet = "\x32\x00";
$packet .= "\x00";
$packet .= str_pad("111",14,"\x00");
$packet .= str_pad("222",16,"\x00");
$packet .= "\x08";
$packet .= str_repeat("\x00",8);
$packet .= str_repeat("\x00",4);
$packet .= str_repeat("\x00",4);
$checksum = checksum(substr($packet,2,-8));
$packet = substr_replace($packet,$checksum,42,4);
/*
32 00 0C DD D7 23 42 49 DE 11 37 C2 1A 04 97 B5
5C 21 B8 C5 CC 87 59 BC 82 CC 43 C6 34 40 6D AE
0A 76 41 61 6F 5C 4B BD 6F A5 D7 30 FE 25 9C 55
E1 23
*/
_p($packet);
$encode = substr($packet,2);
$encode = $crypt->bfEncode($encode,48);
$packet = substr_replace($packet,$encode,2);
_p($packet);
?>
выводит
Код:
______________________________________________________
0x00 | 32 00 00 31 31 31 00 00 00 00 00 00 00 00 00 00
0x10 | 00 32 32 32 00 00 00 00 00 00 00 00 00 00 00 00
0x20 | 00 08 00 00 00 00 00 00 00 00 32 03 31 0B 00 00
0x30 | 00 00
______________________________________________________
0x00 | 32 00 6A A2 F1 52 EC 1E 53 7B FD 44 DF 1F AC D6
0x10 | A9 48 D9 6D B9 83 9F 3F 85 1A 3E 22 BC 4F 3A 21
0x20 | 06 2D 6E 37 CA 26 6C FD C7 19 E5 8A F9 91 6F 6F
0x30 | 45 6A
А должно быть
Код:
32 00 0C DD D7 23 42 49 DE 11 37 C2 1A 04 97 B5
5C 21 B8 C5 CC 87 59 BC 82 CC 43 C6 34 40 6D AE
0A 76 41 61 6F 5C 4B BD 6F A5 D7 30 FE 25 9C 55
E1 23
Никак что то не совпадает :(