Цитата:
Сообщение от DjSeNseI
ну а вдруг кто нибудь поможет. Я и сам в принцепи пробую разобраться со блушишем и чек суммой. но пока как то не очень у мя есть 3 разных чексуммы и ни одна не хочет работь и так же блюфишь...
Добавлено через 3 минуты
И ещё кто нибудь знает с4 яву сборку с плохой защитой для эксперементов. Кто знает скажите название или адрес... Пожалуйста
|
Я это к тому, что по тому куску, что ты выложил много не понятно, что в нём делается.
Могу посоветовать локальный С4 сервер, тренеруйся сколько влезет.
Вот, я как то пробовал делать:
delphi Код:
function pkt_ckecksum(pos: integer; count: integer):cardinal;
var
i, j : integer;
crc, chksum : longint;
begin
j:=pos; //начало для подсчета контрольной суммы
crc:=0;
chksum:=0;
for i:=0 to (count div 4) do //длину считаем блоками по 4
begin
crc:=PacketB[j];
crc:=crc or (PacketB[j+1] shl 8);
crc:=crc or (PacketB[j+2] shl 16);
crc:=crc or (PacketB[j+3] shl 24);
chksum := chksum xor crc;
j:=j+4;
end;
//move(chksum,PacketB[count+pos],4);
result:=chksum;
end;
procedure build_RequestAuthLogin();
begin
//pos начинается с 0!!!
InitPkt; //инициализируем пакет
WriteW($32); //"\x32\x00" - длина пакета постоянна и равна 0x30 + 0x02
WriteID($00); //"\x00" - тип пакета (0x00 - RequestAuthLogin)
{pos:=$03;}
WriteS(DefaultAccount); //"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - login
pos:=$11; WriteS(DefaultPassword); //"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - password
pos:=33; WriteB($08); //"\x08" - означает конец секции login/password
// WriteD($0); //"\x00\x00\x00\x00\x00\x00\x00\x00" - в c3 не применяется (зарезервированно?)
// WriteD($0); //
pos:=$2a; WriteD(pkt_ckecksum(2,40)); // чексумма
WriteD($0); //"\x00\x00\x00\x00";
//к.сумма считается для блока начиная со смещ. 2, длиной 40 байт
// add_ckecksum(2,40);
end;
PS: придумал не сам, брал из материалов на разных сайтах.