![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
QUOTE 2020.04.11 note: Original codes found with dictionary attack performed by -=CHE@TER=-. Special thanks to kampaster for first brute-force attack attempt! Hidden commandline argument for hash 0xD95C68A2: FROMINSTALL Hidden word for network chat which triggers developer easter egg quotes for hash 0x72A47EF6: FELTPLAYWORK This topic below contains some historic details for anyone interested. Товарищ Siberian GRemlin, у меня к тебе вопрос, как к знатоку игр Westwood. В первом C&C:RA в исполняемом файле (RA95.EXE - только я не помню, это он такой и был, или я в него RA95.DAT переименовал) есть строчки текста типа таких: QUOTE Denzil L Я так понимаю, что это шуточные цитаты от разработчиков.This would be better on the Mac. Greg H But does it fit into 2 MB? Подумал было, что они есть в титрах - просмотрел их до конца, но ничего не вылезло. Ты не в курсе где и как этот текст в игре выводится? Гуглунием "c&c red alert easter egg quotes" ничего не нашёл. |
Siberian GRemlin |
![]()
Сообщение
#2
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Да, я сам видел там много приколов, но как их запустить в игре не знаю.
|
-=CHE@TER=- |
![]()
Сообщение
#3
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Смотри какая штука - там есть дикая функция, которая считает хеш от строк (привет The Neverhood).
У меня RA95.EXE выводит версию V3.03E - для других смещения будут другие. Собственно, сама функция: sub_4F5C0C. У ней один входной параметр - это строка (в EAX). Возвращается её хеш. В игре эта функция используется два раза для двух хешей: RA95.EXE:000F4DD0 - тут первый хеш: $D95C68A2 (параметр командной строки) RA95.EXE:00108218 - тут второй хеш: $72A47EF6 (неизвестно; может имя пользователя для сетевой игры?..) Я выдернул код подсчёта хеша и попробовал перебором подобрать - не получилось. Там реально вырвиглазный подсчёт идёт, в том числе по таблице для каждого символа ASCII. Зато хеш можно заменить. Например, для слова "boom" хеш будет $03432522. Если заменить первый хеш (D95C68A2) хешем для "boom", то запустив игру: RA95.EXE boom Будет пропущен вступительный ролик (там ещё какая-то странная серая табличка "STAND BY" промелькнёт) и сразу стартует кампания за Советов (не знаю на какой сложности). Со вторым хешем сложнее - я так и не понял, где и что он включает, но от него зависит как раз вывод тех строк-приколов и ещё где-то рядом надпись "SECRET UNITS ON" (даёт возможность производить секретные типы войск?..). Там ещё какая-то строчка выше по коду про инициализацию сети была, так что, подозреваю, что эти строки-приколы вызываются в меню мультиплеера, но у меня кнопка "Network" там не работает - выкидывает назад в главное меню. Спасибо сказали:
|
Axsis |
![]()
Сообщение
#4
|
Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 121 Регистрация: 6-February 08 Пользователь №: 374 Спасибо сказали: 149 раз(а) ![]() |
Нашел вот по RA2 статью по ключам запуска. Возможно, что-то сработает и в первом?
_http://modenc.renegadeprojects.com/Red_Alert_2 Спасибо сказали:
|
-=CHE@TER=- |
![]()
Сообщение
#5
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Прикольно, только по хешу, увы, не подходит. Хотя набрать код в главном меню - это интересная идея.
Вот исходные коды с выдранным куском считающим хеш: ra95hash.zip Запускать так: ra95find.exe 0 "boom" Получим: 03432522 Вместо "boom" любое интересующее нас слово или выражение, хеш которого хотим узнать. Кстати, я как-то пробовал перебором к The Neverhood коды подбирать. Увы, только код "please" подбирается, т.к. в остальных есть как минимум один бит, который и включается и выключается (+2 буквы на каждый такой бит)... P.S. Вынес сообщения в отдельную тему. |
Siberian GRemlin |
![]()
Сообщение
#6
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Будет пропущен вступительный ролик (там ещё какая-то странная серая табличка "STAND BY" промелькнёт) и сразу стартует кампания за Советов (не знаю на какой сложности). После установки игры первый запуск автоматически начинает новую игру. После чего игра запишет параметр в INI, чтобы при последующих запусках игры открывалось главное меню. Как я помню, у меня всегда начиналась первая кампания, но, возможно, я всегда устанавливал с первого диска и с него же запускал. |
-=CHE@TER=- |
![]()
Сообщение
#7
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
После установки игры первый запуск автоматически начинает новую игру. После чего игра запишет параметр в INI, чтобы при последующих запусках игры открывалось главное меню. Точно!REDALERT.INI: QUOTE [Intro] Это строчка появляется после первого запуска - специально сейчас проверил.PlayIntro=no До этого её нет и игра именно так себя и ведёт - показывает все ролики и запускает первую миссию. По той ссылке, которую привёл товарищ Axsis выше, так и написано: QUOTE (Unknown switch, encrypted) Я попробовал хеши от всяких "-firstrun", "-playintro", "-forceintro" (с "-" и без него), но безрезультатно...Show the intro movie (Equivalent to setting Ra2md.ini [Intro]→Play=yes.) |
Siberian GRemlin |
![]()
Сообщение
#8
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
|
-=CHE@TER=- |
![]()
Сообщение
#9
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
А у тебя какая IDA? Здесь, может быть, такая же хрень как с Кирандией - новая IDA не может нормально весь файл дизассемблировать. Если совсем не поможет - запусти игру под Олькой и поставь бряк на обращение к памяти (чтение) своей строки - там где-то рядом и будет место её адреса.
|
Siberian GRemlin |
![]()
Сообщение
#10
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
5.2.0.908. «Кирандию» как раз хавает. Ладно, не так важно, за той строкой идут сообщения для игры через интернет, которая сейчас не работает вроде: можно пренебречь. Как вариант — напишу прогу для поиска массива указателей по длинам тех строк.
|
-=CHE@TER=- |
![]()
Сообщение
#11
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Что за строчка-то? Можешь её полностью процитировать?
|
Siberian GRemlin |
![]()
Сообщение
#12
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
QUOTE Counterstrike Missions Aftermath Missions You cannot disable viewing of your own messages! $205C60 |
-=CHE@TER=- |
![]()
Сообщение
#13
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Короче, рассказываю:
1) Открываешь свой файл через HIEW. 2) Встаёшь на первую букву любого сообщения. 3) Переходишь в ASM-режим (F4 - Decode или два раза Enter). 4) Жмёшь F6. 5) Всё. 6) Если, вдруг, строчка используется в нескольких местах, то после того как нашлось первое сразу же жмёшь CTRL+F6 и так пока все ссылки не будут найдены. И, кстати, поиск массива указателей тебе не поможет, потому что там не массив. (*улыбается*) Спасибо сказали:
|
-=CHE@TER=- |
![]()
Сообщение
#14
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Товарищ Siberian GRemlin!
Во-первых, поздравляю с очередным релизом, во-вторых, замечания принимаются? Решил поставить перевод на свою версию C&C:RA (какой-то рип, с какого-то сборника - очень давно у меня на винте лежит, так что не смогу вспомнить где взял). Что меня в твоём переводе удивило: 1) Путь установки был предложен как... "C:\Program Files\Far". Эээ... так и должно быть? 2) Если воспользоваться переключателями снизу, то путь меняется на "C:\WESTWOOD\REDALERT" - у меня игра и не там стоит, ну да ладно (подозреваю, что ты пытаешься настройки из реестра прочитать, а у меня рип, который ничего туда не писал... но Far-то откуда?). 3) Далее перевод отказывался установиться, ибо у меня чего-то нехватало, хотя окно требовало с меня версию 3.03 (она у меня и так стоит) или 3.05. Потом до меня дошло - переименовал RA95.EXE обратно в RA95.DAT и твой перевод встал. Можно ли как-то (пожелание) сделать сообщение об ошибке более информативным, чтобы пользователь знал на каком файле программа стопорится или что ей не нравится? Я, конечно, понимаю, что человек нормально поставивший игру и обновление на неё такой ошибки не получит, но на всякий случай решил о такой вещи упомянуть. 4) В результате обновились файлы RA95.DAT (EXE) и WOLAPI.MIX. Других изменений не заметил. Загрузил одну из своих старых игр (года два или три назад играл последний раз), но при вызове "Меню" -> "Инструкции" задание миссии всё ещё на английском. Это так и должно быть или задание сохраняется в файл вместе с сохранённой игрой, поэтому и осталось непереведённым? Если так, то, может, стоит об этом где-нибудь упомянуть при установке перевода, а то вводит в заблуждение. Вроде бы всё. Спасибо сказали:
|
Siberian GRemlin |
![]()
Сообщение
#15
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
1) Путь установки был предложен как... "C:\Program Files\Far". Эээ... так и должно быть? Логика такая.2) Если воспользоваться переключателями снизу, то путь меняется на "C:\WESTWOOD\REDALERT" - у меня игра и не там стоит, ну да ладно (подозреваю, что ты пытаешься настройки из реестра прочитать, а у меня рип, который ничего туда не писал... но Far-то откуда?). Если русификатор уже был установлен (предыдущая версия, например; только для русификаторов на «Inno»), то берётся её путь. «Inno» сам его подхватывает из своих ветвей реестра, в противном случае устанавливается путь из его глобальной переменной {sd} (системный диск). Я проверяю: если это {sd}, то нажимаю первую кнопку (обычное издание), которая ищет путь в реестре, и если его нет, тогда устанавливает пусть по умолчанию предлагаемый «Westwood Studios» при установке игры. Либо у тебя так в системе прописан системный диск, либо это заморочки «Inno». Раньше никаких проблем не было. 3) Официальная позиция такова, что игрок должен иметь полную версию без сторонних изменений. Имена файлов не выводятся для усложнения жизни воришек переводов. Ты конечно можешь с этим спорить, но см. первое предложение сего абзаца. Да и в некоторых русификаторах пришлось бы «простыни» со списками файлов выводить на экран. 4) Допишу пока на сайте, ибо ради строки в информационном блоке, который мало кто читает, обновлять русификатор не целесообразно. P. S. релизом Терпеть не могу это слово.Спасибо сказали:
|
-=CHE@TER=- |
![]()
Сообщение
#16
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Ага, понятно.
P.S. Терпеть не могу это слово. А как тогда правильно говорить? "Поздравляю с выпуском новой версии"? "Нового обновления"? Или как? Вообще, ты знаешь, я не хочу разводить бессмысленные споры (чуть было не написал "холивар"), но в любой профессиональной среде есть свой устоявщийся, скажем так, язык (сленг).И когда ты не используешь его, то выглядишь как минимум странно, если не сказать хуже. Знаешь, я одно время работал в коллективе с людьми в весьма солидном возрасте. Очень сложно потом было на новой работе, где были люди моего возраста и младше, говорить "клиент" вместо уже привычного "заказчик". Про всякие "тимбилдиг", "майлстоун", "коммит" и ещё хрен знает сколько других слов, от которых, поверь мне, я тоже как и ты офигеваю, но... ничего сделать не могу. Я один и ситуации не изменю, так что остаётся только подстраиваться под уже существующую среду. К тому же силы и время можно потратить на более полезные вещи, нежели бороться за чистоту русского языка. Да и, вообще, ты не задумывался, что любой язык (если он не мёртвый) всё время пополняется новыми словами и выражениями. В данном случае, они, конечно, все заимствованные, но согласись проще сказать "коммит", чем "добавление последних изменений в центральное хранилище (репозиторий) исходных кодов"? (*улыбается*) Про художественную литературу я ничего не говорю, но в профессиональной среде свой язык. |
-=CHE@TER=- |
![]()
Сообщение
#17
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Короче, отриверсил я эту фигню из ассемблера.
Всё лежит там же в 5-ом сообщении. Старый код на асме на всякий случай оставил. По ходу дела выкинул, наверное, 50% кода, ибо он никогда не исполнялся или был совершенно бесполезен. Там, кстати, вообще, дикая наркомания творилась, например, как вам нравится такой код: CODE k1 = buf_hash(str, len); strrev(str); // "ABC" -> "CBA" k2 = buf_hash(str, len) ^ k1; strrev(str); // "CBA" -> "ABC" key = k2 ^ k1; Вы поняли, да, что последняя строчка разворачивается в: key = k2 ^ k1 ^ k1; Из чего получается (ибо k1 xor k1 = 0): key = k2; Что говорит нам об особых умственных способностях того, кто писал этот алгоритм. Я сократил всё такое лишнее, что не влияло на вычисления и код стал очень даже понятным и простым. Но вот сама функция вычисления этой суммы - по прежнему наркомания дранная. Я, вообще, не понимаю какой смысл был такую функцию сложную делать (её же, блин, кто-то писал, рабочее время на это тратил, а это ведь даже не защита от несанкционированного копирования). Основное, что нужно знать про хеш: 1) Он не может быть больше 128 символов. 2) Все английские бувы перед вычислением переводятся в верхний регистр. 3) Все непечатные символы (функция isgraph()), т.е. не лежащие в диапазоне от 33 до 126 включительно заменяются на заглавные латинские буквы в зависимости от позиции в строке. 4) Строка добивается теми же латинскими заглавными буквами до 16 символов в длинну, если меньше, или до значения кратного 4. 5) После этого над строчкой делается разного рода наркомания (см. исходные коды), как например пропуск через два 8-ми байтовых массива, которые часть битов в байте делают всегда 1, а часть всегда 0 (не удивляйтесь, когда у вас 2, а и то и 5 разных строк будут давать одинаковый хеш). Товарищ Axsis! У тебя здорово со всякими хешам получается - можешь чего-нибудь посоветовать для упрощения перебора? Потому что влоб там не получится, разве что можно заоптимизировать выкинув маленькие буквы из диапазона [32..126], но это всё равно дофига. |
-=CHE@TER=- |
![]()
Сообщение
#18
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
QUOTE Note: use $ERA? or @ERA! as word for network chat to activate developer quotes easter egg - it's shortest possible and easy to remember. Мву-ха-ха-ха-ха!!!А я взломал второй хеш перебором! Как я уже сказал, алгоритм кривой, так что там очень много коллизий, поэтому этот хеш, я уверен, совсем не то что задумывали разработчики, но это не так уж и важно для использования. Строчка ZGDHD даёт хеш 0x72A47EF6. НО!!! К введённому слову игра добавляет пробел в конец. Поэтому нужный хеш это слово BAPXBN - его нужно ввести в качестве текста в чате (Multiplayer game - Network) и тогда: 1) Автоматически добавятся соперники с именами разработчиков Westwood. 2) В чат посыпятся те самые цитаты. 3) Может быть ещё что-то изменится (появятся новые юниты для строительства в игре?). Ииииххххаааа!!! Proudly brought to you by -=CHE@TER=- after 21 year since game release! Внимание! Чтобы войти в режим игры по сети на современных системах нужно обязательно установить Red Alert v3.03 TCP/IP LAN patch! P.S. Перекачайте исходные коды - я ошибся, там не isprint() была функция, а isgraph() - она ещё пробел отсекает. P.P.S. Хеш для ключа командной строки всё ещё не могу взломать. Я только предполагаю, что он, как и все остальные ключи в игре, должен начинаться с "-" (-DESTNET, -SOCKET, -MESSAGES, etc.). CODE Matched strings for hash 0x72A47EF6 (6 chars, only A..Z letters). WARNING: game adds a space character at the end of each message entered in the chat. So the actual string passed to the hash routine not "BAPXBN" but "BAPXBN " (with space at the end)! BAPXBN LEPLML LKXLYY LMXLYX LUXLYT LWXLYS POXTGW PQXTGV PYXTGR VKXLTY VMXLTX VUXLTT VWXLTS ZAPTFN ZCPTFM ZOXTBW ZQXTBV ZYXTBR |
-=CHE@TER=- |
![]()
Сообщение
#19
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
QUOTE Note: use RJWBADCF as word for command line key to activate initial mode - it's easy to remember. Офигеть!!! Серьёзно!!!Наш казначей, товарищ kampaster, просто нереально крут! Он согласился на своём компьютере заняться брутфорсом (я сделал ему программу для перебора, ибо мой компьютер слишком стар для всего этого) и ему, вы не поверите, удалось за три дня найти коллизии для второго хеша - 0xD95C68A2! Proudly brought to you by kampaster after 21 year since game release! CODE Run the game with any of these as command line key like this: RA95.EXE RJWBADCF Почему он так крут? Потому что я попробовал перебор по словарю (взял здесь, если кому-нибудь ещё нужно) и первый хеш с некоторыми изменениями слов подбирался более нескольких десятков раз, но вот этот, второй, вообще никаких коллизий не давал. И это сильно меня напрягло: а возможен ли, вообще, подбор этого хеша, если на таком количестве вариантов не было ни одной коллизии (а мы помним, что алгоритм хеша кривой и весьма распалагает к этому)? Плюс ко всему, перебор всех символов, это, на минуточку:Matched strings for hash 0xD95C68A2 (6 chars, all allowed characters). FVE[OT FVM[/T T&FAH3 \7>-5C \\'HI\ {N*].Z Matched strings for hash 0xD95C68A2 (7 chars, all allowed characters). !#=J`}P !&&A9R# !;WHM([ !>}RM+E "#9A"8J "#;A"8I "#=8:@2 "#=A"8H "#?8:@1 "#?A"8G "#AYZ,B "#B8I(] "#CYZ,A "#EYZ,@ "'B`A>} "+B7Y,_ ";8Y:"J ";:Y:"I ";<Y:"H ";>Y:"G "?)1*62 "?+1*61 "?-1*60 Matched strings for hash 0xD95C68A2 (9 chars, all allowed characters). !!!~'/_8= !!"L0}KA> !!"`"))@< !!#='DW&% Matched strings for hash 0xD95C68A2 (10 chars, all allowed characters). !!!!5Q~"DG Matched strings for hash 0xD95C68A2 (11 chars, all allowed characters). !!!!!3+,XTJ !!!!!9{7W~' Matched strings for hash 0xD95C68A2 (8 chars, only A..Z letters). GCZEBWAE RJWBADCF XKLDCBCZ Few matched strings for hash 0xD95C68A2 (9 chars, only A..Z letters). AJUHYHEUD AVOUHFKIB Matched strings for hash 0xD95C68A2 (11 chars, only 0..9 digits). 04246126134 08287517540 08975635245 18474608869 34184024810 41150738524 44492175931 46381858073 76984168566 Few matched strings for hash 0xD95C68A2 (12 chars, only 0..9 digits). 035923415929 038800295595 038819562294 043587072070 051453070824 058901584061 065904284415 128541931672 128770991034 137510531255 154783033536 158392813664 176945835093 178769570821 194891223927 194899223527 209979117011 248726835105 253301152031 254311009595 262545928208 265354315434 282726110041 283530133345 289789955677 337416619580 348906204448 357855960362 126 - 33 + 1 = 94 - количество символов для перебора 94 - 26 = 68 - у меня в программе пропускаются маленькие латинские буквы (т.к. хеш идёт только по заглавным) Итого: 68 в степени количества символов в строке. С учётом того, что уже хеш из 5-ти символов подбирается со скрипом (у меня на компьютере), а товарищ kampaster прошёл все от 1 до 6 (остальные были параллельно запущены - по одному ядру на программу), то это просто офигенно круто! В общем, тему трёхлетней давности можно считать закрытой. Настоящие хеши мы вряд ли когда-либо узнаем, но это и не так важно - главное, что вот этими теперь можно пользоваться. Спасибо всем! P.S. Добавил в архив в пятом сообщении программу для перебора паролей с исходными кодами. |
-=CHE@TER=- |
![]()
Сообщение
#20
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Не думал, что вернусь к этой теме, но... Сделал сегодня атаку по словарю с комбинацией из двух слов - и таки что вы думаете? (*улыбается*)
QUOTE Hidden commandline argument for hash 0xD95C68A2: FROMINSTALL Насчёт первого хеша я уверен на 100%, а насчёт второго практически (я ещё не закончил брутфорс - там 6 часов на том компьютере с 4 ядрами, к которому у меня сейчас доступ есть, при этом я распараллелил процесс и там все ядра заняты - задача на 4 потока разбита). Подробности как закончу напишу - я, вообще-то, демо-версия C&C:RA брутфорсю (там есть новые ключи и тоже от них хеши). Кстати, я обновил статью про The Neverhood у себя на домашней страничке - там теперь человеческие хеши (плюс разобрался что коды делают, кроме одного) - вчера тоже из двух слов перебирал (35 минут ушло в силу того что там алгоритм легче и можно вместо слов уже посчитанные хеши объединять, что в разы быстрее), не все, но большую часть кодов удалось чем-то адекватным заменить.Hidden word for network chat to see developers easter egg for hash 0x72A47EF6: FELTPLAYWORK Спасибо сказали:
|
![]() ![]() |
Упрощённая версия | Сейчас: 10th September 2024 - 03:46 |