Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг > Шифрации серверов
Войти через OpenID

Шифрации серверов Здесь разбираемся с алгоритмами шифрации различных серверов

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 06.06.2008, 19:18   #1
Местный
 
Аватар для nezabudkin
 
Регистрация: 06.03.2008
Сообщений: 154
Сказал Спасибо: 46
Имеет 130 спасибок в 38 сообщенях
nezabudkin
По умолчанию

Цитата:
Сообщение от alexsl Посмотреть сообщение
temp2:= pck[i] and $ff;
А что ты хочешь получить этой командой?
это же всеравно, что temp2:= pck[i]
nezabudkin вне форума   Ответить с цитированием
Старый 06.06.2008, 20:38   #2
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 51
Сказал Спасибо: 14
Имеет 36 спасибок в 11 сообщенях
alexsl пока неопределено
По умолчанию

Цитата:
Сообщение от nezabudkin Посмотреть сообщение
А что ты хочешь получить этой командой?
это же всеравно, что temp2:= pck[i]
эт не я, а господин TechnoWiz@rd, просто портировал как есть.
в Си & это вроде And
....
for( unsigned int i = 0; i < len; ++i ) {
int temp2 = data[i] & 0xff;
....
кто в Си шарит, разясните плиз, что этим хотели сделать?

Последний раз редактировалось alexsl, 06.06.2008 в 20:42.
alexsl вне форума   Ответить с цитированием
Старый 06.06.2008, 13:37   #3
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Кстати, цикличность в моем случае появится при условии что ключ - 16 байт, а похоже так оно и есть
Breadfan вне форума   Ответить с цитированием
Старый 06.06.2008, 14:24   #4
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 51
Сказал Спасибо: 14
Имеет 36 спасибок в 11 сообщенях
alexsl пока неопределено
По умолчанию кстати вот кусок "стандартной" шифрации

Цитата:
Сообщение от Breadfan Посмотреть сообщение
Кстати, цикличность в моем случае появится при условии что ключ - 16 байт, а похоже так оно и есть
не думаю, алгоритм шифрации по идее не должны кординально менять (т.к. возможны глюки), посмотри как реализовано по умолчанию.

кстати вот кусок "стандартной" шифрации, подробно описано.
Автор: TechnoWiz@rd

Цитата:
Пакеты сервера авторизации шифруются по алгоритму 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;
};
С каждым кодированным/декодированным пакетом ключ изменяется на длину пакета
имхо, после этого момента
Код:
        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;
и добавляются какието махинации с ключами.
удачи

Последний раз редактировалось alexsl, 06.06.2008 в 14:35.
alexsl вне форума   Ответить с цитированием
Старый 06.06.2008, 19:27   #5
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Может стоит разные фришарды в разных топиках исследовать? По моему каша будет если дальше так пойдет.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 12.06.2008, 15:59   #6
Рыцарь
 
Аватар для VORON
 
Регистрация: 06.08.2007
Сообщений: 209
Сказал Спасибо: 6
Имеет 67 спасибок в 34 сообщенях
VORON пока неопределено
По умолчанию

Цитата:
Сообщение от NLObP Посмотреть сообщение
Может стоит разные фришарды в разных топиках исследовать? По моему каша будет если дальше так пойдет.
думаю.. да.. надо.. но возникает сразу вопрос.. в том что если ломать в отдельном топе шард- общеизвестный общими усилиями то при любом прорыве в зломе шифрации ето сразу станет известно админам шарда которые ежесекундно сменят шифр.. выход вижу тока в подполье.. хотя ето сделает наш форум более скучным, закрытым.. ето не интересно будет.. как же поступить?

Добавлено через 1 минуту
как щас есть- оставлять- тоже не дело...
людей надо рассортировать по интересам к каждому серваку.. в одну кашу все серваки мешать нельзя ето бардак.. но как ето сделать?
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами

Последний раз редактировалось VORON, 12.06.2008 в 15:59. Причина: Добавлено сообщение
VORON вне форума   Ответить с цитированием
За это сообщение VORON нажился спасибкой от:
Старый 12.06.2008, 16:44   #7
Рыцарь
 
Аватар для VORON
 
Регистрация: 06.08.2007
Сообщений: 209
Сказал Спасибо: 6
Имеет 67 спасибок в 34 сообщенях
VORON пока неопределено
По умолчанию

Цитата:
Сообщение от metalFan Посмотреть сообщение
VORON, проконсультируйте плз
/\
||
ухх.. еслиб я мог всё...
я свою новую шифрацию никак осилить не магу.. хотя уже наверно и небуду осилять ее.. ушел на другой шард..
но вижу что тут куча логов развелось с разных шардов и каждый ждет помощи ето все осмыслить и каждому чемто помоч конечноже модеры невсилах.. поетому надо както разделять топ по сервакам чтоб несколько людей объединять общей задачей..
сам посуди скока я времени портратил на то чтоб решить вопрос с шардом описываемым на 6-ти листах етого топа.. с одного лога ниче толком и невыцедиш да и заниматься етим мало кому интересно.. надо разделять топик по названиям серваков.. ждем подраздела от XKORа.. там потихоньку самымые популярные сервера будут обдумываться людьми которые в етом заинтересованы сами
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
VORON вне форума   Ответить с цитированием
За это сообщение VORON нажился спасибкой от:
Старый 06.06.2008, 19:49   #8
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Модераторы не могут создать подраздел, надо Xkor`а попросить.
Чем могут админы лично тебе навредить? Вообще по защите своего сервера понятно, но ведь и так найдут, они же знают что искать.
NLObP вне форума   Ответить с цитированием
Старый 07.06.2008, 15:12   #9
Пользователь
 
Аватар для ASSA
 
Регистрация: 09.02.2008
Сообщений: 38
Сказал Спасибо: 1
Имеет 1 спасибку в 1 сообщении
ASSA
По умолчанию

было бы круто еслиб какая-то прога вычисляла алгоритм шифрации сама =)
__________________
Пишите в асю если чего. 446-693-955
ASSA вне форума   Ответить с цитированием
Старый 09.06.2008, 16:11   #10
Гость
 
Сообщений: n/a
Сообщение мб

var key: integer;
procedure OnCreate;
begin
gSys.ALstart:=false;
end;
procedure OnDestroy;
begin
end;
begin
if _gAbsNumPkt=2 then
begin
key:=gSys.Kco xor $FFFFFFFF;
gSys.Ksi:=key;
gSys.Kso:=key;
end;
end.
  Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг > Шифрации серверов



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

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


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

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

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