Показать сообщение отдельно
Старый 29.02.2008, 00:39   #6
Гость
 
Сообщений: n/a
По умолчанию

Эхх что то не работает...

Код:
<?

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
Никак что то не совпадает :(
  Ответить с цитированием