no-code — пакет для скрытия кода на языке Python

Опубликован инструментарий no-code, позволяющий скрывать код в скриптах на языке Python. Преобразованный скрипт выглядит в редакторах кода как одна строка «# coding: no» без какого-либо иного содержимого, но при этом продолжает запускаться и выполнять прежние функции. Инструментарий создан под впечатлением от шуточной философии No Code, в соответствии с которой лучшим способом написания безопасных и надёжных приложений является полное отсутствие кода. Отмечается, что данная философия хороша, но иногда требуется, чтобы программа выполняла какие-то действия. No-code решает эту проблему и позволяет распространять программы «без кода», но выполняющие действия.

Метод скрытия основан на кодировании содержимого при помощи двух Unicode-символов, имеющих нулевую длину (не приводящие к отступу пробелы 0x200B и 0x200C). Один невидимый символ отождествляется с «0», а второй с «1». $ cat some_code.py print(«Hello, world!») $ no_code some_code.py > no_code.py $ cat no_code.py # coding: no ​‌‌‌​​​​​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌​​​​​‌​​​‌​​‌​​‌​​​​‌‌​​‌​‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​‌‌‌‌​​‌​‌‌​​​​‌​​​​​​‌‌‌​‌‌‌​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​‌‌​​​‌‌​​‌​​​​‌​​​​‌​​‌​​​​​‌‌‌‌​​​​‌​​‌‌‌‌‌‌​​‌‌​​​‌​​​​​​‌​​‌​​​‌​​​‌​‌​​‌​​​​‌​‌​ $ python no_code.py Hello, world! $ yes_code no_code.py > some_code.py $ cat some_code.py print(«Hello, world!»)

Строка «# coding: no» в скрипте со скрытым кодом указывает на использование в файле кодировки с именем «no» — ключевое слово «coding:» применяется в Python для задания кодировки исходного кода. Для запуска преобразованного скрипта требуется установка Python-пакета «no_code», который включает файл «no.pth», вызываемый при использовании кодировки c именем «no» для декодирования перед обработкой парсером. Для скрытия не всего файла, а отдельных порций с кодом, проектом предоставляются функции no_code.nothing() и no_code.something().

Из похожих проектов можно отметить Perl-модуль Acme::Bleach, преобразующий код в представление из пробелов и табуляций, а также JavaScript-библиотеку INVISIBLE.js, позволяющую скрывать код через кодирование в символы с нулевой длиной.

Источник: opennet.ru

Добавить комментарий