БлогNot. Ломаем "тренажер" МСГИ :)

Ломаем "тренажер" МСГИ :)

Я так понимаю что в базе вопросов уже присутствуют ответы. Как нибудь можно их вытащить ?

Программа называется "Тренажер", такого добра по ВУЗам России написаны целые кучи, видимо, авторы получают ещё и бонусы и прочие цацки от Фурсенок... Аффтар нашего шедевра - некто Щитов Иван Владимирович, мертвую пагу он указал 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 [16214 просмотров]


теги: тест взлом

показать комментарии (7)