Se ha publicado una herramienta no-code que permite ocultar código en scripts de Python. El script transformado aparece en los editores de código como una sola línea «# coding: no» sin ningún otro contenido, pero aún así se ejecuta y realiza las funciones anteriores. Esta herramienta ha sido creada bajo la influencia de la filosofía humorística No Code, según la cual la mejor manera de escribir aplicaciones seguras y confiables es no escribir código en absoluto. Se señala que esta filosofía es buena, pero a veces se requiere que un programa ejecute ciertas acciones. No-code resuelve este problema y permite distribuir programas 'sin código' que, sin embargo, realizan acciones.
El método de ocultamiento se basa en codificar el contenido utilizando dos caracteres Unicode que tienen longitud cero (espacios no visibles 0x200B y 0x200C). Un carácter invisible se identifica con «0», y el otro con «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!»)
La línea «# coding: no» en el script con código oculto indica que se está utilizando en el archivo una codificación llamada «no» — la palabra clave «coding:» se emplea en Python para especificar la codificación del código fuente. Para ejecutar el script transformado se requiere la instalación del paquete de Python «no_code», que incluye un archivo «no.pth» que se invoca al usar la codificación llamada «no» para la decodificación antes del procesamiento por el parser. Para ocultar no todo el archivo, sino porciones específicas de código, el proyecto proporciona las funciones no_code.nothing() y no_code.something().
Entre proyectos similares se puede mencionar el módulo Perl Acme::Bleach, que transforma el código en una representación de espacios y tabulaciones, así como la biblioteca de JavaScript INVISIBLE.js, que permite ocultar código a través de codificación en caracteres de longitud cero.
Fuente: opennet.ru
