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

Разработка Раздел для совместной разработки/доработки программы

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 14.02.2012, 01:36   #51
Местный
 
Регистрация: 23.02.2009
Сообщений: 319
Сказал Спасибо: 72
Имеет 60 спасибок в 45 сообщенях
Kilatif пока неопределено
По умолчанию

Tin-moon, да
Kilatif вне форума   Ответить с цитированием
За это сообщение Kilatif нажился спасибкой от:
Старый 14.02.2012, 01:45   #52
Новичок
 
Регистрация: 12.02.2012
Сообщений: 27
Сказал Спасибо: 8
Имеет 0 спасибок в 0 сообщенях
ErgoZ пока неопределено
По умолчанию

нашёл пару косяков, переписал функции...

Вот функцию переписал с вышеуказанной:
PHP код:
    public static byte[] AntiXor(byte[] s)
    {
         
long keyb;
         
int i;
         
byte[] b_temp;

         
b_temp = new byte[4];

         
s.length 8;

         
key ToInt32(si);
         while (
>= 7)
         {
             
4;
             
ToInt32(si);
             
key;
             
key key b;

             
System.arraycopy(toBytes(btrue), 0b_temp04); 
             
System.arraycopy(b_temp0si4);
         }

         return 
s;
    } 
Функция конверта из лонга в байты:
PHP код:
    public static byte[] toBytes(long valboolean bigEndian)
    {
        
byte[] res = new byte[8];
        if (
bigEndian)
        {
            
res[0] = (byte)(val>>56&0xFF);
            
res[1] = (byte)(val>>48&0xFF);
            
res[2] = (byte)(val>>40&0xFF);
            
res[3] = (byte)(val>>32&0xFF);
            
res[4] = (byte)(val>>24&0xFF);
            
res[5] = (byte)(val>>16&0xFF);
            
res[6] = (byte)(val>>8&0xFF);
            
res[7] = (byte)(val&0xFF);
        } else
        {
            
res[7] = (byte)(val>>56&0xFF);
            
res[6] = (byte)(val>>48&0xFF);
            
res[5] = (byte)(val>>40&0xFF);
            
res[4] = (byte)(val>>32&0xFF);
            
res[3] = (byte)(val>>24&0xFF);
            
res[2] = (byte)(val>>16&0xFF);
            
res[1] = (byte)(val>>8&0xFF);
            
res[0] = (byte)(val&0xFF);
        }
        return 
res;
    } 
из байта в лонг переделываю этой функцией:
PHP код:
public static int ToInt32(byte[] bytesint offset) {
          
int ret 0;
          for (
int i=0i<&& i+offset<bytes.lengthi++) {
            
ret <<= 8;
            
ret |= (int)bytes[i] & 0xFF;
          }
          return 
ret;
        } 
Вот результат:

Пакет который приходит изначально от сервера - 02-13 20:32:09.911: I/System.out(1637): BA004511EBAFFAAAEB7F8AD5BC3F38CA9FD86156CC6D1DCB26 D5E7A5E497D87BADA3256418297DAAA0F2CA8593B92856517D 40C9D6A7462C9DBB73788F19AC9922A276C97674674D431937 51512DC07D32013B92622D2291AA98EE1AB649ABFEDC711A56 BC64061EA4537BC5088B1663B7B6CF2578AC926282F4645202 924C5B406B64C73B2CD35F1C01EC8091601F37E1297B1D79AE A1B44FFC2FC470AF431E213EB23C72E16484C99DF9200FC7E0 5EC44E94F072BE45B7620D

Пакет в котором я отсёк размер пакета - 02-13 20:32:09.921: I/System.out(1637): 4511EBAFFAAAEB7F8AD5BC3F38CA9FD86156CC6D1DCB26D5E7 A5E497D87BADA3256418297DAAA0F2CA8593B92856517D40C9 D6A7462C9DBB73788F19AC9922A276C97674674D4319375151 2DC07D32013B92622D2291AA98EE1AB649ABFEDC711A56BC64 061EA4537BC5088B1663B7B6CF2578AC926282F4645202924C 5B406B64C73B2CD35F1C01EC8091601F37E1297B1D79AEA1B4 4FFC2FC470AF431E213EB23C72E16484C99DF9200FC7E05EC4 4E94F072BE45B7620D0000

Пакет который я декодил по начальному ключу блоуфиша (кстати проверьте плиз у себя, ключ интерлюдовский, у вас так же получилось?) - 02-13 20:32:09.921: I/System.out(1637): D1A89279E77E010F60C4CD4FB62DFF6E471CBFE205CD45E5C4 C5FCC40712DC03054E2BC11165240ED0099D850EAED6F9B608 2972CC03CE72CDF36AEB32863EFD42016649D94D4BC26166CC AFF5A2411B4F851BB55B8C0807AA0B5C6DCFECC34941B048D2 18C7C8BFCD74DC9DF0388D59B5619158A6B4E216525B8C2A11 55AE866F2173015A2D22F4C629DFB78981337B83C74D68C5EC 5C9BC776C317482901612311B720B660F27D758A2ABE584032 B17DAE52B3DF01CF72FA1D

А это пакет который декодил антиксором, который опубликован выше - 02-13 20:32:09.932: I/System.out(1637): D1A89279E77E00000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000052B3DF01CF72FA1D


Где косяк??? я уже себе все мозги сломал, дальше инита продвинутся не могу... обидно... на пхп по моему и то проще это реализовать...
ErgoZ вне форума   Ответить с цитированием
Старый 14.02.2012, 02:12   #53
Местный
 
Регистрация: 23.02.2009
Сообщений: 319
Сказал Спасибо: 72
Имеет 60 спасибок в 45 сообщенях
Kilatif пока неопределено
По умолчанию

ErgoZ, я думаю с xor'ом для явы тебе поможет товарищ Tin-moon, который вроде как уже прошел пакет Init
Kilatif вне форума   Ответить с цитированием
Старый 14.02.2012, 02:31   #54
Новичок
 
Регистрация: 12.02.2012
Сообщений: 27
Сказал Спасибо: 8
Имеет 0 спасибок в 0 сообщенях
ErgoZ пока неопределено
По умолчанию

эх жаль делфей нет под андроид... ща вот качаю сяху, может на с++ с ндк получится что нибудь...

2 Tin-moon
Ты на яве смог пройти инит? Если на яве можешь помочь с функциями ксора и некоторыми другими? С меня пиво если поделишься немного кодом)))

Последний раз редактировалось ErgoZ, 14.02.2012 в 02:33.
ErgoZ вне форума   Ответить с цитированием
Старый 14.02.2012, 10:05   #55
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

а вы вообще в курсе что на большем кол-ве серверов доп. шифрация?
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
За это сообщение supernewbie нажился спасибкой от:
Старый 14.02.2012, 13:15   #56
Пользователь
 
Регистрация: 29.01.2012
Адрес: г. Минск
Сообщений: 64
Сказал Спасибо: 10
Имеет 5 спасибок в 5 сообщенях
Tin-moon пока неопределено
По умолчанию

To Kilatif:
Решил до конца пройтись по блоуфиш, нашел у тебя несколько различий, ты говарил что пишешь по другие пакеты вот решил уточнить.
Код:
        public byte[] Decode(byte[] data)
        {
            int i, len;
            byte[] DBuff = new byte[8];

            len = data.Length;  - тут в делфи - 2 (вернее мы вызываем декод передавая в длину - 2)

            for (i = 0; i < len / 8; i ++)
            {
                Array.Copy(data, i * 8, DBuff, 0, 8);
                DBuff = DecodeBlock(DBuff);

                Array.Copy(DBuff, 0, data, i * 8, 8);
            }

            return data;
        }
        public byte[] Encode(byte[] data)
        {
            int i, len;
            byte[] DBuff = new byte[8];

            len = data.Length; - тут там тоже - 2

            for (i = 0; i < len / 8; i++)
            {
                Array.Copy(data, i * 8, DBuff, 0, 8);
                DBuff = EncodeBlock(DBuff);

                Array.Copy(DBuff, 0, data, i * 8, 8);
            }

            return data;
        }
Еще тут:
Код:
            j = 0;
            for (i = 0; i < 18; i++)
            {
                data = ((Key[j] & 0xFF) << 24) | ((Key[(j+1) % Size] & 0xFF) << 16) | ((Key[(j+2) % Size] & 0xFF) << 8) | (Key[(j+3) % Size] & 0xFF);
                PArray[i] = PArray[i] ^ data;
                j = (j + 4) % Size;
            }

            datal = 0;
            datar = 0;
            for (i = 0; i < 9; i++)
            {
                Blowfish_encipher(ref datal, ref datar);
                PArray[i*2] = datal;
                PArray[i*2 + 1] = datar;
            }

            for (i = 0; i < 4; i++)
                for (j = 0; j < 128; j++)
                {
                    Blowfish_encipher(ref datal, ref datar);
                    SBoxes[i, j*2] = datal;
                    SBoxes[i, j*2 + 1] = datar;
                }

// тот же кусок на делфи
	for i:=0 to 17 do begin
    data:=((key[j] and $FF)shl 24)or((key[(j+1) mod Size] and $FF)shl 16)or((key[(j+2) mod Size] and $FF)shl 8)or(key[(j+3) mod Size] and $FF);
		PArray[i] := PArray[i] xor data ;
		j := (j + 4) mod Size ;
	end;
	datal := 0 ;
	datar := 0 ;
	for i:=0 to 8 do begin
		Blowfish_encipher (datal, datar) ;
		PArray[i*2] := datal ;
		PArray[i*2 + 1] := datar ;
	end;
	for i:=0 to 3 do
  	for j:=0 to 127 do begin
		  Blowfish_encipher (datal, datar) ;
		  SBoxes[i,j*2] := datal ;
		  SBoxes[i,j*2 + 1] := datar ;
		end;
Или в делфи нумерация как-то по другому? (всмысле массива)

Добавлено через 2 часа 24 минуты
To Kilatif:

Можно эту функцию: procedure AddCheckSumm(var data: array of byte; len: integer);

Последний раз редактировалось Tin-moon, 14.02.2012 в 13:15. Причина: Добавлено сообщение
Tin-moon вне форума   Ответить с цитированием
Старый 14.02.2012, 13:17   #57
Местный
 
Регистрация: 23.02.2009
Сообщений: 319
Сказал Спасибо: 72
Имеет 60 спасибок в 45 сообщенях
Kilatif пока неопределено
По умолчанию

Tin-moon, в делфи цикл, например for j := 0 to 127 подразумевает то, что j будет идти от нуля до 127 включительно, а когда j станет 128, то цикл прервется

А цикл for (j = 0; j < 128; j++) говорит о том, что j будет увеличиваться на единицу, начиная с нуля до тех пор пока j < 128. Т.е. когда j = 128, то цикл прервется. Поэтому это одно и тоже
Kilatif вне форума   Ответить с цитированием
Старый 14.02.2012, 15:54   #58
Пользователь
 
Регистрация: 29.01.2012
Адрес: г. Минск
Сообщений: 64
Сказал Спасибо: 10
Имеет 5 спасибок в 5 сообщенях
Tin-moon пока неопределено
По умолчанию

Цитата:
Сообщение от Kilatif Посмотреть сообщение
Tin-moon, в делфи цикл, например for j := 0 to 127 подразумевает то, что j будет идти от нуля до 127 включительно, а когда j станет 128, то цикл прервется

А цикл for (j = 0; j < 128; j++) говорит о том, что j будет увеличиваться на единицу, начиная с нуля до тех пор пока j < 128. Т.е. когда j = 128, то цикл прервется. Поэтому это одно и тоже
Спасибо, понял. Функция уже не нужна(в прошлом посте);

Добавлено через 1 час 31 минуту
WARNING [14 Feb 13:51:10,121] net.l2emuproject.loginserver.network.L2LoginClient .decrypt(): Wrong checksum from client: [State: CONNECTED | IP: 127.0.0.1 ]
Вот вредина Все-таки нужна функция AddCheckSumm

Последний раз редактировалось Tin-moon, 14.02.2012 в 15:54. Причина: Добавлено сообщение
Tin-moon вне форума   Ответить с цитированием
Старый 14.02.2012, 16:39   #59
Новичок
 
Регистрация: 12.02.2012
Сообщений: 27
Сказал Спасибо: 8
Имеет 0 спасибок в 0 сообщенях
ErgoZ пока неопределено
По умолчанию

ты про этот чек сумм:
PHP код:
unsigned long checksumunsigned char *packetint count )
{
   
long chksum 0L;
   for( 
int i 0count+= chksum ^= *((unsigned long *)&raw[i]);
   return 
chksum;
}; 
ErgoZ вне форума   Ответить с цитированием
Старый 14.02.2012, 23:41   #60
Пользователь
 
Регистрация: 29.01.2012
Адрес: г. Минск
Сообщений: 64
Сказал Спасибо: 10
Имеет 5 спасибок в 5 сообщенях
Tin-moon пока неопределено
По умолчанию

To Kilatif:
Прикол, решил сравнить инициализацию блоуфиша:
Приходящий на 1 и тот же входящий пакет Init, получаются разные значения PArray.
Прикол в следующем:
Java и C# дают следующий результат (одинаковый):
Код:
* -		PArray	{long[18]}	long[]
		[0]	-11504476527	long
		[1]	818284978	long
		[2]	5389473844	long
		[3]	5277480315	long
		[4]	2258027768	long
		[5]	1971259599	long
		[6]	-10807336962	long
		[7]	15922993650	long
		[8]	-1570502760	long
		[9]	-13871540854	long
		[10]	7461419269	long
		[11]	15931572012	long
		[12]	-4834315440	long
		[13]	6949642799	long
		[14]	13899931484	long
		[15]	11387598665	long
		[16]	14253408890	long
		[17]	11324059052	long
а вот реализация на Delphi немного другой ( совпало только первые два):
Код:
(1380425361, 818284978, 3744654971, 1864113960, 3479827321, 2874253665, 3288700621, 2149712101, 776530621, 3122561990, 1920928410, 1485135872, 2882331372, 1270005868, 4088379872, 3643499899, 4185267842, 196570026)
Это нормально????
Tin-moon вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Разработка



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

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


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

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

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