PDA

Просмотр полной версии : Ботик


ElKornacio
18.06.2009, 22:57
Собственно решил сделать бота.. ООГ. естессно для грации. ничего стоящего нагуглить не смог и начал лазать сам. начал с написания мини проксика для логин сервера.
Вот 5 заснифанных пакетов, которые мне присылает сервер:

//первый идёт просто при подключении клиента
От кого: Сервер
Размер: 184 байт
Тип: 0хD3
Содержание:
D3 86 1A 92 3C E7 B3 CF 32 0B C5 30 99 EB F5 B4 9E 3A 15 29 5D 77 CA F5 3D 24 71 0A 84 68 E2 66 A2 6D E4 77 5C 0D B2 83 B5 11 AF 5A 33 AE 2A 83 22 8D 16 CF D7 51 4E 31 FE 2F BB D7 E1 75 A6 41 A0 12 67 BF 08 7F BB B3 03 31 2F E8 6D 04 EE D0 7D C9 39 2C 08 8B 1F 0A 21 BF 20 6B 40 5E 38 0A 83 1E 82 30 58 11 DF 27 80 9A A9 E6 0D 7C 80 B2 0B B1 1D DE 33 EC 44 9A 16 DE 70 C7 71 C8 36 61 1F 6A 04 0C 33 88 50 0F 27 AF F2 A1 E8 87 57 3F 0A 2D AA 09 FA D8 1A B8 36 AE 50 66 08 90 5D 90 F0 E3 E2 9A 28 28 79 76 9F 1F AF B8 F8 DC 48 3B 51 E7 7B 53 CE FE F5 28

//во втором как я понимаю лог и пасс
От кого: Клиент
Размер: 40 байт
Тип: 0хA6
Содержание:
A6 8D 57 06 B8 95 03 6B B5 BB 8B CB 18 75 63 64 B5 BB 8B CB 18 75 63 64 D8 96 C4 E5 1B A7 3D 8F B5 BB 8B CB 18 75 63 64

// в третьем скорее всего сервер мне сообщает, успешность моих действий и надо ли показывать мне правила.
От кого: Сервер
Размер: 32 байт
Тип: 0хE2
Содержание:
E2 5E A8 7C 3E 7D C0 32 B5 BB 8B CB 18 75 63 64 87 A4 6C 3E 31 C1 F5 09 FF 51 A8 53 A7 D0 E5 52

// четвёртый = вообще хз нах оно мне нужен... мб какие нить данные о том что я справедливый юзверь и у меня пашет ГГ? но как то он великоват для етого..
От кого: Клиент
Размер: 176 байт
Тип: 0хF4
Содержание:
F4 B7 F7 C5 71 E9 1D 91 E2 4D 50 4F 4B B7 92 2D 6E 48 30 16 60 D9 62 B3 21 44 60 FE 7C 4E 33 B7 7D 43 84 0C 7D 71 C2 EF D4 B7 F8 18 9D 78 74 26 84 CD 29 EF 0B 75 52 BB B8 CA 6F A4 6E 08 62 8F F0 E4 48 B6 C0 D9 54 5E CE 3E 7B 02 E4 FF 5C 5E E1 84 8D 5A 9E 74 D4 27 26 24 61 FC F8 29 B0 1B 81 B9 8D 17 98 B4 C5 9E 7F 43 C5 24 7F 72 FC 7F 50 57 4F 9D CE 6B 1E 0E 07 29 CA 45 EC 57 87 AB 35 9A 9A A4 32 B4 4A DA B5 BB 8B CB 18 75 63 64 24 CC 46 8F AA 90 5B 93 B5 BB 8B CB 18 75 63 64 9D 4C 73 85 99 2E 9D 52 B5 BB 8B CB 18 75 63 64

// ну и пятый - от сервера. вновь неипу зачем он. радует что хоть длина красивая...
От кого: Сервер
Размер: 16 байт
Тип: 0х41
Содержание:
41 DF D7 DE 63 90 54 29 0D 0D 9E 92 7F F7 32 AE



собственно воть. что я предполагаю:
в первом пакете идёт ключ по которому шифруецо вся дальнейшая переписка. Воть на ентом я остановился и больше ничего предположить не смог) думаю сервер не важен, но если важно - fanage.ru
мб кто-то уже расковырял.. гугль мне не помог.. поделитесь если уж не жалко)

NLObP
18.06.2009, 23:35
Вот (http://www.la2kings.ru/la2bot/packets.html), может быть полезной, статья по пакетам линейки.

ElKornacio
18.06.2009, 23:57
Судя по ентому мануалу в пакете Init как минимум 4 байте(ревизия) должны быть статичны. у меня вообще всё меняецо... та и размер не совпадает. я как понял мануал для C4?

xkor
19.06.2009, 00:14
ElKornacio, для пакета Init размер счас вроде 186 байт, пакет зашифрован 16тибайтным ключём по BlowFish, под блоуфишем зашифрован XOR'ом, так что ничего статичного в нём в зашифрованном виде быть не может)

ЗЫ очень недавно уже описывал этот пакет более подробно в этом разделе, так что поиск в зубы и вперёд)

Добавлено через 1 минуту
вот даж сам за тебя нашел - http://coderx.ru/showthread.php?p=30849#post30849

Yegor
19.06.2009, 01:45
ElKornacio, ну что пробовал реализовать логин используя функции которые предоставил xkor? Мне тоже интересно.
Кстати xkor на шоке как я понял сейчас используется стандартный протокол для логин сервера, так как юзая волкер и с дешифрацией логина справляется WSS версии начала 2008 года.Правда там ещё в разрыве стоит WP660f но я не заметил в нем скриптов на модификацию логин трафика, хотя без него почему то не хочет конектиться :(.

ElKornacio
19.06.2009, 02:28
Ещё не пробовал) Устал слишком) завтра попробую)

xkor
19.06.2009, 02:34
Yegor, вот кста с шоками хрень какая то, на интерлюдии защита состояла в одном байтике запрятаном, сейчас этот байтик по прожнему должен быть таким как и был на интерлюдии, иначе не пускает, но валкер раньше не заходял а счас заходит через wss, спрашивается, что за хрень...

ЗЫ надо будет ещё всётаки убедиться посылает ли валкер с wss этот байтик, а то может сервак его и так почему то пускает...

Yegor
19.06.2009, 10:04
Что интересно WSS с логин сервером обменивается 7ю пакетами, хотя смотрел через ПКХ при конекте клиента их всего 5. Что это может быть?

"но валкер раньше не заходял а счас заходит через wss" - без WP660f таки не смог запустить волкер, может эта прога знает про Шок и дополнительно корректирует траффик? Хотя ничего там для этого включенного не нашел.

ElKornacio
19.06.2009, 13:55
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
const
b: array[0..15] of Byte = ($6B, $60, $CB, $5B, $82, $CE, $90, $B1, $CC, $2B, $6C, $55, $6C, $6C, $6C, $6C);
var
s:string;
e,v:string;
z:word;
i:integer;
begin
s:=Socket.ReceiveText;
e:=Copy(s,2,length(s)-2);
//e:=StrToHex(s,' ');
z:=length(s)-2;
BF.Init(b,16); // пишем ключег
BF.bfDecode(e,length(e)); // декодируем
Form1.ListBox2.Items.Add('<');
Form1.ListBox1.Items.Add(e); // здесь происходит аццкий краш всего живого. лезут ексцепты, выпрыгивает ЦПУ и тп. подозреваю что какое то неправильное смещение при декодировании блоуфишем.
t.Add('0'+IntToStr(z));
Form1.ServerSocket1.Socket.Connections[0].SendText(s);
end;

xkor
19.06.2009, 15:27
Yegor, логин сервер и без wpf проходит, а защитный байтик там)
BF.bfDecode(e,length(e)); // декодируем
страшно представить что ты этим декодируешь)
надо так:
BF.bfDecode(e[1],length(e)); // декодируем

Добавлено через 2 минуты
ElKornacio, ну точнее своим кодом ты декодировал не содержимое переменной е, а собсно указатель на это содержимое + кучу байт после этого указателя в которых могло находиться всё что угодно, в результате работа программы после данной операции абсолютно не предсказуема)

Добавлено через 1 минуту
ЗЫ народ, разберитесь уже с основными типами дельфи, всмысле что они из себя представляют и как в памяти располагаются)

ElKornacio
19.06.2009, 15:59
сново я что то делаю не так :\ почему то уверен что я не очень красиво перегоняю массивы)
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
const
b: array[0..15] of Byte = ($6B, $60, $CB, $5B, $82, $CE, $90, $B1, $CC, $2B, $6C, $55, $6C, $6C, $6C, $6C);
var
s:string;
e,v:string;
z:word;
i:integer;
pck: TFixPck;
begin
s:=Socket.ReceiveText;
e:=Copy(s,3,length(s)-2);
z:=length(s)-2;
BF.Init(b,16);
BF.bfDecode(e[1],length(e));
pck.size:=length(s);
i:=0;
while i<>length(s) do begin
pck.ch:=s[i+1];
i:=i+1;
end;
LoginXORDecrypt(pck);
e:=pck.ch;
e:=StrToHex(e,' ');
Form1.ListBox2.Items.Add('<');
Form1.ListBox1.Items.Add(IntToHex(ord(s[1]),2)+' '+IntToHex(ord(s[2]),2)+' '+e);
t.Add('0'+IntToStr(z));
Form1.ServerSocket1.Socket.Connections[0].SendText(s);
end;

[I]Добавлено через 1 минуту
ошибок не лезет, но от пакета остаются только 6 байт - размер и тип)

xkor
19.06.2009, 21:07
в pck.size надо пихать первые два байта пакета а не то что ты
но так как ты делаешь:
while i<>length(s) do begin
pck.ch[i]:=s[i+1];
i:=i+1;
end;
то в pck.size ваще ничего пихать не надо так как это pck.ch[0] и pck.ch[1]

а вообще всё это
pck.size:=length(s);
i:=0;
while i<>length(s) do begin
pck.ch[i]:=s[i+1];
i:=i+1;
end;
надо заменить на Move(s[1],pck,Length(s));
как будет работать e:=pck.ch; я себе плохо представляю, не уверен что так как ты хочешь.., скорее всего запихнет в e байты до первого нулевого...

Yegor
20.06.2009, 01:55
xkor,у меня без Wpf при конекте на логин сервер не приходит даже волкеру первый пакет, пускал через пакетхак как прокси. Если в разрыв в цепочку поставить wpf то все ок, такое ощущение что сервер палит по имени процесса что я запускаю именно бот

xkor
20.06.2009, 02:17
Yegor, ээ, а ты настройку конектиться через wpf то в валкере и/или wss убираешь при выключенном wpf?

Yegor
20.06.2009, 02:36
Yegor, ээ, а ты настройку конектиться через wpf то в валкере и/или wss убираешь при выключенном wpf?

Да я меняю порт на прокси на тот что указан в пакетхаке. Когда без него пробовал то вообще в wss использование прокси убирал. ПКХ показывает что есть кооннект с сервером, причем порт и IP верный, но сервер не присылает ниодного пакета а сразу отваливается, именно первым отваливается сервер. Мне уже дело принципа разобраться. Интересно просто что за магия. Через протокол socks5 каким то образом передается на сервер имя программы или процесса, которая через него подключается?

xkor
20.06.2009, 03:11
Yegor, сервер абсолютно никак не может узнать чем к нему приконектились, только с какого ИП и порта...

Yegor
20.06.2009, 11:05
xkor, что ж такое тогда :o. Я устанавливаю соеденение на порт 2106 и сервер молчит как партизан, а должен заговорить первым.

xkor
20.06.2009, 15:15
Yegor, хз, мой xBot спокойно коннектиться и бегает)

Yegor
20.06.2009, 15:28
Все я начал делать программу для тестирования коннекта на логин сервер.
xkor,не конектиться я имел в виду если пытаться волкером подключиться через WSS.


Все моя микропрограммка подключилась на порт 2106 и приняла первый пакет размером 186 байт от сервера :). Осталось всего ничего реализовать алгоритм дешифровки шифровки пакетов :o.

Jes
20.06.2009, 23:14
вот читаю и вспоминаю то что делал два года назад :)
хотелось что бы опять появилось желание написать что нить такого покруче :) - да вот стимула нету никакого...

Yegor
21.06.2009, 00:26
вот читаю и вспоминаю то что делал два года назад :)
хотелось что бы опять появилось желание написать что нить такого покруче :) - да вот стимула нету никакого...

Тебе надоела линейка или нужен материальный стимул?

Jes
21.06.2009, 00:37
та линейка то - надоела
а вдохновения на нуле - не вижу свет в конце тунеля :)

Yegor
21.06.2009, 00:44
та линейка то - надоела
а вдохновения на нуле - не вижу свет в конце тунеля :)

Нет признания твоей работе или поставил такие перед собой задачи, которые трудно осуществимы? Ты вроде бы сделал колосальную работу, это же твое творение L2Jes? Что ещё нужно?

Jes
21.06.2009, 00:56
Нет признания твоей работе или поставил такие перед собой задачи, которые трудно осуществимы? Ты вроде бы сделал колосальную работу, это же твое творение L2Jes? Что ещё нужно?

задачу то поставил -сложного ничего в этом нету - но заставить себя сделать это почти невозможно
хотелось бы еще чего нить интересного написать для юзеров....

Yegor
21.06.2009, 01:23
Jes, лень матушка всему виной?