|
22.03.2010, 17:30 | #1 | |
Пользователь
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
|
Цитата:
7 из них обновлять не требуется вообще. 44 обновляются скриптом за пару минут из файлов клиента (контольные суммы файлов и куски wow.exe) или из логов сниффера. остальные 96... ну тут вопрос интересный. для обновления каждой из них нужна копия файла бота или чита, которую эта проверка ищет. посмотрим, как они обновятся в 3.3.3 (и обновятся ли вообще - или просто добавятся проверки новых версий). в любом случае - особых знаний для поддержания базы в актуальном состоянии не требуется. |
|
22.03.2010, 19:11 | #2 | |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
Цитата:
также как Код:
#S->C Warden Opcode: 03 #Unk bytes: #14 00 60 D0 FE 2C 01 00 02 00 20 1A 36 00 C0 E3 #35 00 50 F1 35 00 C0 F5 35 00 03 08 00 77 6C 93 #A9 04 00 00 60 A8 40 00 01 03 08 00 36 85 EA F0 #01 01 00 90 F4 45 00 01 seed модуля + новый клиентский и серверный ключ для изменения после шифрации чтобы обойти ограничения ОС приходиться использовать 1 модуль. после того как это выйдет в паблик читерам не составит труда подменивать ответы на проверки... Для того чтобы налету криптовать пакеты вардена необходимо знать ключи для каждого модуля или доставать из памяти ключи. |
|
22.03.2010, 19:28 | #3 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
23.03.2010, 03:54 | #4 | |||
Пользователь
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
|
только не нужно говорить, что ни у кого его нету
все равно не поверю. Цитата:
Код:
data = decode(""" 03 14 00 60 D0 FE 2C 01 00 02 00 20 1A 36 00 C0 E3 35 00 50 F1 35 00 C0 F5 35 00 03 08 00 77 6C 93 A9 04 00 00 60 A8 40 00 01 03 08 00 36 85 EA F0 01 01 00 90 F4 45 00 01 """) from pkt_parser import * pkt = Packet(SMSG_WARDEN_DATA, data) print pkt ------------ warden_opcode : WARDEN_MODULE_LOADLIB (0x3) check_len : 20 check_crc : 754896992 data : 01000200201a3600c0e3350050f13500c0f53500 real_crc : 754896992 check_opcode_1 : 3 check_len_1 : 8 check_crc_1 : 2845011063 data_1 : 04000060a8400001 real_crc_1 : 2845011063 check_opcode_2 : 3 check_len_2 : 8 check_crc_2 : 4041901366 data_2 : 01010090f4450001 real_crc_2 : 4041901366 Код:
010002006089310000523100e05e3100f0623100 040000f0303f0001 010100d03f440001 к шифрованию отношения не имеет вообще никакого, т.к. делается уже после создания новых ключей. Цитата:
сам процесс создания ключа выглядит так: Код:
04:29:52 SMSG_WARDEN_DATA warden_opcode : WARDEN_MODULE_SEED (0x5) seed : f377c0dcb7f1625af8ee9ee352450442 04:29:52 CMSG_WARDEN_DATA warden_response : WARDEN_RESPONSE_HASH (0x4) SHA1 : 67b3c364930ee3dd10fdbf6596b2aaa55e57a279 однако что мешает по очереди загрузить все имеющиеся на руках модули к себе в процесс, накормить тысячей разных сидов и записать полученные хэши\ключи в базу? и из этой базы уже потом проверять клиентов. благо там новый ключ от предыдущего не зависит - только от встроенной в модуль функции и сида. Цитата:
повторяю еще раз, АБСОЛЮТНО ВСЯ НЕОБХОДИМАЯ ИНФОРМАЦИЯ ЕСТЬ НА АНГЛОЯЗЫЧНЫХ ФОРУМАХ в открытом виде уже наверное год как. если не больше. Последний раз редактировалось abdula123; 23.03.2010 в 04:02. |
|||
Пользователь сказал cпасибо: | sven (23.03.2010) |
23.03.2010, 05:42 | #5 |
Пользователь
Регистрация: 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 | #6 | |||
Пользователь
Регистрация: 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 | #7 |
Пользователь
Регистрация: 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 | #8 | ||||
Пользователь
Регистрация: 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) |
|
|