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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 05.03.2008, 13:46   #1
Новичок
 
Регистрация: 27.12.2007
Сообщений: 17
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
dip56245
По умолчанию Криптование на Шоке

Пытаюсь уже какой день разобраться с криптованием, ничерта не получается. :(
Перехватил первых 4 пакета, пытаюсь их расшифровать, вроде бы все делаю как в l2phx. но зараза 4 пакет не правильный хоть тресни.
Кто может подсказать где я не прав?

В архиве набросок как я пытаюсь расшифровать. проект для D7
dip56245 вне форума   Ответить с цитированием
Старый 05.03.2008, 18:43   #2
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

хм странно, если всё как в l2phx то неправильным должен быть 3й а начиная с 4го всё должно быть окей)
l2phx на шоках ключ берёт из 4го пакета после чего его дорасшифровывает
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 05.03.2008, 23:42   #3
Новичок
 
Регистрация: 27.12.2007
Сообщений: 17
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
dip56245
По умолчанию

ну если я все правильно понял
1. пакет от клиента - протокол (не трогается)
2. пакет от сервера - криптИнит - инициализируем криптование
3. пакет от клиента - хз, так и не понял шо это
4. пакет от сервера - список чаров - сдесь идет:
а. декриптование пакета
Код:
 
      cr.DecryptGP(PacketC.DataC, Packet.Size);
б. манипуляции
Код:
      ii:=$13 or ((Packet.size - 7) div 295) shl 8;
      PInteger(@PacketB[$02])^:=PInteger(@PacketB[$02])^ xor ii xor
                                  PInteger(@(cr.GKeyS[0]))^;
в. повторная инициализация криптования
Код:
      cr.InitKey(PacketB[$02],false);
но когда смотрю пакеты через l2phx - то я вижу 4 пакет правильно, а у себя нет... 8(((( хоть тресни
dip56245 вне форума   Ответить с цитированием
Старый 06.03.2008, 13:16   #4
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

ну декриптование первое не проходит так как ключ ещё не задан, а после cr.InitKey(PacketB[$02],false); как раз и надо декриптовывать, то что было сохранено зарание...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 06.03.2008, 15:51   #5
Новичок
 
Регистрация: 27.12.2007
Сообщений: 17
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
dip56245
По умолчанию

все, вопрос закрыт.
Благодарю xkor за помощь!
dip56245 вне форума   Ответить с цитированием
Старый 23.04.2008, 19:05   #6
Пользователь
 
Аватар для ASSA
 
Регистрация: 09.02.2008
Сообщений: 38
Сказал Спасибо: 1
Имеет 1 спасибку в 1 сообщении
ASSA
По умолчанию

А у мну тоже вопрос? И я его задам довольно глупо)))
У мну на сервере все было ок, гамал я под л2ПХ(она все пакеты видила на 80 правильно), гамал и вот в один прекрасный день пришлось обновить папку систем тк без ентого не запускалась л2.

Теперь админчег(видимо ему надоело что у него много гамают под л2пх) все обломал, теперь л2пх видит правильно первые 9 пакетов а потом начинается галиматья.

Я так понимаю что клуч таится тут Tип: 0x00 (CryptInit)

00 01 7E 67 00 00 01 00 00 00 01 00 00 00
Pазмер: 14+2
Время прихода: 17:31:25:000
- Пропущено: 1
h Key: 0x677E

И в полне может быть что каждый раз он разный.
А вот примеры пакетов на которых я просто валидат позишн и мувтулокейшн
BE 35 CE CC 64 3B 0B FE BF B1 05 32 9B F5 70 FD BF EF B5 CF 64 0D BB 03 40 82 F7 CD 64
3D 3C CE CC 64 26 0B FE 75 C4 05 32 9B E9 29 FC 75 83 F7 CD 64 EC 6F D9 4A 13 6B 16 C3 13 E9 B0 32 3F 73 E3 BE
00 07 8B C9 E5 27 EE E2 01 CC C2 1A AD 17 5E 1C FE F3 C2 19 AD A6 ED E1 01 8C 72 E7 52
02 9D 99 B8 E5 F8 95 E2 03 85 C2 1A AD 7C 5E 1C FC 4B B9 19 AD 23 EE E1 03 A4 72 E7 52
BA 33 CE CC 64 2D 0B FE BB B0 05 32 9B FD 70 FD BB F2 B5 CF 64 0D BB 03 44 83 F7 CD 64
B5 35 CE CC 64 3A 0B FE FD C5 05 32 9B 75 24 FC FD 82 F7 CD 64 49 14 4D F0 83 55 5D CF 86 1D B7 D2 30 12 60 3C
00 9D 99 B8 E5 FF 95 E2 01 93 C2 1A AD 7C 5E 1C FE 42 B9 19 AD 3F EE E1 01 A4 72 E7 52
2A 21 E2 08 E5 4C AC E3 07
B6 2C CE CC 64 15 0B FE B7 B0 05 32 9B F8 70 FD B7 EB B5 CF 64 0D BB 03 48 83 F7 CD 64
00 A9 53 18 E4 3C 9B E2 01 E4 C0 1A AD 57 5E 1C FE 34 B9 19 AD 5C ED E1 01 A4 72 E7 52
63 C3 C4 A8 E5 42 CF F3 4B 90 80 18 AD 34 97 E2 03 D4 BC 1A AD 76 5E 1C FC
35 33 CE CC 64 23 0B FE 7D C6 05 32 9B 4D C5 FC 7D 81 F7 CD 64 37 3F 08 7A 9D E8 C1 93 10 43 84 F0 8B DA 75 6D
00 9D 99 B8 E5 E0 95 E2 01 AB C2 1A AD 7C 5E 1C FE 45 B9 19 AD 29 EE E1 01 A4 72 E7 52
AA 2D CE CC 64 1D 0B FE AB B3 05 32 9B E4 70 FD AB DE B5 CF 64 0D BB 03 54 80 F7 CD 64
BD 2F CE CC 64 15 0B FE F5 C6 05 32 9B C8 E6 FC F5 81 F7 CD 64 72 5B 5B CD 60 8F F9 14 75 D5 A2 7F 6D 6F B3 A9
02 59 C5 C8 E5 92 91 E2 03 2E BD 1A AD 57 5E 1C FC FD BD 19 AD FF 91 E1 03 C4 72 E7 52
00 95 99 B8 E5 E2 95 E2 01 AB C2 1A AD 7C 5E 1C FE 52 B9 19 AD 11 EE E1 01 AC 72 E7 52
E7 2F CE CC 64 15 0B FE AF C6 05 32 9B C8 E6 FC AF 81 F7 CD 64 55 57 77 E9 05 55 04 34 02 3C D7 16 11 9D B3 87
54 2B CE CC 64 1E 0B FE 55 B3 05 32 9B E4 70 FD 55 DE B5 CF 64 0D BB 03 AA 80 F7 CD 64

а это уже новенький криптини
00 01 7A 4A 00 00 01 00 00 00 01 00 00 00

ПРОШУ хотябы намекнуть как разобраться с этой проблемой
или
что на много полезней, написать мои действия как вернуть л2пх способность видеть и правельно дешифрировать пакеты.

Добавлено через 10 минут
как можно заметить они имеют похожие куски..

Последний раз редактировалось ASSA, 23.04.2008 в 19:05. Причина: Добавлено сообщение
ASSA вне форума   Ответить с цитированием
Старый 25.04.2008, 14:48   #7
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

я так понимаю, в DecryptGP надо добавить проверку на CryptoInit и при приходе нового ключа вызывать InitKey
PanAm вне форума   Ответить с цитированием
Старый 26.04.2008, 13:28   #8
Пользователь
 
Аватар для ASSA
 
Регистрация: 09.02.2008
Сообщений: 38
Сказал Спасибо: 1
Имеет 1 спасибку в 1 сообщении
ASSA
По умолчанию

2 PanAm
я так понимаю ты это имееш виду?

delphi Код:
procedure DecryptGP(var pck: array of Byte; const Size: Word); var   k:integer;   i,t:byte; begin   i:=0;   for k:=0 to size-1 do     begin      t:=pck[k];      pck[k]:=t xor GKeyR[k and 7] xor i;      i:=t;     end;   Inc(PLongWord(@GKeyR[0])^,size); end; procedure EncryptGP(var pck: array of Byte; const Size: Word); var   i:integer; begin   pck[0]:=pck[0] xor GKeyS[0];   for i:=1 to size-1 do begin     pck[i]:=pck[i] xor GKeyS[i and 7] xor pck[i-1];   end;   Inc(PLongWord(@GKeyS[0])^,size); end;

вот полезное файло...http://fursoffers.narod.ru/Packets.htm советую=))))
это взялось от сюда - форум флудерский но есть полезные весчи
http://allcheats.ru/t21043/

Последний раз редактировалось ASSA, 26.04.2008 в 14:32.
ASSA вне форума   Ответить с цитированием
Старый 28.04.2008, 13:49   #9
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

нет, в newxor.dpr
я что-то в таком духе можно попробывать
delphi Код:
type   TXorCoding = class(TCodingClass)   private     keyLen: Byte;     CryptoInit: Boolean; //Добавил новый флаг   public     constructor Create;     procedure InitKey(const XorKey; Interlude: Boolean = False);override;     procedure DecryptGP(var Data; const Size: Word);override;     procedure EncryptGP(var Data; const Size: Word);override;   end; constructor TXorCoding.Create(); begin   FillChar(GKeyS[0],SizeOf(GKeyS),0);   FillChar(GKeyR[0],SizeOf(GKeyR),0);   keyLen := 0;   CryptoInit := false; End; procedure TXorCoding.DecryptGP(var Data; const Size: Word); var   k:integer;   pck:array[0..$4FFF] of Byte absolute Data; begin   if pck[0] := 0 then begin //вставил проверку     CryptoInit := true; //поднял флаг     InitKey(pck[2]); //устанавил новый ключ шифрования, InitKey(pck[2], true); для интрерлюда     exit; //дальнейшая обработка не нужна, выхел   end;   for k:=size-1 downto 1 do     pck[k]:=pck[k] xor GKeyR[k and keyLen] xor pck[k-1];   if size<>0 then pck[0]:=pck[0] xor GKeyR[0];   Inc(PLongWord(@GKeyR[keyLen-7])^,size); end; procedure TXorCoding.EncryptGP(var Data; const Size: Word); var   i:integer;   pck:array[0..$4FFF] of Byte absolute Data; begin   if CryptoInit then begin  //это был CryptoInit     CryptoInit := false; //сбосил флаг     exit; //шифрация не требуется - вышел   end;   if size<>0 then pck[0]:=pck[0] xor GKeyS[0];   for i:=1 to size-1 do     pck[i]:=pck[i] xor GKeyS[i and keyLen] xor pck[i-1];   Inc(PLongWord(@GKeyS[keyLen-7])^,size); end; procedure TXorCoding.InitKey(const XorKey; Interlude: Boolean = False); const   KeyConst: array[0..3] of Byte = ($A1,$6C,$54,$87);   KeyIntrl: array[0..7] of Byte = ($C8,$27,$93,$01,$A1,$6C,$31,$97); var key2:array[0..15] of Byte; begin   if Interlude then begin     keyLen:=15;     Move(XorKey,key2,8);     Move(KeyIntrl,key2[8],8);   end else begin     keyLen:=7;     Move(XorKey,key2,4);     Move(KeyConst,key2[4],4);   end;   Move(key2,GKeyS,16);   Move(key2,GKeyR,16); end;
код не проверял, даже синтаксис...
просто пример, как обойти смену ключа.
PanAm вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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