Ломаем "тренажер" МСГИ :)
Я так понимаю что в базе вопросов уже присутствуют ответы. Как нибудь можно их вытащить ?
Программа называется "Тренажер", такого добра по ВУЗам России написаны целые кучи, видимо, авторы получают ещё и бонусы и прочие цацки от Фурсенок... Аффтар нашего шедевра - некто Щитов Иван Владимирович, мертвую пагу он указал http://www.msgi.edu.ru/study.html. Разумеется, как любую тестовую бяку, это гораздо интересней ломать, чем проходить.
Формат файлов теста *.msgi, ясное дело, нестандартен, видимо, расширение от названия ВУЗа. Файл теста текстовый, формат и шифрование - собственные автора (смотрю тест "Историю психологии"). Таких форматов можно придумать сколько угодно, а раз нет исходника проги или описания формата, можно ее только дизассемблировать и изучать по асм-коду, что она делает (долго и трудоёмко, хотя конкретно здесь вводится 1 фиксированный пароль - не так уж трудно локализовать это место в коде, защита лишь от дебила).
Могу навскидку предложить "передовой" метод взлома.
Проверки данных нет в формате тоже нет.
В начале файла формата msgi есть строка 230•1•60
, ставим, к примеру, 230•1•1
- имеем тест из 1 вопроса. Я, например, угадал, что над храмом в Дельфях было написано "Познай самого себя". В следующий раз будет другой вопрос, пока не накопится база правильных ответов :)
Это долго, а у меня, как всегда, 5-10 минут. Ладно, пробуем получить базу теста тоже из 1 вопроса. Вот этот шыдевр:
ivansh•1 Версия: 0.1.13.2 29.12.2010 14:42:34 МСГИ История психологии 2011 четный 2 1. 1•1•1 0•0••••1•0•5•1•0 ‰>BST`O`ЃWe[XgJW“X[_W]_WM_JЋsKUvGaeh‰WOO_QQ–D][VRaO]VNW_aЋ\?ZWIQ\[RvЃ 1••••0 ‰dBbkVelЃQ[LUvF]V?X–Q`\^RaG 1••••0 ‰eCjXNWd]d“PWWOW]?X–Q`\^RaG 1••••0 ‰gGZ\LReI\o^‰fRTXZ\WDZYVR`Ѓ]“X[_WW^N 1••••0 ‰YST“W\YGao?L\R\o 1••••0 ‰YST“W\YGao?W\DTdVe
Формат, понятный и ребенку - поставили 1 вопрос и выбрать 1 (раз было
230•1•60
и выбиралось 60 из 230 - кстати, если поставить средний 0, прога не будет
дешифровать вывод.
Потом
0•0••••1•0•5•1•0
0 - номер вопроса(с нуля) 0 - хбз не смотрел 1 - будет выбор ответа, 2 - ввод 0 - хбз неважно 5 - число вариантов ответа 1 - каким показывать правильный или хбз что 0 - номер правильного варианта (с 0)
Последняя цифра и нужна.
Проверяем, ставим там 1 - прога грит что теперь "Задачей истории психологии является анализ возникновения и развития" не "научных взглядов о психике", а "обыденных знаний о психике", с чем я согласен больше, на 2 грит "религиозных знаний о психике", с чем я согласен еще больше...
Дальше пояснять надо? :)
Осталось понять как зашифрованы тесты.
‰>BST`O`ЃWe[XgJW“X[_W]_WM_JЋsKUvGaeh‰WOO_QQ–D][VRaO]VNW_aЋ\?ZWIQ\[RvЃ Задачей истории психологии является анализ возникновения и развития ‰dBbkVelЃQ[LUvF]V?X–Q`\^RaG научных взглядов о психике ‰eCjXNWd]d“PWWOW]?X–Q`\^RaG обыденных знаний о психике ‰gGZ\LReI\o^‰fRTXZ\WDZYVR`Ѓ]“X[_WW^N все ответы неверны" ‰YST“W\YGao?L\R\o все ответы верны ‰YST“W\YGao?W\DTdVe религиозных представлений о психике
Варианты прога переставляет, так что сортируем по длине:
‰>BST`O`ЃWe[XgJW“X[_W]_WM_JЋsKUvGaeh‰WOO_QQ–D][VRaO]VNW_aЋ\?ZWIQ\[RvЃ Задачей истории психологии является анализ возникновения и развития ‰gGZ\LReI\o^‰fRTXZ\WDZYVR`Ѓ]“X[_WW^N религиозных представлений о психике ‰dBbkVelЃQ[LUvF]V?X–Q`\^RaG научных взглядов о психике ‰eCjXNWd]d“PWWOW]?X–Q`\^RaG обыденных знаний о психике ‰YST“W\YGao?W\DTdVe все ответы неверны" ‰YST“W\YGao?L\R\o все ответы верны
Очевидно, % в начале - часть формата, убиваем его и смотрим на строки:
>BST`O`ЃWe[XgJW“X[_W]_WM_JЋsKUvGaeh‰WOO_QQ–D][VRaO]VNW_aЋ\?ZWIQ\[RvЃ Задачей истории психологии является анализ возникновения и развития gGZ\LReI\o^‰fRTXZ\WDZYVR`Ѓ]“X[_WW^N религиозных представлений о психике dBbkVelЃQ[LUvF]V?X–Q`\^RaG научных взглядов о психике eCjXNWd]d“PWWOW]?X–Q`\^RaG обыденных знаний о психике YST“W\YGao?W\DTdVe все ответы неверны" YST“W\YGao?L\R\o все ответы верны
Явно не сложение с байтом или что-то подобное, скорее, сложение + циклический сдвиг, обратимые. Или исключающее "или".
Пишем мой любимый текст вопроса 1:
0
он выдает:
№
В кодах это:
Hex Dec Bin 30 048 00110000 B9 185 10111001
(Калькулятор Windows рулит). Разница кодов 89 hex (137)
Теперь из текста вопроса
1
получаем
є
Код последнего значка = 186. Вывод - шифруется сложением с байтом 89 hex?
Похоже, это не совсем так, ведь вопрос с текстом 01
даёт
что-то вроде
№П
Значит, некая сумма от слова или фразы. Base64 не подошло (http://www.kruglov.ru/useful/base64/), md5 тем более не при чем. Но я ведь и не обещал расшифровать тексты вопросов? :)
Обратимых шифров тоже сколько угодно, например, вот так можно это делать или так... Так что если нужны ещё и тексты вопросов, я бы скорее дизассемблировал и искал форму ввода преподавательского пароля, чтоб заменить переход "равно" на "не равно" или наоборот... :)
03.03.2011, 22:38 [16301 просмотр]