Иногда, во время раскопок на Лаваленде или путешествиях по космосу, можно наткнуться на закрытые ящики. Обычно эти ящики заперты старым, но надёжным механизмом защиты от несанкционированного доступа и замком с дека-кодом, механическим замком, требующим ввода 4-х значного кода для разблокировки ящика. Замки с дека-кодом вышли из моды, уступив более современным установках, из-за механических осложнений кода, которые как ограничивают возможные комбинации числами, в которых все четыре цифры уникальны, так и из-за уязвимостей, при которых можно использовать мультитул, чтобы определить, насколько близок ранее введенный код к правильному ответу, что позволяет среднему специалисту по взлому кодов обойти блокировку.
Взлом кода
Замок с дека-кодом - это, по сути, головоломка «Властелин Разума» с 10 различными цветами колышков. На самом деле, это намного проще, из-за ограничения, что один и тот же колышек нельзя использоваться в коде более одного раза.
Если у вас нет мультитула, сходите и раздобудьте его, прежде чем начать. Угадать правильный код, ткнув пальцем в небо, имеет настолько низкий шанс, что лучше оставить эту затею.
Во-первых, введите любые понравившиеся четыре цифры, которые отличаются друг от друга. "1234" – хорошее начало. Затем используйте мультитул на ящике - он даст вам краткое объяснение того, сколько цифр в вашей догадке содержится в правильном коде (и сколько из них было в правильном положении).
Попробуйте угадать еще раз, выбрав "5678" и получив еще несколько заметок. Вы имеете 10 попыток угадать, поэтому ваши первые пару догадок должны быть просто направлены на то, чтобы исключить возможные комбинации, которых не может быть. Например, если вы найдете все четыре цифры в 1234 и 5678, то вы знаете, что окончательный код не содержит 9 или 0.
После этого попробуйте сдвинуть числа - 3456, например. Если вы получаете число, отображаемое в правильном положении, то это должно быть одно из чисел, которое было в неправильном положении в ваших предыдущих предположениях, но вашим приоритетом должно быть сначала найти все четыре правильных числа, а затем беспокоиться о порядке.
Как только вы выйдите на конкретные числа, которые определенно присутствуют, остаётся изменить оставшиеся цифры. Обычно вы получаете группы или пары, в которых вы знаете, что присутствует одно из правильных чисел. Попробуйте поменять одно из чисел на число из другой группы - если это ничего не меняет, то вы знаете, что они оба правильные или неправильные.
Немного попрактиковавшись, этот процесс станет относительно простым - вы, вероятно, сможете взломать их за меньшее время, чем потребуется, чтоб убедить службу безопасности позволить вам "одолжить" оружие.
Примеры
Это легче показать, чем рассказать, мы пройдемся по некоторым шагам, с объяснением на каждом этапе.
Пример 1
- 1234 – «0 correct digits (верные числа) at correct positions (верная позиция) and 0 correct digits (верные числа) at incorrect positions (неверная позиция)» Это невероятная удача. 4 цифры сразу вычёркиваем.
- 5678 – «1 correct digits at correct positions and 2 correct digits at incorrect positions» Теперь что-то проясняется. Мы так же знаем, что последняя неизвестная цифра это 9 или 0.
- 7890 – «2 correct digits at correct positions and 1 correct digits at incorrect positions» В этой группе тоже 3 цифры. Это значит, что неверная цифра из 5678 должна быть 5 или 6, а также мы знаем, что одна из неверных цифр в этой группе 9 или 0. 7 и 8 точно верные.
- 7895 – «1 correct digits at correct positions and 1 correct digits at incorrect positions» Мы выбрали цифры, которые точно верные, 7 и 8, а затем поменяли одну из цифр, в которой мы не уверены, на другую цифру, в которой мы не уверенны. Мы только поменяли последнюю цифру, 0 на 5, и это значит, что у нас на один правильный ответ меньше. Теперь это говорит нам только о том, что 5 и 9 нет в коде, это значит, что верной цифрой является 0, и она в нужной позиции.
- 7860 – «2 correct digits at correct positions and 2 correct digits at incorrect positions» Мы уже знаем, что 7 или 8 в нужной позиции, значит, 6 не в нужной. Давайте поменяем их местами.
- 6870 – «Ящик открыт!»
Пример 2
- 1234 – «0 correct digits at correct positions and 1 correct digits at incorrect positions» Достаточно неплохое начало.
- 5678 – «0 correct digits at correct positions and 1 correct digits at incorrect positions» Интересно. Значит 9 и 0 верные. Давайте же попробует сузить поиски последних двух.
- 3456 – «1 correct digits at correct positions and 0 correct digits at incorrect positions» Пока не говорит нам ничего, кроме что, одна из этих цифр в нужной позиции. Давайте подставим сюда 9 и 0.
- 7890 – «0 correct digits at correct positions and 3 correct digits at incorrect positions» Бинго. Т.к. в последних двух догадках мы узнали все верные числа, это значит, что там не может быть 1 или 2. Это значит, что 3 или 4 верна (из первой попытки), и это значит, что мы можем избавиться от 5 и 6 из третьей попытки. Получается, код имеет 3 или 4, 7или 8, 9, и 0.
- 3890 – «1 correct digits at correct positions and 2 correct digits at incorrect positions» Замена 7 на 3 ставит верную цифру в верную позицию – мы не меняли позиций, что означает, что первая цифра 3. Мы также узнали, что 8 неверна. Значит, финальный код состоит из 3,7,9,0, но в другом порядке.
- 3907 – «Ящик открыт!»
Пример 3
Пройти, словно заспидранить, наверно, не самый быстрый путь. Все курсивные заметки были добавлены после того, как я нашел ответ.
- 1234 – «1 correct digits at correct positions and 1 correct digits at incorrect positions»
- 5678 – «0 correct digits at correct positions and 0 correct digits at incorrect positions» Супер, последние пропущенные цифры – 9 и 0.
- 1290 – «1 correct digits at correct positions and 2 correct digits at incorrect positions» Значит, это 1 или 2, 3 или 4, 9 и 0.
- 1390 – «1 correct digits at correct positions and 3 correct digits at incorrect positions» Все четыре цифры найдены, теперь меняем порядок.
- 1903 – «0 correct digits at correct positions and 4 correct digits at incorrect positions» Значит, первая позиция не 1. Дальше.
- 9301 – «1 correct digits at correct positions and 3 correct digits at incorrect positions» Давайте же посмотрим, это ли 3. В ретроспективе, это был плохой шаг, т.к. в 1290 появилась верная цифра на верной позиции, так что я уже должен был знать, что 3 не была второй позицией. Это хоть что-то доказывает, что хоть что-то в этом предположении верно.
- 0319 – «0 correct digits at correct positions and 4 correct digits at incorrect positions» И вновь убедились, что 3 в неверной позиции.
- 3091 – «0 correct digits at correct positions and 4 correct digits at incorrect positions» 9 - это не та цифра, которая верна, поэтому последняя цифра должна быть 0. Давайте поместим другие цифры на свои места - мы знаем, какие числа не находятся в каждой позиции, исходя из наших предыдущих предположений.
- 9130 – «Ящик открыт!»
Пример 4
Ещё спидран.
- 1234 – «0 correct digits at correct positions and 1 correct digits at incorrect positions»
- 5678 – «1 correct digits at correct positions and 2 correct digits at incorrect positions» Вычёркиваем 9 и 0.
- 3456 – «2 correct digits at correct positions and 1 correct digits at incorrect positions» 5 и 6, скорее всего, верны. Проверим же.
- 1256 – «1 correct digits at correct positions and 1 correct digits at incorrect positions» Проверено. Также вычёркиваем 1 и 2, и теперь мы знаем, что 3 ИЛИ 4, и 7 ИЛИ 8 есть.
- 3756 – «1 correct digits at correct positions and 1 correct digits at incorrect positions» Вычёркиваем 3 и 7, ведь поменяв их местами мы получили тот же результат.
- 8456 – «2 correct digits at correct positions and 2 correct digits at incorrect positions» Все 4 цифры известны, найдём порядок – оставим 4 в той же позиции и посмотрим, что поменяется.
- 5468 – «2 correct digits at correct positions and 2 correct digits at incorrect positions» Что-то встало на верную позицию, и что-то, что было на неверной позиции, стало на верную.
- 5486 – «1 correct digits at correct positions and 3 correct digits at incorrect positions» Меняем местами 2 последние цифры для чуточки информации, затем подставляем куда остаётся.
- 6458 – «Ящик открыт!»
Пример 5
Наверно, повезло? Это заняло у меня менее трёх минут с начала. Отчасти благодаря удачным догадкам, но это потребовалось бы много времени.
- 1234 – «0 correct digits at correct positions and 2 correct digits at incorrect positions»
- 5678 – «1 correct digits at correct positions and1 correct digits at incorrect positions» Не 9 и не 0.
- 3456 – «0 correct digits at correct positions and 2 correct digits at incorrect positions»
- 1256 – «0 correct digits at correct positions and 0 correct digits at incorrect positions» Код 3, 4, 7 и 8. 7 или 8 в верной позиции. Одни оставляем, другие меняем.
- 4873 – «Ящик открыт!» Повезло? Может, но у нас ещё осталось 5 попыток попробовать другие комбинации.