Yoko

All sides of Injection
It is currently 2017-09-26 02:15:08

All times are UTC+02:00




Post new topic  Reply to topic  [ 10 posts ] 
Author Message
PostPosted: 2011-01-19 01:50:54 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
Всем доброго времени суток. Меня очень сильно интересует один важный (для меня, само собой) вопрос.

Вопрос врядли касается инжекта, но может быть касается использования UOEncryption.dll (хотя сомневаюсь, судя по тому, что я понял из сорсов).

Мне нужно отправлять свои пакеты (ничего кулхацкерного и, тем более, читерного. в основном касающееся логин сервера и логинкрипта) прямо на сервер без использования клиента и stealth клиента. Действия довольно банальны, я уже разобрался с ними, если тупо копипастить пакеты из сниффера. Все замечательно работает, но вся задумка теряет свой смысл, т.к. я не могу изменять данные, отправляемые этими пакетами по понятным причинам - клиент отправляет логинсерверу зашифрованные данные.

Я потратил довольно много времени на поиск решения, но всё на что я натыкался - это просто различные способы убрать все крипты из клиента. Я бы давно сдался, но мне не дает покоя то, что старая тулза (dseteot), аттачась к 2.0.3 клиенту, запущенным с yoko injection, спокойно записывает все пакеты в лог - расшифрованными. При этом пакетные снифферы дают четко понять, что пакеты отправляются на сервер в зашифрованном виде (иначе сервер и не распознает, как я понимаю. разговор об Абиcce). Значит каким-то образом dseteot ловит эти пакеты и дешифрует на ходу. У dseteot есть исходники, но они, как я понял, старые, т.к. там нет ни слова о записи в эти самые логи.

Может быть кто-нибудь в курсе как можно реализовать обратный процесс? Может кто-то сталкивался или может я не до конца понял работу UOEncryption.dll (как я понял оно расчитано на подбор крипт-ключей). Может быть можно нормально заставить работать какой-нибудь нон-крипт клиент с абиссом (хотя я в этом сомневаюсь, как впрочем и с любым другим сервером, ведь сервер расчитан на принятие зашифрованных данных)?

add:
Немного пораскинув мозгами подольше пришел к выводу, что я не так понял работу UOEncryption. Запустив IRW со стандартным клиентом aбиcсa (encryption same as client) прочитал лог и понял, что оно делает как раз то, что мне нужно... Попробую покопать поглубже, но все еще надеюсь на небольшую помощь в этом направлении.


Last edited by Weee on 2011-01-20 15:37:43, edited 1 time in total.

Top
   
PostPosted: 2011-01-19 12:02:26 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
Вот что значит, если нет знаний в какой-то области.

Я так понял можно использовать стандартные методы криптования (blowfish, twofish, в зависимости от того, какой метод используется в клиенте). В моем случае это blowfish.

Надеюсь можно задать такой нубский вопрос:

Для эн(де)крипторов (будь то mcrypt для php или что-то другое) есть определенные настройки криптования. Вот описание функции mcrypt_decrypt():

Code:
string mcrypt_decrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

Decrypts the data and returns the unencrypted data.

Parameters:

cipher
One of the MCRYPT_ciphername constants, or the name of the algorithm as string.

key
The key with which the data was encrypted. If it's smaller than the required keysize, it is padded with '\0'.

data
The data that will be decrypted with the given cipher and mode. If the size of the data is not n * blocksize, the data will be padded with '\0'.

mode
One of the MCRYPT_MODE_modename constants, or one of the following strings: "ecb", "cbc", "cfb", "ofb", "nofb" or "stream".

iv
The iv parameter is used for the initialization in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If you do not supply an IV, while it is needed for an algorithm, the function issues a warning and uses an IV with all its bytes set to '\0'.


Может кто-нибудь объяснить с какими настройками используется blowfish в UO при пост-логине (пакет 0х91)?

Как я понял:
cipher = MCRYPT_BLOWFISH - понятное дело

key = 100007F - login seed? или это один из ключей, которые нужны для запуска инжекта? IRW в логе пишет следующее:
Code:
CLIENT: Initializing blowfish crypt with seed 100007F "the seed is unimportant" *the voices mutter*
IRW: Initializing blowfish crypt with seed 100007F
Switching to game socket, seed 0x0100007F

Отсюда вывод, что все-таки key - это, наверное, login seed.

data = тоже понятно.
mode и iv - понятия не имею. что-то мне подсказывает, что режим должен быть STREAM, но так ли это?

Надеюсь на помощь.

add:

Еще как вариант, что там используются режимы без применения IV (Initilization vector). Например ecb или nofb.
Пробую методом тыка подобрать - никак не получается...


Top
   
PostPosted: 2011-01-20 12:39:38 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
Решил более детально посмотреть в сторону эмуляции шифрования инжектом и аналогичными тулзами. Нашел старое зеркало yoko и скачал исходники. Покопался там - увидел знакомые данные CFB, ECB, IV и прочее, но это, в основном, касается TwoFish. BlowFish позиционируется как old game crypt и я из related кода увидел только упоминание CFB режима, что означает использование IV, но ничего про IV я не нашел.

В случае с TwoFish как-то пообширней описано, да и кода меньше. Там точно описывается режим и IV, как бы вот:
Code:
 cipherInstance ci;          /* keeps mode (ECB, CBC) and IV */


Но для эмуляции 1.26.4 клиента нужен BlowFish... Как с ним разобраться - не знаю. Теперь еще и запутался какой же именно ключ используется для энкрипта: seed, key1 или key2? или вообще key3, который иногда тоже фигурирует. Еще в комментариях видно, что ключ этот генерируется, вроде как. Но откуда взяты данные в массивах - не ясно...

P.S. - Наверное зря я тут пытаюсь кого-то загрузить. Наверняка решение моей проблемы очень простое, но мне, из-за нехватки знаний и опыта, дается это с очень большим трудом и копаясь в чужих исходниках трудно разобраться, особенно почти не зная Cpp. ;(


Top
   
PostPosted: 2011-01-23 11:00:19 
Offline
User avatar

Joined: 2010-10-01 16:47:41
Posts: 75
Здесь нужно дружить не с Cpp, а с асмом... Стандартный алгоритм криптования с 2 ключами можно посмотреть в исходниках инжекта. А вот с абиссом - там нада вскрывать abyss.dll и разбираться в алгоритме. Почитай тему "идем на Восток" - там Грин некоторые намеки высказывал.

_________________
Все мы славные ребята, простые русские парни, железные люди с деревянными головами...


Top
   
PostPosted: 2011-01-23 11:28:29 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
Спасибо за ответ.


Top
   
PostPosted: 2011-01-25 17:21:13 
Offline
User avatar

Joined: 2010-10-01 16:47:41
Posts: 75
Да это, собсссно, и не ответ. ))) Меня самого этот вопрос интересует, но пока совершенно нету времени. Может быть еще проще будет дизассемблировать не abyss.dll, а crypt.dll, которую сделал Грин.

Ибо, как я понял, он не пересобирал заново инжект из исходников, когда делал инжу для абисса, а просто повесил хук на функцию шифрования.

_________________
Все мы славные ребята, простые русские парни, железные люди с деревянными головами...


Top
   
PostPosted: 2011-01-25 17:28:53 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
Хех :) Мне на данном этапе точно знаний не хватит. Я думал можно будет реализовать это на PHP, используя mcrypt модуль. Точней я думал, что там надо просто указать режим blowfish, ключ и IV и что этого хватит :) Так то повторить наверное весь процесс можно, но нужно досконально разобраться со всем. Я думал все куда проще)


Top
   
PostPosted: 2011-01-28 20:02:40 
Offline
User avatar

Joined: 2010-10-01 16:47:41
Posts: 75
То, что ты хочешь - это все равно, что написать новый инжект с нуля. ))

_________________
Все мы славные ребята, простые русские парни, железные люди с деревянными головами...


Top
   
PostPosted: 2011-01-28 22:09:46 
Offline

Joined: 2011-01-19 01:07:15
Posts: 90
Да нет, с инжектом там мало общего, только метод энкрипта для логина, не более того. Если повторить процедуру криптования пакетов, то можно и на пхп реализовать, как и хотел) если просто пакеты напарсенные отправлять - все работает (через fsockopen())


Top
   
PostPosted: 2013-05-08 10:56:39 
Offline

Joined: 2013-05-08 10:54:08
Posts: 1
подниму тему.

Интересует вопрос шифрования пакетов

ключи есть..... как использовать?

как применять шифрование? Исходников то нету по ссылке уже


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 10 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited