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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 13.11.2014, 11:44   #1
Новичок
 
Регистрация: 13.11.2014
Сообщений: 20
Сказал Спасибо: 2
Имеет 1 спасибку в 1 сообщении
i_am_kisly пока неопределено
По умолчанию Проблема с L2 Init Blowfish

День добрый, начал писать свой чат-клиент под android на Csharp/xamarin.
Столкнулся с проблемой дешифрования блоуфишем.

Набросал самый простой минимальный код без излишеств, скриншот output'а прилагаю.

Код:
using System;
using System.Text;

namespace l2packet
{
    unsafe class MainClass
    {
        public static byte[] StringToByteArray(String hex)
        {
            int NumberChars = hex.Length;

            byte[] bytes = new byte[NumberChars / 2];

            for (int i = 0; i < NumberChars; i += 2)
                bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);

            return bytes;
        }

        public static void Main (string[] args)
        {
            byte[] STATIC_BLOWFISH_KEY = new byte[32];
            string key = "6B60CB5B82CE90B1CC2B6C556C6C6C6C";
//or
            STATIC_BLOWFISH_KEY[0]  = 0x6B;
            STATIC_BLOWFISH_KEY[1]  = 0x60;
            STATIC_BLOWFISH_KEY[2]  = 0xCB;
            STATIC_BLOWFISH_KEY[3]  = 0x5B;
            STATIC_BLOWFISH_KEY[4]  = 0x82;
            STATIC_BLOWFISH_KEY[5]  = 0xCE;
            STATIC_BLOWFISH_KEY[6]  = 0x90;
            STATIC_BLOWFISH_KEY[7]  = 0xB1;
            STATIC_BLOWFISH_KEY[8]  = 0xCC;
            STATIC_BLOWFISH_KEY[9]  = 0x2B;
            STATIC_BLOWFISH_KEY[10] = 0x6C;
            STATIC_BLOWFISH_KEY[11] = 0x55;
            STATIC_BLOWFISH_KEY[12] = 0x6C;
            STATIC_BLOWFISH_KEY[13] = 0x6C;
            STATIC_BLOWFISH_KEY[14] = 0x6C;
            STATIC_BLOWFISH_KEY[15] = 0x6C;

            //C200 вырезал заголовок с размером из пакета
            string str = "9B09F43C6A02BE5DD3D485782B8F54B46F15D32B602D6D9330A3A40519291A8C193BC97F0F05CD004DADD2B01C3B494195DFAE760E00C576690E141826583405CF573B374E2ED2DC0270D8DADB7294F03CDF5757E4CC7D4BD45F73CDABA5C3D53D3A46B8E4E1A5FCB5E1695E05EBD8FF2702FFE6E5FF5B5367FB926F5DFED57A84E5BAD3901EB97E788804F6F03625B82637C2C5E0170FDFECA65FEDA0D5177899AB73432E83182547B870D923554C03A0AB2F50375D0631A27D68707A147A37";
            byte[] bytes_ = StringToByteArray (str);

            additionals ad = new additionals();

            fixed (byte *pbuf = &bytes_[0]){ //TODO: add overload view_raw_data( <- byte of array) later
                ad.view_raw_data(pbuf,true,192);
                    }

            L2_login.NewCrypt newc = new L2_login.NewCrypt (STATIC_BLOWFISH_KEY);
            byte[] res = newc.decrypt (bytes_);

            fixed (byte *ppbuf = &res[0]){
                ad.view_raw_data(ppbuf,true,192);

            }

            }
        }
    }
На выводе получаю явно что-то не то (

Использовал исходники L2.net (он же L2_Login)
Что я делаю не так ?
Миниатюры
Нажмите на изображение для увеличения
Название: init.png
Просмотров: 864
Размер:	54.8 Кб
ID:	2920  
Вложения
Тип файла: zip Crypting.zip (4.1 Кб, 117 просмотров)
i_am_kisly вне форума   Ответить с цитированием
Старый 13.11.2014, 23:57   #2
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

Бля ну и задроты пошли)))))))
wimax вне форума   Ответить с цитированием
Старый 14.11.2014, 09:53   #3
Новичок
 
Регистрация: 13.11.2014
Сообщений: 20
Сказал Спасибо: 2
Имеет 1 спасибку в 1 сообщении
i_am_kisly пока неопределено
По умолчанию

задротство тут не при чем, академический интерес.
i_am_kisly вне форума   Ответить с цитированием
Старый 14.11.2014, 19:30   #4
Местный
 
Аватар для Antharas
 
Регистрация: 26.11.2012
Сообщений: 207
Сказал Спасибо: 23
Имеет 18 спасибок в 18 сообщенях
Antharas пока неопределено
По умолчанию

А че только на чате останавливаться?) может ООГ клиент для мобилы напишешь?)
__________________
lllllllllllllllllll
Antharas вне форума   Ответить с цитированием
Старый 16.11.2014, 03:32   #5
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

http://fursoffers.narod.ru/Packets.htm
wimax вне форума   Ответить с цитированием
Старый 16.11.2014, 19:03   #6
Новичок
 
Регистрация: 13.11.2014
Сообщений: 20
Сказал Спасибо: 2
Имеет 1 спасибку в 1 сообщении
i_am_kisly пока неопределено
По умолчанию

Цитата:
Сообщение от Antharas Посмотреть сообщение
А че только на чате останавливаться?) может ООГ клиент для мобилы напишешь?)
я вижу в твоем сообщении иронию.. а зря!

Добавлено через 51 секунду
Цитата:
Сообщение от wimax Посмотреть сообщение
т.е .в начале надо проделать расшифровать xor ?

Последний раз редактировалось i_am_kisly, 16.11.2014 в 19:04. Причина: Добавлено сообщение
i_am_kisly вне форума   Ответить с цитированием
Старый 17.11.2014, 04:57   #7
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

Пакеты сервера авторизации шифруются по алгоритму 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 в пакете зашифрованы функцией:
wimax вне форума   Ответить с цитированием
Старый 18.11.2014, 14:02   #8
Новичок
 
Регистрация: 12.11.2014
Сообщений: 3
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
r00tk1d пока неопределено
По умолчанию

Есть у кого-то пример на C/C++ как именно ксорить пакет Init?

Последний раз редактировалось r00tk1d, 18.11.2014 в 17:28.
r00tk1d вне форума   Ответить с цитированием
Старый 18.11.2014, 23:57   #9
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

реализация логина на Delphi 7
Вложения
Тип файла: rar la2_client_emu.rar (30.7 Кб, 276 просмотров)
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
За это сообщение supernewbie нажился спасибкой от:
Старый 19.11.2014, 15:14   #10
Местный
 
Аватар для Antharas
 
Регистрация: 26.11.2012
Сообщений: 207
Сказал Спасибо: 23
Имеет 18 спасибок в 18 сообщенях
Antharas пока неопределено
По умолчанию

Цитата:
Сообщение от i_am_kisly Посмотреть сообщение
я вижу в твоем сообщении иронию.. а зря!
Да я вобще с радостью по разбирался бы в этом деле вместе.
__________________
lllllllllllllllllll
Antharas вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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