|
23.03.2010, 05:42 | #1 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
Данный пакет был для 3.3.2 и оно даже работает нормально.. другое дело в том, что в опенсорсе разбирать один модуль фи (есть все ключи и читерам подделывать ответы не составит труда... тем более все эти ключи и проверки будут как на ладони). идеи есть как собирать seed, и новые ключи шифрации для каждого модуля ?
Код:
byte seed[16]; // taken from 0x05 packet byte[] rc4_seed_client = ModuleSpecificHash(&seed); // this value than stored at module+4 byte[] rc4_seed_server = ModuleSpecificHash(&seed); // so we have double processed seed here clientRC4Crypt_Init(rc4_seed_client); serverRC4Crypt_Init(rc4_seed_server); byte[] seedHash = SHA1(rc4_seed_client); // used in 0x04 packet п.с. хотелось бы посмотреть на модуль для macos клиента.. а на деле кому оно надо те уже написали простейшую поддержку.. Последний раз редактировалось zhenya; 23.03.2010 в 05:58. |
23.03.2010, 06:37 | #2 | |||
Пользователь
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
|
странно. значит пакет менялся.
в логах за последние 10 дней - только те значения, что я написал. Цитата:
Цитата:
адаптировать его под цикл - не проблема. Код:
wmod = WardenModule("2A7BD368FF3D0795B4DE7F823F487175.raw") wmod.load() wmod.prepare() wmod.init() # state - текущее крипто-состояние wmod.live_rc4_data = state print " -> GenerateRC4Keys" wmod.GenerateRC4Keys("") # теперь шифруем пакет SEED и скармливаем вардену # если ключи принялись нормально - он его обработает и выдаст HASH s_pkt = decode(""" 05 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx """) pkt_crypted = server_crypt.crypt(s_pkt) print " -> PacketHandler" print wmod.PacketHandler(pkt_crypted) resp_crypted = wmod.send_queue.pop(0) resp_decrypted = client_crypt.crypt(resp_crypted) print "decrypted responce" print dump2hexstr(resp_decrypted) # после SEED->HASH грузим новые ключи rc4_states = cast(wmod.rc4_keys_ptr, POINTER(c_ubyte)) print "unload" wmod.UnloadModule() Цитата:
учитывая, что варден там абсолютно тот-же самый, адаптировать под вов - дело недолгое и нехитрое. есть основания предполагать, что: база модулей набирается за несколько месяцев игры. их не очень много (всяко меньше 3-4 сотен) и они тоже в ротации. ну время от времени свежие добавляются. чтобы окончательно проверить это предположение - нужно эти самые несколько месяцев заходить в игру каждые несколько часов и автоматом подлавливать свежие модули. их сыпется по 3-4 штуки в день. за последние 10 дней повторов не было. оно надо коммерческим ботописателям - у некоторых из них действительно давно всё налажено. ну или ботописателям-любителям, если кому делать нехер. |
|||
23.03.2010, 12:15 | #3 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
В d2gs используется только 1 модуль заданный в d2warden.ini также как и ключ.
Код:
;Please don't modify following values! ;І»ТЄРЮёДПВГжµДЦµЈЎ MOD=3ea42f5ac80f0d2deb35d99b4e9a780b.mod MOD_RC4_Key=4f340a327dc8b4b8a7d1c15cf73c0e78 Если вы поможете мне найти для всех модулей Seed, new client key, new server key. 0х3 пакет если отличается для различных модулей то необходимо еще и это. также 0х4 пакет необходимо hash который возращает клиент. На текущий момент у TOM_RUS чуть больше 210 различных модулей с RC4 ключами к ним. Все равно как я понимаю в git не будут включены модули т.к. они подписаны RSA близарда. имхо это откроет путь для начинающих читописателей, ботописателей. п.с. если интересно #rmdc@rusnet Последний раз редактировалось zhenya; 23.03.2010 в 12:19. |
23.03.2010, 13:49 | #4 | ||||
Пользователь
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
|
Цитата:
BNLS сервера точно поддерживают загрузку разных модулей. причем на лету. http://bnls.ghostbot.net:9367/ Цитата:
нагенерить пар (модуль, состояние) для нескольких сидов - могу (хз сколько они будут генериться, но не дольше одной в секунду). завтра, скорее всего. кстати, если кто в криптографии силен - можно ли из начального состояния RC4 (с I и J равными 0) вычислить ключ за небольшое время? что-то мне подсказывает, что нет - т.к. неизвестно J, которое было на момент окончания заполнения BOX. а атаковать RC4 по всем правилам - слишком долгое удовольствие. впрочем, вопрос чисто теоретический, и без начального ключа всё работает нормально. Цитата:
Цитата:
я, кстати, их храню уже расшифроваными и распаковаными - меньше мороки при загрузке Последний раз редактировалось abdula123; 23.03.2010 в 13:52. |
||||
Пользователь сказал cпасибо: | sven (26.03.2010) |
25.05.2010, 12:08 | #5 |
Новичок
Регистрация: 25.05.2010
Сообщений: 11
Сказал(а) спасибо: 1
Поблагодарили 14 раз(а) в 5 сообщениях
|
Заранее извиняюсь за нубский вопрос - последние год-полтора я отошел от копаний во внутренностях ВоВ и остановился на версии 2.3.3, потому могу не знать современных реалий.
Вопрос таков - есть ли возможность варденом следить за целостностью трафика? Проверки модулей, памяти, драйверов и пр. банально не спасают от редактирования трафика на шлюзе, потому логично было бы сверять контрольную сумму исходящих данных, но это реально сделать лишь в собственном модуле (через задницу и с внутренними хуками, но можно). Собственный модуль же требует взлома 1024-битного ключа RSA, либо модификации клиента. О ключе, кстати, отдельный разговор. Может таки есть смысл набрать нужное количество единомышленников, написать OpenCL/CUDA модули и подобрать его? Ключ не менялся со времен д2, за эти годы можно было уже и на CPU посчитать |
|
|