PDA

Просмотр полной версии : Расшифоровка пакетов Интерлюдии.


hohol2000
24.10.2007, 15:59
Программа l2ph понимает пакеты клиента официалной версии. Могу ли я использовать модуль расшифровки BlowFish.pas этих пакетов?

dmitry501
24.10.2007, 16:45
Сам то понял что сказал?

Amorality
24.10.2007, 20:48
Ты о чем? у меня последняя версия пкх работает нормально в ИЛ ..

hohol2000
25.10.2007, 07:57
Да у меня тоже работает l2pkh. Меня интересует совершенно другое. Я хочу использовать модуль BlowFish.pas для своей программы. И откуда можно получить ключ для рашифровки?

xkor
26.10.2007, 13:11
Да у меня тоже работает l2pkh. Меня интересует совершенно другое. Я хочу использовать модуль BlowFish.pas для своей программы. И откуда можно получить ключ для рашифровки?
BF ключ в интерлюдии приходит от логин сервера в первом или втором пакете (непомню точно)

26.10.2007, 20:14
Да у меня тоже работает l2pkh. Меня интересует совершенно другое. Я хочу использовать модуль BlowFish.pas для своей программы. И откуда можно получить ключ для рашифровки?
BF ключ в интерлюдии приходит от логин сервера в первом или втором пакете (непомню точно)

Да ты что ! BF ключ который токен, вшит в engine.dll и нигде в пакетах не проходит.
Ты спутал с геймсеверером где ключ на xor шифровку идет во втором пакете.

Shura1oplot
26.10.2007, 23:43
Kirpi4, то, что я нарыл: пакет инит зашифрован сначала xor, поверх blowfish. в нем приходит ключ xor для расшифрации, RSA ключ для расшифрации пакета RequestAuthLogin и блоуфиш ключ для расшифрации остальных пакетов.

З.Ы. у кого-нить есть исходник на делфи, реализующий дешифрацию rsa?

xkor
27.10.2007, 01:17
Да ты что ! BF ключ который токен, вшит в engine.dll и нигде в пакетах не проходит.
Ты спутал с геймсеверером где ключ на xor шифровку идет во втором пакете.
так было до интерлюда!, так что ненадо тут орать о том чего незнаеш!
З.Ы. у кого-нить есть исходник на делфи, реализующий дешифрацию rsa?
я находил гдето 3 библиотеки для работы с RSA на дельфи но ни одна мне не зашифровала правильно логин с пасом...
ЗЫ а зачем те дешифровочный алгоритм?, ты ведь приватный ключ незнаеш, а без него нерасшифровать), имея публичный который приходит от серва можно только зашифровать...

Shura1oplot
27.10.2007, 16:21
xkor, ну как-то же клиент шифрует? значит уже кто-нибудь достал приватный ключ (надеюсь)

Добавлено спустя 14 часов 57 минут 15 секунд:
Бред написал... сервер генерирует пару ключей: для шифрации и дешифрации. отсылает ключ для шифрации, по которому собсна клиент и шифрует пакет. чтобы расшифровать - надо знать ключ дешифрации. единственный выход - подменить ключ шифрации

xkor
27.10.2007, 17:20
Бред написал... сервер генерирует пару ключей: для шифрации и дешифрации. отсылает ключ для шифрации, по которому собсна клиент и шифрует пакет. чтобы расшифровать - надо знать ключ дешифрации. единственный выход - подменить ключ шифрации
во во...

27.10.2007, 17:49
ТЕСКА БЛИН ОТВЕТЬ В АСЕ,ПОЧЕНМУЦ НЕ КОМУ НЕ ОТВЕЧАЕШЬ ЧТО СЛУЧИЛОЧЯ???!

Shura1oplot
29.10.2007, 13:53
нашел тут описание пакета инит
http://fursoffers.narod.ru/Packets.htm (http://fursoffers.narod.ru/Packets.htm)

длина пакета, присылаемая сервером отличается от длины разобранного пакета.
пробовал расшифровать пакет: сначала по алгоритму блоуфиш шифрования (ключ = указанный на странице токен + #0)
далее брал последние 4 байта пакета и расшифровывал пакет по алгоритму шифрования xor. получилась фигня.

NLObP
30.10.2007, 00:41
нашел тут описание пакета инит

А вот исходники пакета Инит ява сервера Интерлюды.
public class Init
{
private static byte[] _content =
{
(byte) 0x00,
(byte) 0xfd,
(byte) 0x8a,
(byte) 0x22,
(byte) 0x00, // session id
(byte) 0x5a,
(byte) 0x78,
(byte) 0x00,
(byte) 0x00, // protocol revision 0x785a or 0xc621, c621 has additional gameguard authentication
// dummy public key
(byte) 0x0e, (byte) 0xea, (byte) 0x0b, (byte) 0xf3, (byte) 0x3a,
(byte) 0x65, (byte) 0xc6, (byte) 0xc4, (byte) 0x62, (byte) 0xc7,
(byte) 0x77, (byte) 0x2e, (byte) 0x95, (byte) 0xde, (byte) 0xbc,
(byte) 0x8c, (byte) 0xe0, (byte) 0xf1, (byte) 0xc9, (byte) 0x87,
(byte) 0xcb, (byte) 0x5f, (byte) 0xe5, (byte) 0x0e, (byte) 0x85,
(byte) 0xa6, (byte) 0xf4, (byte) 0xac, (byte) 0x49, (byte) 0xb6,
(byte) 0x29, (byte) 0xe3, (byte) 0xa5, (byte) 0x11, (byte) 0xbe,
(byte) 0x85, (byte) 0x5d, (byte) 0x4c, (byte) 0x2a, (byte) 0x87,
(byte) 0x0d, (byte) 0xd5, (byte) 0x17, (byte) 0x48, (byte) 0x87,
(byte) 0x0a, (byte) 0xd4, (byte) 0xa8, (byte) 0x9b, (byte) 0x9b,
(byte) 0x8b, (byte) 0x0f, (byte) 0xad, (byte) 0xa3, (byte) 0x4d,
(byte) 0x60, (byte) 0x23, (byte) 0x6f, (byte) 0x2c, (byte) 0x53,
(byte) 0xcc, (byte) 0xfb, (byte) 0x90, (byte) 0xea, (byte) 0xa2,
(byte) 0x91, (byte) 0x24, (byte) 0x0e, (byte) 0x55, (byte) 0x6b,
(byte) 0xb7, (byte) 0xb6, (byte) 0x6e, (byte) 0x30, (byte) 0x26,
(byte) 0x7f, (byte) 0xf9, (byte) 0x49, (byte) 0xd8, (byte) 0xb2,
(byte) 0x2a, (byte) 0x47, (byte) 0x17, (byte) 0xce, (byte) 0xd7,
(byte) 0x10, (byte) 0xfc, (byte) 0x7d, (byte) 0x6f, (byte) 0xbc,
(byte) 0x83, (byte) 0xb4, (byte) 0xd4, (byte) 0x53, (byte) 0x04,
(byte) 0x6e, (byte) 0x08, (byte) 0x14, (byte) 0x7b, (byte) 0x92,
(byte) 0xca, (byte) 0xb1, (byte) 0x52, (byte) 0x55, (byte) 0xf7,
(byte) 0x45, (byte) 0x4c, (byte) 0xaa, (byte) 0xe9, (byte) 0xb0,
(byte) 0x01, (byte) 0x1e, (byte) 0xac, (byte) 0xe2, (byte) 0x9b,
(byte) 0x68, (byte) 0x21, (byte) 0x29, (byte) 0x68, (byte) 0x21,
(byte) 0xe1, (byte) 0x93, (byte) 0x70, (byte) 0xbd, (byte) 0x3f,
(byte) 0x13,
(byte) 0x16,
(byte) 0xab,
// not sure what these are for
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
(byte) 0x00,
//C6 values
(byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30,
(byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30,
(byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30,
(byte) 0x30, (byte) 0x30
};
public Init(byte[] publickey)
{
System.arraycopy(publickey, 0, _content, 9, publickey.length);
}
public byte[] getContent()
{
return _content;
}
public int getLength()
{
return _content.length + 2;
}
}

Shura1oplot
30.10.2007, 00:55
NLObP, как сам пакет то расшифровать?

hohol2000
30.10.2007, 07:59
Вот почему я и задал этот вопрос: "Как расшифровать пакеты". Я думаю у многих людей, знакомых с програмированием и играющих в линейку, возникают идеи что-то сделать для себя. Я хочу сделать прогу сбора статистики в игре - количество аден, убитых мобов и т.д. Всю информацию реально брать только из пакетов. Если есть у кого подобные проги, прошу поделиться исходниками.

Shura1oplot
30.10.2007, 19:19
hohol2000, берешь пакетхак... он как раз с открытым исходным кодом....

hohol2000
31.10.2007, 07:57
Я то уже взял. Сиж разбираюсь. Тока после пару открытый BDS начал умирать при подгрузке JDE компонентов. Усиленно пока не еще не занималься, много своей работы. Ноу жуе заметил что модули BlowFish и CryptoXOR там не подключаються, значит там зарыты свои алгоритмы.

xkor
31.10.2007, 13:21
Ноу жуе заметил что модули BlowFish и CryptoXOR там не подключаються, значит там зарыты свои алгоритмы.
CryptXOR подключается.., а логин сервер не дешифруется так что BlowFish там неиспользуется...

02.11.2007, 20:39
Да ты что ! BF ключ который токен, вшит в engine.dll и нигде в пакетах не проходит.
Ты спутал с геймсеверером где ключ на xor шифровку идет во втором пакете.
так было до интерлюда!, так что ненадо тут орать о том чего незнаеш!


Ну так покажи как рашифровать бловфиш на интерлюде и будешь крут

Shura1oplot
02.11.2007, 20:45
koljan, http://trac.l2adena.us/wiki/LoginProtocol (http://trac.l2adena.us/wiki/LoginProtocol)
тока там на английском

hohol2000
09.11.2007, 08:31
ПО твоей ссылке выдает
Internal Server Error

dmitry501
09.11.2007, 11:21
Kirpi4, то, что я нарыл: пакет инит зашифрован сначала xor, поверх blowfish. в нем приходит ключ xor для расшифрации, RSA ключ для расшифрации пакета RequestAuthLogin и блоуфиш ключ для расшифрации остальных пакетов.

З.Ы. у кого-нить есть исходник на делфи, реализующий дешифрацию rsa?

Стало интересно самому про RSA. Для дельфи практически все используют библиотеку FGInt от Walied Othman для работы с большими числами.

Вот пример http://www.cracklab.ru/f/index.php?acti ... =1&page=-1 (http://www.cracklab.ru/f/index.php?action=vthread&topic=3519&forum=1&page=-1)

di-2 http://www.isyst.ru/download/rsa_demo.rar (http://www.isyst.ru/download/rsa_demo.rar)
Исходные тексты на Delphi по реализации алгоритма шифрования RSA как пособие для начинающих программистов. RSA алгоритм относится к ассиметричным алгоритмам шифрования, его главное достоинство - имея открытый ключ и зная алгоритм шифрования невозможно повторить закодированое сообщение, на базе алгоритма RSA работает шифрование PGP, реализуются хэш-функции (элетронно-цифровая подпись). Программа является лениво исполненным интерфейсом для модуля работы с большими числами от Walied Othman (также в этом архиве).

Применительно к Л2 вот исходник от Hint-а
http://www.postpacific.com/forums/showp ... stcount=20 (http://www.postpacific.com/forums/showpost.php?p=103597&postcount=20)


function RSAEncrypt(a,p:string):string;
var
sD,sR,sM:string;
m,e,d,r:TFGInt;
begin
if length(a)>14 then setlength(a,14);
while length(a)<14 do a:=a+#0;
if length(p)>16 then setlength(p,16);
while length(p)<16 do p:=p+#0;
sD:=a+p+#0#0#0#0;
sM:=rsakey;
Base10StringToFGInt('65537',e);
Base256StringToFGInt(sD,d);
Base256StringToFGInt(sM,m);
FGIntMontgomeryModExp(d,e,m,r);
FGIntToBase256String(r,sR);
result:=sR;
end;[/quote][/quote:7fa78]

Удачи

Argot
13.11.2007, 15:46
в blowfish.pas есть баг из за него он не правильно работает с ключами отличными от формата 20байт+#0. Вследствии чего небудет правильно дешифровать пакеты по Интерлюд. протоколу.

А сам инит пакет криптован статическим Токеном ВНИМАНИЕ !!! 16 байтный и без #0 в конце.

далее нужно декриптовать XorPass, этот Xor алгоритм сильно отличается от ГС xor, так что не путать.

Далее если вам нужен чистый RSA pub key то нужно его DeScamblеd.
Вот в приципе и все у нас есть RSA pub key, динамический токен, и ревизия логин протокола.

З.Ы. Все модуле для работы с RSA в инете работают не в том режиме, что в ЛА2. в Ла2 используется "nopadding" режим в инете я его реализачию не видел но можно самому написать использую модули для работы с большими числами. )).

Shura1oplot
25.11.2007, 23:29
Argot, в чем отличия шифрования с режимом nopadding от обычного?

Argot
28.11.2007, 13:48
Argot, в чем отличия шифрования с режимом nopadding от обычного?

Как я понял nopadding режим без добавления флагов для расшифровки.

Shura1oplot
29.11.2007, 01:51
Argot, Спасиб) я уже написал процедуру шифрации, взломанный бот 10.8.6 норм на интерлюдиевские сервера коннектится.

NLObP
05.12.2007, 00:44
Argot, Спасиб) я уже написал процедуру шифрации, взломанный бот 10.8.6 норм на интерлюдиевские сервера коннектится.
Может поделишься исходниками процедуры? Я на RSA обламался когда попробовал ботика написать.

Shura1oplot
05.12.2007, 02:18
NLObP, в асю напиши