[Cape d’invisibilité] Créer un code partiellement invisible !
Salut à tous,
J'avais par le passé, eu l'occasion d'écrire des articles sur certaines manières de masquer un code ...
Bien entendu, l'objectif de cacher du code est divisé en 2 parties ...
- Un hacker va vouloir y parvenir pour rendre son code invisible aux yeux de sa victime ...
- Un développeur, va l'utiliser pour cacher aux yeux du monde le code qu'il a honte de montrer, ou qu'il ne veut pas partager ... vilain !!!
Alors voilà, encore un article pour traiter de ce sujet, et peut-être illuminer votre journée !!!
Ce qui existe ...
Lorsqu'on parle de cacher du code, on parle d’offuscation ...
Quand une partie des Hackers utilisent des méthodes ancestrales ...
Quand une autre partie des "Hackers" utilise des outils "tout fait" (c'est le mal ...) ... pour obtenir un résultat presque similaire ...
Sans d.é.c.o.n.n.e.r
les gars ????
N'importe quel développeur qui va tomber sur ce genre de code va griller directement !!!
Un peu de renouveau
De mon côté, j'ai cherché d'autres pratiques, d'autres manières de faire ...
Pas spécialement dans le domaine de la sécurité ou de l'intrusion ... mais dans le domaine du développement, de l'art ...
Bref d'autres méthodologies utilisées par de talentueux développeurs ....
Et j'en ai trouvé !
Comme vous pouvez le constater, ce code source, qui ne semble rien faire de particulier, génère une totale animation ...
Car en réalité, il y a beaucoup plus de code que ce que nous ne voyons ...
Le développeur utilise un caractère ASCII "invisible" !
L'ASCII contient un caractère "magique"
Ce caractère c'est le "ZERO WIDTH NON-JOINER" !
Un caractère ayant la particularité d'être "invisible" ... car sa largeur "width" est de 0 ?(voyez vous le traducteur qui sommeil en moi ? non je plaisante ! Mais allez jeter un oeil ici vous comprendrez à quoi il sert vraiment :
https://en.wikipedia.org/wiki/Zero-width_non-joiner )
Aussi, je me suis dit qu'il était très simple de cacher un programme presque intégralement !
Le tout en utilisant uniquement 2 caractères !
Un espace " ", et ce caractère "ZERO WIDTH NON-JOINER" qui n'est pas visible ...
Tout cela, en s'appuyant un peu sur une technique de morse
toc toc ... toc toc toc ... toc ... toc toc toc toc ... toc ...
La méthodologie
Notre programme va donc être écrit avec 2 caractères ...
l'un va séparer chaque lettre de notre code ... et l'autre va représenter le code ASCII de celles-ci.
L'exemple :
Admettons que je souhaite écrire "HELLO"
Je vais donc tout d'abord prendre le code ASCII de la lettre "H" => 72
Je vais donc écrire 72 fois, notre caractère invisible, puis ajouter à la suite, un espace, pour signifier que je change de caractère ....
Par la suite, je ferais la même chose, avec le "E" => 69, j'écrirais 69 fois mon caractère invisible avant de mettre une nouvelle fois mon espace.
Et ainsi de suite pour "LLO" ...
Globalement j'obtiendrais un code aussi épais que ça " " (oui il n'y a rien car le code est transparent ;) )
Une partie visible ?
Notre code se cache dans une chaîne de caractères constitués d'espaces, et de caractères invisibles ...
Il faut donc une partie qui le décode et l’exécute ...
C'est donc le système inverse ...
Je prends ma chaîne de caractère, et je la sépare en plusieurs morceaux à l'aide des espaces ...
Pour chaque morceau, je compte le nombre de caractères (caractères invisibles), et je récupère la lettre correspondant à ce nombre en ASCII ... 72 lettres ? Hop je sais que c'est un H
La démonstration ?
À toute théorie, il faut apporter une preuve pour la rendre crédible ...
Voici donc une page que j'ai spécialement faite pour cette démonstration (à tester avec Google Chrome) :
https://dyrk.org/divers/
Dans l'image ci-dessous, vous verrez dans la partie "haute", le code source, dans la partie basse, ce qui se passe sur votre écran ... (je vous laisse méditer =) )
Conclusion
Un peu de neuf les amis, il faut des idées nouvelles ...
Et surtout, je vous invite à éplucher les tables ASCII ... elles contiennent de nombreux caractères "magiques" ...
Bonne journée à vous tous ....