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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 16.03.2015, 15:29   #1
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Ты сам пишешь алгоритм blowfish? Если брать готовые модули, то они как правило работают с потоком данных, а внутри сами разделяют по блокам.
До расшифровки ничего с данными делать не нужно, а вот после для некоторых пакетов (возможно как раз для Init) требуется дексорирование.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 16.03.2015, 17:42   #2
Новичок
 
Аватар для noklin
 
Регистрация: 15.03.2015
Сообщений: 6
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
noklin пока неопределено
По умолчанию

Цитата:
Сообщение от ScythLab Посмотреть сообщение
Ты сам пишешь алгоритм blowfish?
Да. Точнее писал, пока не наткнулся на готовое решение в сорцах сборки l2jskyline.ru.
Так вот там, там есть метод:

private void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex){

int xl = BytesTo32bits(src, srcIndex);
int xr = BytesTo32bits(src, srcIndex + 4);

xl ^= P[ROUNDS + 1];

for (int i = ROUNDS; i > 0; i -= 2){
xr ^= F(xl) ^ P[i];
xl ^= F(xr) ^ P[i - 1];
}

xr ^= P[0];

Bits32ToBytes(xr, dst, dstIndex);
Bits32ToBytes(xl, dst, dstIndex + 4);
}

Он работает с массивами байт из одного читает->расшифровывает а в другой записывает и главное что есть индекс начального байта с которого начинают работу как для массива из которого читают , так и для массива в который пишут. Из этого складывается мысль что для конкретного пакета существует свой алгоритм или такая архитектура связана с механизмом формирования пакета.

Я ваще думаю что байты инвертировать надо в пакете.
Всем известный факт: 2 первых байта это размер пакета. Так? Да окей берем 2 байта BA00 читаем как в школе учили слева на право: 1011101000000000 а это у нас ваще -17920(в десятичной системе) Отсюда мысль про ивертирование. По моей гипотезе нужно брать по порядку значимые байты и их инвертировать. То есть зная что 2 байта есть размер пакета, мы берем и инвертируем это 2 байта получаем 00BA. Следующий байт 8С тип пакета его не трогаем. Следующие 4 байта ID сессии его тоже инвертируем и так далее. А потом применить мой BlowFish без первых 2х байт конечно же.

Копался в исходниках но нечего похожего на это не нашел.

Последний раз редактировалось noklin, 16.03.2015 в 17:55.
noklin вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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