![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|||
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 ![]() |
А помните в свое время была такая замечательная игра на Dendy, как Prince of Persia? Кто из нас не пытался подбирать пароли к различным уровням? Помнится даже журнал Великий Дракон опубликовал статью с названием вроде "секреты паролей принца" или схожим. Однако алгоритм генерации паролей так и не был найден. Что ж ... вот он, спустя 19 лет такна открыта
![]() ![]() Код <?php if ($argc != 3) { echo "Usage: " . $argv[0] . ' <level> <time>'; die(); } $plevel = intval($argv[1])-1; $ptime = intval($argv[2]); echo "Level: " . ($plevel+1) . "\r\n"; echo "Time: " . $ptime . "\r\n"; $r1 = rand(0,9); $r2 = rand(0,9); $pass[0] = (intval($ptime / 10) + $r1) % 10; $pass[3] = (intval($ptime % 10) + $r2) % 10; $pass[1] = (intval($plevel & 3) + $r1) % 10; $pass[7] = (intval($plevel / 4) + $r2) % 10; $pass[2] = $r1; $pass[5] = $r2; $sum = $pass[0] + $pass[1] + $pass[2] + $pass[3]; $sum = $sum + ($sum % 10) + $pass[5]; $sum = $sum + intval($sum / 10) + $pass[7]; $pass[4] = $sum % 10; $pass[6] = intval($sum / 10); echo "Password: " . $pass[0].$pass[1].$pass[2].$pass[3].$pass[4].$pass[5].$pass[6].$pass[7] . "\r\n"; ?> Пример. Уровень 1. 99 минут - 56608121 ![]() p.s. Сам алгоритм был взять мной из замечательной статьи [NES] Пишем редактор уровней для Prince of Persia с Хабра и переписан с bash'а на PHP. Вот кстати ссылки на эту статью: p.s. Ссылка, по которой можно загрузить архив с редактором, небольшой документацией по игре и исходному коду патча.
Прикрепленные файлы
-------------------- |
||
|
|||
![]() ![]() |
Текстовая версия | Сейчас: 23.6.2025, 18:41 | |
|