Un outil no-code a été publié, permettant de cacher le code dans des scripts en Python. Le script transformé apparaît dans les éditeurs de code comme une seule ligne « # coding: no » sans aucun autre contenu, tout en continuant à s'exécuter et à remplir ses anciennes fonctions. Cet outil a été inspiré par la philosophie humoristique du No Code, selon laquelle la meilleure façon d'écrire des applications sécurisées et fiables est l'absence totale de code. Il est noté que cette philosophie est bonne, mais qu'il est parfois nécessaire que le programme effectue certaines actions. Le no-code résout ce problème et permet de diffuser des programmes « sans code » mais exécutant des actions.
La méthode de dissimulation repose sur le codage du contenu à l'aide de deux symboles Unicode ayant une longueur nulle (les espaces 0x200B et 0x200C qui ne créent pas de retrait). Un symbole invisible est identifié avec « 0 », et l'autre avec « 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 ligne « # coding: no » dans le script avec le code caché indique l'utilisation dans le fichier d'un encodage nommé « no » — le mot-clé « coding: » est utilisé en Python pour spécifier l'encodage du code source. Pour exécuter le script transformé, l'installation du package Python « no_code » est requise, lequel inclut un fichier « no.pth » qui est appelé lors de l'utilisation de l'encodage avec le nom « no » pour décoder avant le traitement par le parseur. Pour cacher non pas tout le fichier, mais des portions spécifiques de code, le projet propose les fonctions no_code.nothing() et no_code.something().
Parmi des projets similaires, on peut noter le module Perl Acme::Bleach, qui transforme le code en une représentation faite d'espaces et de tabulations, ainsi que la bibliothèque JavaScript INVISIBLE.js, qui permet de cacher le code par un encodage en symboles de longueur nulle.
Source : opennet.ru
