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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 11.10.2011, 21:32   #1
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от glukmaker Посмотреть сообщение
У кого есть исходники Blowfish на Delphi ?
воспользуйся поиском, на этом форуме уже выкладывались

Добавлено через 9 минут
хм, сам найти не смог (вложения в найденых сообщениях уже затерялись) так что вот:
http://l2ph.coderx.ru/wsvn/filedetai...as&rev=25&sc=1
http://l2ph.coderx.ru/wsvn/filedetai...nc&rev=25&sc=1
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 11.10.2011 в 21:32. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 2 спасибками от:
Старый 12.10.2011, 12:19   #2
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

За ссылки - спасибо.
Но все равно пока я ничего не добился...

Делал все так:
В модуле Blowfish исправил:
Код:
...
L2BlowFish = class
...
далее делаю так:
Код:
type TRequestAuthLogin = packed record
   length:word;
   case byte of
   0:(
      s1:byte;
      login:packed array[1..14] of char;
      pass:packed array[1..16] of char;
      s2:byte;
      s3:cardinal;
      s4:cardinal;
      checksum:cardinal;
      s5:cardinal;
      );
   1: (
      buf:packed array[1..48] of byte; // для удобства криптования
       );
   2: (
      fch:packed array[1..12] of cardinal;  // для удобства вычисления сhecksum
       )
   end;
...

var
...
  login:string='testlogin';
  password:string='testpass';

const
   Token:string=#$5F#$3B#$35#$2E#$5D#$39#$34#$2D#$33#$31#$3D#$3D#$2D#$25#$78#$54#$21#$5E#$5B#$24#$00;

...



function CheckSum(data:array of cardinal):cardinal;
var
 i:integer;
begin
  result:=0;
  for i:=low(data) to high(data) do Result:=result xor data[i];
end;



procedure TForm1.Button3Click(Sender: TObject);
var
 str:TRequestAuthLogin;
 var i: integer;
begin
 str.length:=SIZEOF(str);
 str.s1:=0;
 str.s2:=8;
 str.s3:=0;
 str.s4:=0;
 for i:=1 to 14 do
  if i>length(login)
    then str.login[i]:=chr(0)
    else str.login[i]:=login[i];
 for i:=1 to 16 do
  if i>length(password)
    then str.pass[i]:=chr(0)
    else str.pass[i]:=password[i];
 str.checksum:=0;
 str.s5:=0;
 showdata(str, sizeof(str));
 str.checksum:=CheckSum(str.fch);
 showdata(str, sizeof(str));
  
  With L2BlowFish.Create do
   try
     Init(Token,length(Token));
     bfEncode(str.buf,length(str.buf));
   finally
     free;
   end;

  showdata(str, sizeof(str));  // отображение пакета в мемо

 ClientSocket1.Socket.SendBuf(str,sizeof(str));
end;
Получается:
Код:
Сформированный пакет:
32 00 00 74 65 73 74 6C 6F 67 69 6E 00 00 00 00 
00 74 65 73 74 70 61 73 73 00 00 00 00 00 00 00 
00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 

Добавлена checksum:
32 00 00 74 65 73 74 6C 6F 67 69 6E 00 00 00 00 
00 74 65 73 74 70 61 73 73 00 00 00 00 00 00 00 
00 08 00 00 00 00 00 00 00 00 19 76 0D 18 00 00 
00 00 

Зашифровано BlowFish:
32 00 E1 AC FE 48 16 7F 8A 9B 31 06 F1 1B 6A 2E 
82 05 7A DE 27 3E 85 7D E9 68 2B 22 2D EF 7B 76 
1F 2F 41 C5 1A 43 EE E2 02 77 52 DF 15 33 46 C5 
6B 5C
И все равно сервер ничего мне не присылая рвет соединение.

Вот что показывает снифер (тут правда с IP и ТСP-заголовками):
Код:
Вот, что получается, если работать с клиентом, вводя те же логин и пароль:

Packet ID: 13    TTL: 119
Packet size: 51    bytes type: TCP
Source IP      :    195.42.69.24: 2106
Destination IP :      10.11.3.11: 3257
------------------------------ Packet dump -----------------------------------
000000 45 00 00 33 77 30 00 00 | 77 06 B7 3C C3 2A 45 18     E..3w0..w..<.*E.
000010 0A 0B 03 0B 08 3A 0C B9 | DF C4 C6 17 5B 6E 00 0B     .....:......[n..
000020 50 18 FD 20 83 0B 00 00 | 0B 00 00 32 13 67 6D 5A     P.. .......2.gmZ
000030 78 00 00                                              x..


==============================================================================
Packet ID: 14    TTL: 128
Packet size: 90    bytes type: TCP
Source IP      :      10.11.3.11: 3257
Destination IP :    195.42.69.24: 2106
------------------------------ Packet dump -----------------------------------
000000 45 00 00 5A 3D 34 40 00 | 80 06 A8 11 0A 0B 03 0B     E..Z=4@.........
000010 C3 2A 45 18 0C B9 08 3A | 5B 6E 00 0B DF C4 C6 22     .*E....:[n....."
000020 50 18 FF F4 4F 78 00 00 | 32 00 C0 C8 F0 18 F0 10     P...Ox..2.......
000030 1E 9C 21 DD 8D 8D 64 24 | 8B 52 66 20 26 8A DE BF     .!...d$.Rf &...
000040 83 96 43 C6 34 40 6D AE | 0A 76 41 61 6F 5C 4B BD     ..C.4@m..vAao\K.
000050 6F A5 C2 AA 4D DA FE 17 | 4A 27                       o...M...J'

==================================================================================

А это получается, если я вручную формирую и отправляю:

Packet ID: 5     TTL: 119
Packet size: 51    bytes type: TCP
Source IP      :    195.42.69.24: 2106
Destination IP :      10.11.3.11: 3263
------------------------------ Packet dump -----------------------------------
000000 45 00 00 33 25 9C 00 00 | 77 06 08 D1 C3 2A 45 18     E..3%...w....*E.
000010 0A 0B 03 0B 08 3A 0C BF | 31 27 7F EA 49 7F CC 06     .....:..1'.I..
000020 50 18 FD 20 1B BF 00 00 | 0B 00 00 C7 0F D7 12 5A     P.. ..........Z
000030 78 00 00                                              x..


==============================================================================
Packet ID: 6     TTL: 128
Packet size: 40    bytes type: TCP
Source IP      :      10.11.3.11: 3263
Destination IP :    195.42.69.24: 2106
------------------------------ Packet dump -----------------------------------
000000 45 00 00 28 3D 99 40 00 | 80 06 A7 DE 0A 0B 03 0B     E..(=.@.........
000010 C3 2A 45 18 0C BF 08 3A | 49 7F CC 06 31 27 7F F5     .*E....:I..1'.
000020 50 10 FF F4 BE EB 00 00                               P.......


==============================================================================
Packet ID: 7     TTL: 128
Packet size: 90    bytes type: TCP
Source IP      :      10.11.3.11: 3263
Destination IP :    195.42.69.24: 2106
------------------------------ Packet dump -----------------------------------
000000 45 00 00 5A 3D 9A 40 00 | 80 06 A7 AB 0A 0B 03 0B     E..Z=.@.........
000010 C3 2A 45 18 0C BF 08 3A | 49 7F CC 06 31 27 7F F5     .*E....:I..1'.
000020 50 18 FF F4 90 FA 00 00 | 32 00 E1 AC FE 48 16 7F     P.......2....H.
000030 8A 9B 31 06 F1 1B 6A 2E | 82 05 7A DE 27 3E 85 7D     ..1..j...z.'>.}
000040 E9 68 2B 22 2D EF 7B 76 | 1F 2F 41 C5 1A 43 EE E2     .h+"-.{v/A.C..
000050 02 77 52 DF 15 33 46 C5 | 6B 5C                       .wR..3F.k\
Как видно, пакеты от меня и от клиента отличаются.
Похоже, я снова делаю что-то неправильно...
так как впервые я заинтересовался протоколом ла2 (со вчерашнего дня) , то не знаю даже в чем проблема.
Помогите, кто может...

Добавлено через 9 минут
Вобщем скорее всего тут одно из двух:
1. Я неправильно криптую пакет.
2. Я неправильно вычисляю контрольную сумму.

Насчет контрольной суммы, делаю так, как прочитал на одном из форумов:


Цитата:
До этапа шифрования в исходящие пакеты добавляется чексумма:
Из данных поочерёдно отделяются 32-битные слова. Первое XOR'ится со вторым. Результат этой операции XOR'ится со следующим словом и так далее.

Последний раз редактировалось glukmaker, 12.10.2011 в 12:19. Причина: Добавлено сообщение
glukmaker вне форума   Ответить с цитированием
Старый 12.10.2011, 15:31   #3
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

glukmaker, ты бы пакет от клиента дешифровать попробовал, зачем на сервер слать не разобравшись правильно ли шифруешь?
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился спасибкой от:
Старый 13.10.2011, 18:23   #4
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
glukmaker, ты бы пакет от клиента дешифровать попробовал, зачем на сервер слать не разобравшись правильно ли шифруешь?
Уже пробовал. Не могу расшифровать... Похоже что токен на сервере не "стандартный", и я его не знаю.

сервер c4 http://la2.draconic.ru

пробовал узнать токен с помощью EngExt_ME.exe - получаю Unknown ENGINE.DLL format.

Можно было бы спросить у местных ботоводов, но навряд-ли кто-то признается в том, что он ботами пользуется...

А у меня вобще-то конечная цель - получить доступ к альянсовому чату.

Добавлено через 1 час 13 минут
Все. Проблема была в токене.
Скачал Walker Patcher, правда он мне аж 5 токенов выдал.
Но методом расшифровки пакета, посылаемого клиентом я нашел из них нужный.

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




================================================== =======================================

Добавлено через 22 часа 21 минуту
Проблемы с сервером авторизации успешно преодолены.
Теперь я могу авторизоваться и получать SessionKey2

Теперь вторая часть (работа с гейм-сервером):

Согласно найденному в инете:
Цитата:
После установки соединения, клиент высылает пакет ProtocolVersion, содержащий версию протокола.
Но, в одном источнике описание такое:
Код:
00
XX XX XX XX		// Версия протокола
В другом такое:
Код:
ProtocolVersion

Формат:
07 01           // Длина
00              // Тип
XX XX XX XX     // ProtocolVersion
[далее идет массив-константа, который хз от чего зависит, у меня он такой:]
09 07 54 56 03 09 0B 01 07 02 54 54 56 07 00 02
55 56 00 51 00 53 57 04 07 55 08 54 01 07 01 53
00 56 55 56 01 06 05 04 51 03 08 51 08 51 56 04
54 06 55 08 02 09 51 56 01 53 06 55 04 53 00 56
56 53 01 09 02 09 01 51 54 51 09 55 56 09 03 04
07 05 55 04 06 55 04 06 09 04 51 01 08 08 06 05
52 06 04 01 07 54 03 06 52 55 06 55 55 51 01 02
04 54 03 55 54 01 57 51 55 05 52 05 54 07 51 51
55 07 02 53 53 00 52 05 52 07 01 54 00 03 05 05
08 06 05 05 06 03 00 0D 08 01 07 09 03 51 03 07
53 09 51 06 07 54 0A 50 56 02 52 04 05 55 51 02
53 00 08 54 04 52 56 06 02 09 00 08 03 53 56 01
05 00 55 06 08 56 04 0D 06 07 52 06 07 04 0A 06
01 04 54 04 00 05 02 04 54 00 09 52 53 05 04 01
04 05 05 01 52 51 52 0D 06 51 08 09 54 53 00 0D
01 02 03 54 53 01 05 03 08 56 54 07 02 54 0B 06
что на самом деле правильно?
И что подразумевается под ProtocolVersion? Значение, которое мы получили в пакете Init от логин-сервера? Или что-то другое?

Последний раз редактировалось glukmaker, 13.10.2011 в 18:24. Причина: Добавлено сообщение
glukmaker вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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