Взлом программы однокомандного процессора

    Разного рода "ненормальное" программирование весьма популярно среди любителей поломать голову над разными задачками. Порой программу для очередной "ненормальной" среды программирования уже нереально написать вручную, а надо писать генератор, создающий код.

    В задаче, что предлагаю я, программы все еще можно писать вручную на некотором высокоуровневом макроассемблере.

    Итак, имеется модель некоторого виртуального процессора, выполняющего только одну логическую операцию — Стрелку Пирса.


    UPDATE 4: Опубликованы полученые решения и также исходный авторский вариант.

    UPDATE 3: Готова новая версия задачи. Теперь ее должно быть взломать немного сложнее, хотя методика осталась прежней.

    UPDATE 2: Победитель, Artemev Vasiliy (vasart@gmail.com), предложил спонсировать дальнейший взлом в виде половины суммы призовой суммы. Приз 100$ сейчас уходит Василию, но теперь, первому, кто разберется в алгоритме данной программы, Василий перечислит половину его приза, то есть 50$. Решения продолжают приниматься по старому адресу, указанному на странице задачи.

    UPDATE: Задача решена. Первое правильное решение было получено от Artemev Vasiliy. Поздравления победителю. Предлагаю тур номер 2, уже бесплатный, для фанатов, в котором предлагается разобраться в алгоритме, которым шифруется пароль и текстовые строки.

    На этом процессоре написана программа, на вход которой подается некоторый пароль. Если пароль неверный, то в ответ выдается строка "Wrong password!". Если верный, то выдается определенное волшебное сообщение.

    Задача: любым образом выяснить это волшебное сообщение. Как вариант, можно, например, угадать пароль, и программа сама выдаст секрет.

    Логика написана таким образом, что разобравшись в алгоритме, можно без труда расшифровать волшебное сообщение.

    В прошлом я писал об использованном подходе во всех деталях.

    Оригинальный подход, на котором основан мой эксперимент, был не совсем "чистым", так как команда сложения был вынесена за логику процессора. В моей версии все до единой команды реализованы на самом процессоре. Для этого потребовалось немного изменить интерпретатор, добавив в него сдвиговый регистр.

    Для желающих попробовать взломать мой эксперимент, я сделал страничку, на которой на JavaScript'e реализован выше описанный виртуальный процессор с одной командой и программа для него, проверяющая пароль.

    Итак, ссылка на задачу: http://demin.ws/norcpu/norcpu.html

    Удачи.

    P.S. Для первого взломавшего — небольшой приз! Информация по ссылке.
    Метки:
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 13
    • 0
      Любопытно. Жаль в нерезиновске уже время позднее, завтра обязательно покопаюсь.
      • 0
        Гм. Надо будет посмотреть на днях.
        • –12
          • –5
            не ценят на хабре тонку иронию!
            • +3
              Как не ценят? Оценок у тебя почти как у победителя…
          • +13
            Password: 0HG
            Secret code: 139471
            • 0
              О, мастак бинарного поиска!
              • +2
                Ответ верный. Мои поздравления.

                Но формально я не могу зачесть вас как победителя, так я уже получил правильное решение по почте от Artemev Vasiliy, как было сказано в задании.
                • +7
                  Всё таки это победитель, никнейм vasart как бы намекает)
                  • +4
                    Да мы уже тут прояснили ;-)
              • +3
                То, что паролей много — это баг или фича?
                «kou», «pLM», «nsU», «dxm», «diE», «ZTX» и десятки других…
                • 0
                  Слабая хэш-функция, увы.
                • 0
                  Одобряю, я и сам люблю побаловаться с виртуализацией кода =) Добавь мусорный код и можно уже мелким протом назваться будет, хы-хы.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.