PDA

Просмотр полной версии : порядок пакететов от клиента


alexsl
23.07.2008, 05:44
привет всем,
в общем ситуация: ковыряю шифрацию, но есть затруднения в том, что нет возможности узнать где возникает сбой при расшифровке пакетов т.к. не знаю последовательность пакетов.
Может кто подскажет примерно какие пакеты должны идти после выбора чара.

//логинимся
08 75 00 7A 00 76 00 65 00 72 00 31 00 00 00 44 11 01 00 09 35 00 00 44 11 01 00 6A 05 A2 1D 01 00 00 00 ; 8B 26 0B 00 98 50 DF DF ; 35
// выбор чара
0D 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; 9E 26 0B 00 98 50 DF DF ; 19
// а вот дальше возникают вопросы
// ?? правильный ли пакет
D0 08 00 ; A1 26 0B 00 98 50 DF DF ; 3
// получение списка квестов
63 ; A2 26 0B 00 98 50 DF DF ; 1
// ?? вход в мир
03 23 92 90 4D 18 30 B5 7C 96 61 41 47 05 07 96 FB ; B3 26 0B 00 98 50 DF DF ; 17
//RequestMagicSkillList
2E 00 00 00 71 8D 00 00 C1 D7 20 49 ; BF 26 0B 00 98 50 DF DF ; 12
//RequestSkillCoolTime
9D ; C0 26 0B 00 98 50 DF DF ; 1
// явно не то RequestAnswerFriendInvite:d(Response)
5F 00 00 00 00 00 00 00 1A 00 ; CA 26 0B 00 98 50 DF DF ; 10
66 01 D4 01 00 FD EB FC D1 4C F2 FF FF 00 00 00 2E 00 00 00 00 ; DF 26 0B 00 98 50 DF DF ; 21
6D 00 00 00 00 80 9D 92 2B ; E8 26 0B 00 98 50 DF DF ; 9
EE E2 E2 80 48 01 D4 01 EA FC EB FC FF 4C F2 FF 15 01 ; FA 26 0B 00 98 50 DF DF ; 18
// споил сидя на 5 точке
C1 FF 00 00 00 00 00 00 EE 01 ; 04 27 0B 00 98 50 DF DF ; 10
35 FE 00 00 00 00 00 00 1A 00 ; 0E 27 0B 00 98 50 DF DF ; 10
09 FE 00 00 00 00 00 00 26 00 ; 18 27 0B 00 98 50 DF DF ; 10
05 FE 00 00 00 00 00 00 2A 00 ; 22 27 0B 00 98 50 DF DF ; 10


зы: С4 не ява

QaK
23.07.2008, 08:30
на, лови лог - примерное начало для с4.Суй в пнх и смотри наздоровье=)

alexsl
23.07.2008, 19:15
QaK было бы хорошо если бы выложил побольше кусок, в приведенном куске пакеты от клиента заканчиваются на 3 пакете, что не дает полной картины для анализа, в моем примере как раз после 3 пакета и возникают вопросы.
заранее спасибо.

xkor
23.07.2008, 23:42
судя по
// явно не то RequestAnswerFriendInvite:d(Response)
5F 00 00 00 00 00 00 00 1A 00 ; CA 26 0B 00 98 50 DF DF ; 10
шифрация у тя сбивается именно на этом пакете и тока в первом байте ключа, возможно ключ меняется не только на длинну пакета...

alexsl
24.07.2008, 05:31
угу, вот и хочю выяснить какой байт должен быть, чтоб подправить процедурку т.е. какой это пакет.
начинает сбивается скорее всего тут:

/ получение списка квестов
63 ; A2 26 0B 00 98 50 DF DF ; 1
// ?? вход в мир
03 23 92 90 4D 18 30 B5 7C 96 61 41 47 05 07 96 FB ; B3 26 0B 00 98 50 DF DF ; 17


63 ; A2 26 0B 00 98 50 DF DF ; 1 - тут должен быть другой пакет, имхо получение квестов всяко должно быть после входа в мир.

QaK
24.07.2008, 08:50
QaK было бы хорошо если бы выложил побольше кусок, в приведенном куске пакеты от клиента заканчиваются на 3 пакете, что не дает полной картины для анализа, в моем примере как раз после 3 пакета и возникают вопросы.
заранее спасибо.упс,промазал. Щас выложу.

xkor
24.07.2008, 16:20
63 ; A2 26 0B 00 98 50 DF DF ; 1 - тут должен быть другой пакет, имхо получение квестов всяко должно быть после входа в мир.нет, получение квестов идёт именно перед входом в мир так что до указанного мной пакета всё было верно

alexsl
26.07.2008, 17:26
спасибо за помощь.
теперь естестено стоит задача "ключика".
Порядок начальных пакетов на серве не меняется и из 3 пакета можно выдернуть ключик.
пакеты от клиента:
пакет № 1 - 00 93 02 00 00 .......... Protocol Version
пакет № 2 - 08 75 00 7A 00 .......... RequestAuthLogin
// отсюда взять ключик
пакет № 3 - 0D 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

теперь загвоздка в коде. =( как это дело реализовать?

верно ли будет размещен кусок кода:

procedure PacketProcesor(PacketData: array of Byte; SendSocket: TSocket; id, From: Byte);
<--cut-->
begin
<--cut-->
if (Packet.Size>2) then
case From of
1: Thread[id].InitXOR:=False;
2: Thread[id].InitXOR:=False;
3: begin //Р_С' Р"РЎ
<--cut-->
if (Thread[id].pckCount=3)then
begin
// тут расшифровка пакета и
// инициализация ключа
end;
<--cut-->
if L2PacketHackMain.ChkXORfix.Checked and(Thread[id].pckCount=4)then
begin
<--cut-->
ii:=$13 or ((Packet.size - 7) div 295) shl 8;
<--cut-->


зы: на вскидку, шифрация исходящих почти стандартная, только через каждый 8 пакет 2 байт ключа увеличивается на единицу.

Winners
26.07.2008, 22:40
Ребят собстно так же столкнулся с проблемой шифрации.....Тоечнее я понимаю что тут маленькая мелоч но я увы не совсем понимаю в области пакетов и прочих прелестей.....Ситуация такая сервер обновился с Хелбаунда до Грации да ява и бот начал писать такое
11:22:58 Link LoginServer Succeed.
11:23:05 Login LoginServer Success.
11:23:05 服务器[01]当前在线率:2.61%,能否登陆:能
11:23:08 Link GameServer Succeed.
11:23:09 ->Login GameServer Fail.

Логи в WPF пишут следующее.....
.................

[205] S>c 0ms. 14:26:21
-------------------------------------------------------------------------------
000000 1F 00 2F 96 37 0B 10 B3 | E9 FE FF 20 F1 03 00 E0 ../–7..ійюя.с..а
000010 F3 FF FF 62 EA FE FF 48 | F1 03 00 E0 F3 FF FF уяяbкюяHс..ауяя
================================================== =============================
[206] S>c 0ms. 14:26:21
-------------------------------------------------------------------------------
000000 1F 00 2F F6 2D 0B 10 F4 | E8 FE FF 8D EF 03 00 E0 ../ц-..фиюя�п..а
000010 F3 FF FF 00 E9 FE FF 10 | F0 03 00 E0 F3 FF FF уяя.йюя.р..ауяя
================================================== =============================
[207] C>s 0ms. 14:26:31
-------------------------------------------------------------------------------
000000 03 00 00 ...
================================================== =============================

Вот после последнего пакета пишет
11:23:09 ->Login GameServer Fail.

напротив пакета пишет описание мол протокол вершин......хз версия потокола была 828 пробывал менять на 831 не спасает.....В WPF забиты скрипты на фиксмув фиксеррор и скрипт декодировки трафика стандартный который в комплекте с WPF.
L2.ini _http://dump.ru/file_catalog/963797

Не гоните меня мол это не форум для настройки бота......

Я более чем уверен что проблема тут.....

//
// определим ключ GS:
//
if (_gAbsNumPkt = 2) then
if (gSys.TrafType = 2) and (gSys.isGS > 0) and _dFromServ then begin
if (le = 12) then gSys.tKeyType := 1; // 12 байтный пакет - тип 1. GSDecodeJ (90% l2j)
if (le = 16) then gSys.tKeyType := 2; // 16 байтный пакет - тип 2. GSDecode (sub-off servers)
if (le = $1A) then gSys.tKeyType := 3; // часть фри серверов Interlude
if (le = $1C) then gSys.tKeyType := 3; // часть фри серверов Interlude
if (le = $18 ) then gSys.tKeyType := 3; после перехода на Хелбаунд не работало дописал эту строчку пошло
if (le = $15) then gSys.tKeyType := 3; // официальные сервера Interlude (на данный момент)
if gSys.tKeyType > 0 then begin
s := copy(_dBuff,5,16);
if gSys.tKeyType < 3 then s := copy(s,1,4)+Hstr('A1 6C 54 87'); // C4/C5/псевдо интерлюд.
if gSys.tKeyType = 3 then s := copy(s,1,8 )+Hstr('C8 27 93 01 A1 6C 31 97'); // интерлюд.
Kci := s; Kco := s; Ksi := s; Kso := s;
scode := true; // запустим де/кодирование GS
writelogln('key:');writeloghexb(s);
end else writelogln('неопознанный ключевой пакет GS LA2 протокола')
end;
//

Я так понимаю с переходом на Грацию терь новй ключик ток как его определить и куда вписать я чесн гря хз((( Ребят подскажите что нада подправить сам пока не в силах

Добавлено через 1 час 37 минут
Ребятушки АП тему ломаю голову что и как начитывая не знакомые термины но результата ноль..... Помогите решить данную проблемку оч оч нуждаюсь в вашей помощи ((((