Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Фиалка М-125

Эмулятор советской шифровальной машины «Фиалка» М-125 — рабочая реализация на Free Pascal и эталонная модель на Python, сверяемые друг с другом знак в знак.

Механизм восстановлен из deco/M125v5_16eng.exe (оконный симулятор, Delphi, 2014), сверен с Fialka_200.pdf (Reuvers & Simons, «Fialka M-125», v2.0) и перепроверен по Fialka.dll — плагину CrypTool 2, собранному независимо от обоих, — и по документам ННА ГДР на scz.bplaced.net/m125.html. Других источников в документации нет: всё, что здесь написано, прослеживается до одного из этих четырёх.

Ни одного из трёх в репозитории нет — это чужие файлы, и распространять их здесь мы не берёмся. Пути deco/M125v5_16eng.exe, Fialka_200.pdf и Fialka.dll в тексте и в скриптах означают «положите свою копию сюда»; на работу эмулятора и на проверки они не влияют — нужны только для повторного извлечения таблиц (reference/extract_tables.py) и для сверки с оригиналом.

Быстрый старт

cd pascal && fpc -O2 fialka.pas

./fialka --genkey --set 6K -o key.txt              # ключ дня
./fialka --genpos                                  # ключ сообщения
./fialka -e -k key.txt --pos "Б Щ Щ Е Н   Д Ы Ч Ч Ы" msg.txt

./fialka -e -k key.txt --mode M msg.txt            # цифры и знаки в тексте
./fialka -e -k key.txt --mode N цифры.txt          # только цифры

./fialka --selftest

Документация

документ о чём
docs/mechanism.md как устроена машина: диски, шаговый механизм, рефлектор, пробел и Й
docs/formats.md форматы ключа, комплекта дисков, машины, таблицы подготовки
docs/usage.md ключи командной строки, чужие знаки, трасса, проверки

Что где

путь что это
pascal/fialka.pas рабочая реализация, один файл
reference/ эталонная модель на Python: оракул, сверялка, извлечение таблиц
data/ машина, печатающие головки, комплекты дисков, таблица подготовки текста
keys/ ключи дня
demo/ пара текстов и vectors.txt — векторы с оригинала, см. demo/note.txt
deco/ настройки симулятора M125.INI и скриншот с ключом; сам симулятор сюда положите свой
Fialka_200.pdf описание машины
materials/ побочные материалы, в документации не используются

Обе реализации читают одни и те же файлы из data/ и keys/. Это не удобство, а часть проверки: разойтись в разборе они могут независимо от механизма, и reference/crosscheck.py ловит именно это.

Состояние

Механизм закрыт: обе реализации проходят самопроверки и сходятся на сотнях случайных ключей по трём комплектам, трём режимам текста и обоим направлениям.

Работают все три положения рычага Б/С/Ц: буквы, смешанный (цифры и знаки препинания через регистры ЦФ и БК) и цифры. Каждое подтверждено парой, снятой с оригинальной программы, — demo/vectors.txt.

Печатающая головка вынесена в отдельный файл data/head-*.ini и меняется, не трогая шифр: диски и рефлектор работают с номерами контактов и знаков не знают. Рядом с кириллической лежат три латинские — польская, чехословацкая и ГДР; в режиме цифр они не работают, и почему — написано в docs/mechanism.md.

Механизм сверен и с третьим источником — плагином CrypTool 2 (Fialka.dll). Совпало всё, кроме одного: на комплектах 3K и 6K наша «нормальная» сторона сердечника у него считается перевёрнутой. На 5K обе модели дают одинаковый шифртекст знак в знак. Разбор — в docs/mechanism.md.

About

A software emulator of the Soviet cipher machine "Fialka"

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages