Das no-code-Tool wurde veröffentlicht, um Code in Python-Skripten zu verbergen. Das umgewandelte Skript erscheint in Code-Editoren als eine einzige Zeile „# coding: no“ ohne weiteren Inhalt, läuft jedoch weiterhin und erfüllt die bisherigen Funktionen. Das Tool wurde inspiriert von der humorvollen Philosophie No Code, nach der der beste Weg, sichere und zuverlässige Anwendungen zu schreiben, darin besteht, ganz auf Code zu verzichten. Es wird festgestellt, dass diese Philosophie zwar gut ist, aber manchmal benötigt man, dass das Programm bestimmte Aktionen ausführt. No-code löst dieses Problem und ermöglicht die Verbreitung von „codefreien“ Programmen, die jedoch Aktionen ausführen.
Die Versteckmethode basiert auf der Kodierung von Inhalten mit zwei Unicode-Zeichen, die eine Nulllänge haben (Whitespace-Zeichen 0x200B und 0x200C, die keine Einrückungen verursachen). Ein unsichtbares Zeichen wird mit „0“ und das andere mit „1“ identifiziert. $ 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!“)
Die Zeile „# coding: no“ im Skript mit verborgenem Code weist auf die Verwendung einer Kodierung mit dem Namen „no“ hin - das Schlüsselwort „coding:“ wird in Python verwendet, um die Kodierung des Quellcodes festzulegen. Um das umgewandelte Skript auszuführen, ist die Installation des Python-Pakets „no_code“ erforderlich, das die Datei „no.pth“ beinhaltet, die beim Verwenden der Kodierung mit dem Namen „no“ zur Dekodierung vor der Verarbeitung durch den Parser aufgerufen wird. Um nicht die gesamte Datei, sondern bestimmte Abschnitte mit Code zu verbergen, stellt das Projekt die Funktionen no_code.nothing() und no_code.something() bereit.
Ähnliche Projekte sind unter anderem das Perl-Modul Acme::Bleach, das Code in eine Darstellung aus Leerzeichen und Tabulatoren umwandelt, sowie die JavaScript-Bibliothek INVISIBLE.js, die das Verstecken von Code durch Kodierung in Zeichen mit Nulllänge ermöglicht.
Quelle: opennet.ru
