Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 13.01.2011, 01:38   #1
Новичок
 
Регистрация: 12.01.2011
Сообщений: 16
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
Brave пока неопределено
По умолчанию Снова про Init как проверить правельность результата?

Я новичок на этом форуме, поэтому хочется всех поприветствовать!
Надеюсь найти здесь ответы на возникающие сложности, поиском пользоваться умею, но к сожалению не решил свои проблемы.


Для экспериментов с пакетами, установил java логин-сервер от L2Base для Interlude на локалке.

Пишу на Delphi 7.(I love Pascal )
(На работе программирую на редкостной гадости под названием Х++)

Привожу код моего консольного приложения:
(Куски брал с похожих тем)
delphi Код:
type   PFixPck = ^TFixPck;   TFixPck = packed record case Integer of     0:(ch:    array[Word] of Char);     1:(bt:    array[Word] of Byte);     2:(size:  Word;        id:    Byte;        dbt:   array[0..65532] of Byte);    end; var   ws: TWSAData;   Sock:TSocket;   Addr_in: sockaddr_in;   size: integer;   DataB:TFixPck;   i:integer; procedure LoginXORDecrypt(var xpck: TFixPck); var   i,k: Integer; begin   i:=xpck.size-8;   k:=PInteger(@xpck.ch[i])^;   while i>=6 do begin     PInteger(@xpck.ch[i])^:=PInteger(@xpck.ch[i])^ xor k;     k:=k-PInteger(@xpck.ch[i])^;     i:=i-4;   end; end; function GetSocketData(Socket: TSocket; var Data; const Size: Word): Boolean; var   Position: Word;   Len: Integer;   DataB: array[0..$5000] of byte absolute Data; begin   Result:=False;   Position:=0;   while Position<Size do   begin     Len:=recv(Socket,DataB[Position],1,0);     if Len<=0 then Exit;     Inc(Position, Len);   end;   Result:=True; end; begin   if WSAStartup($202,ws)<>0 then     begin       Writeln('Error1!');       exit;    end;    Sock:=WinSock.socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);    if Sock= INVALID_SOCKET then                             begin                               Writeln('Oshibka sozdania soketa!');                               exit;                             end;   FillChar(Addr_in, SizeOf(sockaddr_in), 0);   Addr_in.sin_family:= AF_INET;   Addr_in.sin_addr.s_addr := inet_addr('127.0.0.1');   Addr_in.sin_port := HToNS(2106);   if connect(Sock, Addr_in, SizeOf(Addr_in))=0 then   begin    WriteLn('Connect!!! =)');    DataB.size:=186;    write(inttostr(DataB.size));    GetSocketData(Sock,DataB.dbt,186);    for i:=0 to 186 do    begin     Write(IntToHex(ord(DataB.ch[i]),2));write(' ')    end;    LoginXORDecrypt(DataB);    WriteLn('=');    for i:=0 to 186 do    begin     Write(IntToHex(ord(DataB.ch[i]),2));write(' ')    end;   end   else   begin    WriteLn('No connect!!!');   end;   { TODO -oUser -cConsole Main : Insert code here } end.
Доп.Вопрос: Какой тег подкрашивает Delphi код?

Вкратце:
1.Создаю сокет
2.Подключаюсь
3.Читаю буфер
4.Вывожу результат
5.XOR (РазКСОРиваю)
6.Вывожу результат.

Вот что получается:
Код:
RAW представление:
BA 00 00 BA 00 0D CA D7 70 99 75 78 3D F5 C6 F5 D2 4D 40 BC D8 84 98 37 8A 98
7F 0D 8D 99 3C 83 1F 29 B8 EC DF 4C 39 85 C9 66 3B B1 E2 97 79 C5 34 5B 0A 4C 7
9 EC 17 0E 33 6E 98 FF EE AE 88 3A 97 3C 36 A1 63 B8 27 54 79 4E BE 67 AC C8 18
71 25 24 00 4A 10 B5 7E 70 1D 85 D5 CA 93 A2 F7 53 78 4B CF AD 80 1B 87 4E 9C C0
 66 4B AF C7 CF 08 A1 FE F3 C0 96 21 7D 42 50 D5 9B 2D DB CD 51 04 CD B8 96 C0 5
2 3D 5C 07 97 2A 58 E6 29 7F 6D E8 10 D8 7D 18 75 77 6D F8 B8 A1 2D 90 99 35 00
36 13 E1 DC 83 F4 67 8D EE 5A E3 07 87 54 E3 81 DF 23 E0 AD 6E 0C B0 F3 00 1F AD
 F6 
=========LoginXORDecrypt=============
BA 00//размер 
00 //тип пакета(Init)
BA 00 0D 21// ID сессии
F0 AD 0D CF//Ревизия протокола
//Далее не осилил, так как ненашел нормального описания см. ниже.
AA F0 B0 86 91 0A 36 38 6D A1 EC 71 3B 09 1F 4B
70 77 4F 44 97 B2 ED 61 6E 19 D6 F2 CB 17 F7 BC 73 0E C3 7F 01 6C 87 03 46 96 09 8F 02 26 C4 E0 F9 7D 82 7A 9A 4A 8B EB 12 DB 05 B5 F1 E2 F9 56 69 89 2C 18 BB CA 70 EA 45 15 30 CB 39 8E D8 BA 64 E4 6B CC F6 07 51 4A 94 FC A4 A1 8B F2 83 A9 43 30 7A 20 37 D7 21 86 7E 59 73 06 67 E5 E9 
54 D6 97 5A C3 44 E0 53 42 C4 3B EB 64 21 7F 3A B5 F1 26 
37 C0 FF 05 6F 68 C0 32 E8 BE 97 3F 55 2D 5A 8B AA 2C B7
80 BF 59 95 B2 04 76 6C 0E 40 86 3A 
88 BC 2C B1 2F 50 00 
00 00 00 F3 
00 1F AD F6
Описания пакета Init которые мне удалось найти:
[i]1.http://fursoffers.narod.ru/Packets.htm#Init

Сразу появляется вопрос:
По алгоритму XOR который я взял с форума, XOR ключ находиться не в последних 4 байтах а в пред последних 4 байтах.(Номер первого байта ключа (186-8=178)) Как правильно его брать?

2.http://www.la2kings.ru/la2bot/packets.html#Init
Это описание вообще не понятное. поэтому прошу объяснить, что есть что в пакете.
Не могли бы вы мне пояснить от чего зависит место расположения XOR ключа в пакете Init от сервера?

Как проверить, правильно ли я расксорил пакет?

Возможно я вообще все не так делаю =))

Последний раз редактировалось Brave, 13.01.2011 в 01:47.
Brave вне форума   Ответить с цитированием
 

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:49.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!