«Тихушники» (Sneakers) — один из знаменитых американских детективов 90-х годов, посвященный нелегкой доле первых хакеров. В одном из эпизодов появляется так полюбившаяся многим зрителям картинка дешифровки данных на экране компьютера. Одному из пользователей GitHub пришла идея воссоздать ее у себя в консоли.
«Больше никаких секретов»
Проект представляет из себя инструмент командной строки с названием nms
(no more secrets — название того самого эпизода). Эта команда работает через конвейеры: сначала по-голливудски преображает любой текст кодировки ASCII или UTF-8 в зашифрованный набор символов, а затем эффектно расшифровывает все обратно.
В проект так же включена команда sneakers
, полностью воспроизводящая текст, высвечивавшийся на экране монитора в фильме. Примечательно, что перед завершением программа требует от пользователя выбрать один из пунктов меню.
Изначально в проекте не предусматривалось никаких зависимостей, однако для воссоздания эффекта все же пришлось использовать escape-последовательности терминала ANSI/VT100. Большинство современных терминалов поддерживают эти последовательности, так что у пользователей не должно возникнуть особых проблем с запуском новой программы. Но на всякий случай в проект встроена библиотека NCurses (правда, с потерей встроенного функционала, ведь ncurses всегда очищает экран прежде, чем отобразить вывод).
Установка
Установить nms можно через большинство пакетных менеджеров. Чтобы собрать проект из исходников, введите в терминале следующее:
$ git clone https://github.com/bartobri/no-more-secrets.git
$ cd ./no-more-secrets
$ make nms
$ make sneakers ## Опционально
$ sudo make install
Если ваш терминал не поддерживает escape-последовательности ANSI/VT100, вам потребуется библиотека ncurses. Установив её, соберите проект:
$ git clone https://github.com/bartobri/no-more-secrets.git
$ cd ./no-more-secrets
$ make nms-ncurses
$ make sneakers-ncurses ##Опционально
$ sudo make install
Использование
nms работает с любыми данными, переданными через конвейер. В примере ниже используется простой вывод содержимого директории:
$ ls -l | nms
$ ls -l | nms -a // Установка флага авто-дешифровки
$ ls -l | nms -s // Установка флага скрытия пробелов
$ ls -l | nms -f green // Выбор цвета текста
$ ls -l | nms -c // Очистка экрана
$ nms -v // Версия проекта
По умолчанию nms не начнёт расшифровывать данные, пока вы не нажмёте любую клавишу (именно так это было показано в фильме).
Для желающих использовать подобные эффекты в своих приложениях автор проекта выложил C-библиотеку LibNMS.