Вернуться   CoderX :: Forums > Lineage II > L2PacketHack
Войти через OpenID

L2PacketHack Форум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела! Обсуждение багов Lineage ЗАПРЕЩЕНО!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Закрытая тема
 
Опции темы Опции просмотра
Старый 18.02.2009, 10:03   #1
Новичок
 
Регистрация: 09.12.2008
Сообщений: 18
Сказал Спасибо: 8
Имеет 1 спасибку в 1 сообщении
Anton5 пока неопределено
Вопрос Авто вход в игру

Здравствуйте.
Почитал что нужно сделать для автоматического входа и понял что геморойно писать такой скрипт(шифрация логина, пароля, SessionKey и т.д)

Требуется залогинется в игру и передать несколько предметов другому чару.

Кто-нибудь встречал написанный скрипт или какой-нибудь шаблон на автоматический вход в игру, если нет придётся писать самому(небольшой опыт в написания скриптов имеется, но геморойно)?
Anton5 вне форума  
Старый 18.02.2009, 10:31   #2
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Что ты подразумеваешь под авто входом? Залогиниться в игру через скрипты никак не получится. Если только уже зайти на акк, тогда после этого можно написать авто вход чара, кидание трейда и передача вещей с последующим логаутом.
QaK вне форума  
Старый 18.02.2009, 10:49   #3
Новичок
 
Регистрация: 09.12.2008
Сообщений: 18
Сказал Спасибо: 8
Имеет 1 спасибку в 1 сообщении
Anton5 пока неопределено
По умолчанию

А что помешает этому? Неужели нельзя спомощью скрипта расчитать все необходимые данные?
Код:
Порядок авторизации на логин сервере

Во первых сразу замечу что существует две ревизии протокола использующиеся на данный момент(может и больше но мне о них не известно) - c621 и 785a.
Отличие их в том что в c621 используется дополнительное шифрование и авторизация GameGuard. Пакеты Init и RequestAuthLogin также отличаются.
Определить версию можно по размеру пакета Init, для ревизии 785a он составляет 11 байт, для c621 – 170.

1. Сразу после установки соединения сервер отправляет клиенту пакет Init
2. В ответ на него клиент отправляет пакет RequestGGAuth(в ревизии протокола 785a этот пакет не высылается)
3. Сервер отвечает на него пакетом GGAuth (в ревизии протокола 785a этот пакет не высылается)
4. Если сервер ответил, что авторизация прошла успешно, то клиент высылает пакет RequestAuthLogin, содержащий логин и пароль.
5. Проверка логина и пароля, в случае неудачи, сервер высылает пакет LoginFail содержащий причину неудачи, инатче высылается пакет LoginOk, содержащий
session key #1.
6. Далее клиент запрашивает список серверов пакетом RequestServerList
7. В ответ на этот пакет сервер высылает клиенту ServerList, в нем содержиться список серверов и их IP адреса с номерами портов.
8. После выбора game-сервера, и нажатия на ОК, клиент отсылает пакет RequestServerLogin
9. Сервер авторизации выполняет проверки на максимальное количество игроков, доступность сервера и т.п., если все проверки пройдены, то высылает пакет
PlayOk,содержащий session key #2, этот ключь генерируется из текущего времени системы в мс, номера сокета и еще всякой лабуды. После этого клиент
отключается от логин сервера и подключается к гейм серверу.

Порядок авторизации на гейм сервере

1. После установки соединения, клиент высылает пакет ProtocolVersion, содержащий версию протокола.
2. Сервер высылает пакет CryptInit, содержащий XOR ключ которым будут шифроваться все следующие пакеты.
3. Клиент высылает пакет AuthLogin выбраному серверу, содержащий session key #1, session key #2 и логин. При несовпадении с теми ключами и логином,
что храняться на сервере авторизации клиент отключается.
4. Сервер высылает пакет CharList, содержащий список всех чаров на аккаунте.
5. Тут идет процесс создания/удаления и выбора чара, после того как чар выбран и нажата кнопка Start, клиент отправляет пакет CharacterSelected
6. Клиент отправляет 2 пакета - RequestQuestList и RequestExManorList
7. Сервер высылает пакет ExSendManorList
8. Сервер высылает пакет QuestList
9. Клиент отправляет пакет EnterWorld
10. Сервер отправляет пакет UserInfo, который также служит сигналом окончания загрузки.
11. Все мы в игре. Сервер с периодичностью 60 секунд высылает пакет NetPingRequest, на который клиент должен ответить пакетом NetPing

   В описании пакетов будут встречаться ObjectID и ItemID, ItemID это идентификатор типа предмета, например у авадон робы он 2406. А ObjectID это
уникальный идентификатор самого предмета в игре. Например у двух чаров есть авадон роба, ItemID робы у каждого из них будет одинаковый - 2406, тогда 
как ObjectID будет уникальным.

Пакеты сервера авторизации шифруются по алгоритму Blowfish. Стандартный ключ по умолчанию в 4-х хрониках:
5F 3B 35 2E 5D 39 34 2D 33 31 3D 3D 2D 25 78 54 21 5E 5B 24. К концу ключа прибавляется символ с кодом 0. В Interlude тип шифрования был изменен - пакет
Init содержит динамический Blowfish ключ случайно генерируемый для каждого клиента. Этот пакет сначала шифруется по алгоритму XOR(ключ генерируется
случайным образом и помещается в  конце пакета), а потом шифруется по алгоритму Blowfish, статическим ключом. По умолчанию статический ключ -
6B 60 CB 5B 82 CE 90 B1 CC 2B 6C 55 6C 6C 6C 6C. Все последующие пакеты будут шифроваться динамическим Blowfish ключом. Пакет LoginRequest дополнительно
шифруется по алгоритму RSA. Ключ состоит из следующих частей: B = 1024, E = 65537, N = передается в пакете Init. Вместе эти 3 части составляют целый RSA
ключ. Байты N в пакете зашифрованы функцией:

void scrambleMod( char *n )
{
      typedef unsigned char byte;
      int i;

      for( i=0; i<4; i++ ) {
            byte temp = n[0x00 + i];
            n[0x00 + i] = n[0x4d + i];
            n[0x4d + i] = temp;
      };

      // step 2 xor first 0x40 bytes with last 0x40 bytes
      for( i=0; i<0x40; i++ ) {
            n[i] = (byte)(n[i] ^ n[0x40 + i]);
      };
 
      // step 3 xor bytes 0x0d-0x10 with bytes 0x34-0x38
      for( i=0; i<4; i++ ) {
            n[0x0d + i] = (byte)(n[0x0d + i] ^ n[0x34 + i]);
      };

      // step 4 xor last 0x40 bytes with first 0x40 bytes
      for( i=0; i<0x40; i++ ) {
            n[0x40 + i] = (byte)(n[0x40 + i] ^ n[i]);
      };
};

Для расшифровки можно воспользоваться следующей функцией:

void unscrambleMod( char *n )
{
      typedef unsigned char byte;
      int i;

      // step 4 xor last 0x40 bytes with first 0x40 bytes
      for( i=0; i<0x40; i++ ) {
            n[0x40 + i] = (byte)(n[0x40 + i] ^ n[i]);
      };

      // step 3 xor bytes 0x0d-0x10 with bytes 0x34-0x38
      for( i=0; i<4; i++ ) {
            n[0x0d + i] = (byte)(n[0x0d + i] ^ n[0x34 + i]);
      };

      // step 2 xor first 0x40 bytes with last 0x40 bytes
      for( i=0; i<0x40; i++ ) {
            n[i] = (byte)(n[i] ^ n[0x40 + i]);
      };

      for( i=0; i<4; i++ ) {
            byte temp = n[0x00 + i];
            n[0x00 + i] = n[0x4d + i];
            n[0x4d + i] = temp;
      };
};


   Также есть сервера использующие старый протокол авторизации(ревизия 785a) который не шифрует пакет Init, а остальные шифрует Blowfish
ключом длинной 21 байт. При этом пакет LoginRequest шифруется только по алгоритму Blowfish, без дополнительного шифрования RSA.
   Для шифрования пакетов гейм сервера используется алгоритм XOR. Ключ XOR генерируется случайно и передается клиенту в пакете CryptInit. Функции
шифрования и дешифрации приведены ниже:
 
/* Декодирует данные */
void decrypt( unsigned char *data, unsigned int len, unsigned char *Key )
{

        int temp = 0;

        for( unsigned int i = 0; i < len; ++i ) {
               int temp2 = data[i] & 0xff;
               data[i] = (temp2 ^ (Key[i & 15] & 0xff) ^ temp);
               temp = temp2;
        };

        
        int old = Key[8] & 0xff;
        old |= (Key[9] << 0x08) & 0xff00;
        old |= (Key[10] << 0x10) & 0xff0000;
        old |= (Key[11] << 0x18) & 0xff000000;

        old += len;

        Key[8] = old &0xff;
        Key[9] = (old >> 0x08) & 0xff;
        Key[10] = (old >> 0x10) & 0xff;
        Key[11] = (old >> 0x18) & 0xff;
};

/* Кодирует данные */
void encrypt( unsigned char *data, unsigned int len, unsigned char *Key )
{
        int temp = 0;

        for( unsigned int i = 0; i < len; i++) {
               int temp2 = data[i] & 0xff;
               data[i] = (temp2 ^ (Key[i & 15] & 0xff) ^ temp);
               temp = data[i];
        };

        int old = Key[8] & 0xff;
        old |= (Key[9] << 0x08) & 0xff00;
        old |= (Key[10] << 0x10) & 0xff0000;
        old |= (Key[11] << 0x18) & 0xff000000;

        old += len;

        Key[8] = old &0xff;
        Key[9] = (old >> 0x08) & 0xff;
        Key[10] = (old >> 0x10) & 0xff;
        Key[11] = (old >> 0x18) & 0xff;
};

   С каждым кодированным/декодированным пакетом ключ изменяется на длину пакета, поэтому нужно использовать два отдельных экземпляра ключа – один для
шифрования исходящих пакетов, второй для расшифровки входящих.
   Все пакеты шифруются начиная с 3-го байта, т.е. размер пакета никогда не шифруется.
Взято здесь.

------------------------------------

Кажись дошло. L2PacketHack не создайт соединение, он только перехватывает существующее.

Тогда я думаю следующий вариант прокатит, как вы думаете?
Логинюсь, дохожу до выбора перса и тут уже скрипт "перехватывает управление" выбирает перса, заходит им выгру, выполняет нужные мне действия, "нажиматся кнопка перезайти", выберается следующий перс и т.д.

Последний раз редактировалось Anton5, 18.02.2009 в 11:52.
Anton5 вне форума  
Старый 18.02.2009, 15:27   #4
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Цитата:
Сообщение от QaK Посмотреть сообщение
Если только уже зайти на акк, тогда после этого можно написать авто вход чара, кидание трейда и передача вещей с последующим логаутом.
Цитата:
Сообщение от Anton5 Посмотреть сообщение
Логинюсь, дохожу до выбора перса и тут уже скрипт "перехватывает управление" выбирает перса, заходит им выгру, выполняет нужные мне действия, "нажиматся кнопка перезайти", выберается следующий перс и т.д.
ты гений епть ...
QaK вне форума  
Старый 18.02.2009, 15:43   #5
Новичок
 
Регистрация: 09.12.2008
Сообщений: 18
Сказал Спасибо: 8
Имеет 1 спасибку в 1 сообщении
Anton5 пока неопределено
Радость

Цитата:
Сообщение от QaK Посмотреть сообщение
ты гений епть ...
Даже у гениев бывают озарения
Anton5 вне форума  
Закрытая тема

  CoderX :: Forums > Lineage II > L2PacketHack



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

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


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

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

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