Le Kelvinator transforme le code AutoLisp en une forme difficile à comprendre

Après la sortie de la version 2.1 d’AutoCAD®, des développeurs indépendants ont utilisé le langage de macro du menu et AutoLisp pour créer des applications complexes. Avec la version 2.18, AutoCAD® est devenu entièrement programmable. Pour protéger les développeurs contre le vol de leurs applications, Autodesk® a mis en place un cryptage pour les macros de menu et les programmes AutoLisp. Bien que ce cryptage ne soit pas totalement sécurisé, il dissuade l’examen du code. Un deuxième niveau de protection, le Kelvinator, transforme le code AutoLisp en une forme difficile à comprendre, rendant le code source inutile pour les voleurs même s’ils décryptent le programme distribué.

Exemple de programme AutoLISP « kelviné »:

(DEFUN Qj(Q@ QQ Ql Q& / Q1 Q# Q0 Q$ QO
Q| Q% Q?j)(SETQ
Q?j(GETVAR"cmdecho"))(SETQ
Q%(GETVAR"blipmode"))
(SETVAR"blipmode"0)(SETVAR"cmdecho"0)(SETQ
Q|(* 3.141596235 2))(SETQ Q$(/ Q|
Q&))(SETQ QO(/ Ql Q&))(SETQ Q1 0.0)(SETQ
Q# 0.0)(COMMAND"pline"QQ)(REPEAT
Q@(REPEAT Q&(SETQ Q0(POLAR QQ(SETQ Q1(+
Q1 Q$))(SETQ Q#(+ Q# QO))))(COMMAND
Q0)))(COMMAND)(SETVAR"blipmode"Q%)
(SETVAR"cmdecho"Q?j)NIL)(DEFUN
C:SPIRAL(/ Qjj Q@j QQj
Qlj)(PROMPT"\nCentre point: ")(SETQ
Q@j(GETPOINT))(PROMPT
"\nNumber of rotations: " )(SETQ
Qjj(GETINT))(PROMPT"\nGrowth per
rotation: ")(SETQ QQj(GETDIST
Q@j))(PROMPT"\nPoints per rotation: ")
(SETQ Qlj(GETINT))(COND((NULL
Qlj)(SETQ Qlj 30)))(Qj Qjj Q@j QQj Qlj))

KELV.ZIP (29,7 Ko)

Salutation à la communauté.
Ne serait-ce pas de l’« Obfuscation » ? Et non du « Cryptage » ?
Le premier est pour l’humain, le deuxième… le reste :wink:
Cordialement.
Denis H.

1 Like

Possible oui, c’est traduit de l’anglais.

Bonjour,

Je confirme que c’est de l’obfuscation, DenisH a raison. C’était le seul moyen de l’époque. Par contre, depuis AutoCAD® R14 (1998) et les outils Vital Lisp, développés par des tiers, lesquels furent intégrés à AutoCAD® 2000 et maintenant connus sous le nom Visual Lisp, il est possible de compiler réellement.

Les extensions de fichier reconnaissables sont *.FAS et *.VLX.

Le premier est un format plus compact (d’où FAS pour FASt) et il s’adresse à la compilation d’un seul fichier à extension *.lsp.

Le deuxième est un format plus complexe car on l’utilise pour compiler plus d’un fichier. L’utilité de ce dernier est qu’on peut créer un projets de plusieurs fichiers *.lsp et, surtout, intégrer des fichiers *.dcl, pour ceux qui ont encore la patience de créer des boites de dialogue dans ce langage. À noter qu’on peut aussi amalgamer n’importe quel autre type de fichier dans un VLX, y compris des fichiers binaires tels que des images. Ceci est potentiellement une faille de sécurité.

Coté sécurité, outre les fichiers vlx (je ne crois pas que quelqu’un serait à ce point malicieux), il y a aussi la menace des fichiers DLL (DotNet) et *arx/*.dbx/*.crx (ObjectARX). C’est pourquoi on retrouve maintenant les 2 variables SECURELOAD et TRUSTEDPATHS.

Pour en revenir à l’obfuscation, si vous publiez vos outils issus de DotNet et que désirez rendre la tache plus difficile à ceux qui voudrait s’approprier votre propriété intellectuelle, sachez qu’il existe un pléthore d’outils. Voir NET-Obfuscator sur le site de GITHUB.

Dernier point, la stéganographie est l’art de masquer des messages au vu et au su de tous. Cela représente un fléau à venir avec ChatGPT 5. On pourra dissimuler facilement du code malveillant dans des photos que la reconnaissance d’image interprétera comme une commande.

1 Like