Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Воган Ли - Python для хакеров (Библиотека программиста) - 2023.pdf
Скачиваний:
6
Добавлен:
07.04.2024
Размер:
14.76 Mб
Скачать

130      Глава4. Отправкасуперсекретныхсообщенийспомощьюкнижногошифра

Здесь определяется функция check_for_fail(), получающая в качестве аргумента криптограмму, которую проверяет на наличие повторов индексов. Напомню, что вариант с одноразовым блокнотом работает благодаря тому, что каждый ключ уникален. Таким образом, каждый индекс в криптограмме должен быть уникален.

Для поиска повторов снова используем Counter. Программа задействует списковое включение для построения списка, содержащего все повторяющиеся индексы. Здесь k означает ключ (словаря), а v — значение (словаря). Поскольку Counter создает словарь количеств вхождений каждого ключа, то здесь мы указываем: для каждой пары «ключ — значение» в словаре, полученном из криптограммы, создать список всех ключей, встречающихся более одного раза. При наличии повторов добавить соответствующий ключ в список check.

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

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

Отправка сообщений

Приведенное ниже сообщение основано на отрывке из книги «Ключ к Ребекке». Вы найдете его в доступном для скачивания каталоге Chapter_4 под именем allied_attack_plan.txt.

В качестве теста попробуйте отправить его со смещением 70. При получении от программы запроса на ввод текста используйте команды операционной системы «Выбрать все», «Скопировать» и «Вставить» для переноса текста. Если сообщение не пройдет проверку check_for_fail(), выполните ее еще раз.

Allies plan major attack for Five June. Begins at oh five twenty with bombardment from Aslagh Ridge toward Rommel east flank. Followed by tenth Indian Brigade infantry with tanks of twenty second Armored Brigade on Sidi Muftah. At same time, thirty second Army Tank Brigade and infantry to charge north flank at Sidra Ridge. Three hundred thirty tanks deployed to south and seventy to north.

Эта технология хороша тем, что можно использовать правильную пунктуацию, по крайней мере при вводе сообщения в окне интерпретатора. Текст, скопированный извне, может потребовать очистки от символов перевода строки (таких, как \r, \n или \n), вставленных везде, где использовался возврат каретки.

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