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 « J'aime »

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 « J'aime »

Qui était Kelvin R. Throop ?

Introduction :
Le présentateur souhaite la bienvenue aux spectateurs dans le deuxième épisode de Through-the-Lens, inspiré par une question posée sur le blog de Sean Hurley, Between the Lines : « Qui est Kelvin R. Throop ? » L’épisode explore ce nom mystérieux lié à l’histoire d’AutoCAD® et présente un programme appelé « The Kelvinator ».

The Kelvinator :
Le Kelvinator était un utilitaire en ligne de commande sous DOS utilisé pour chiffrer et protéger les routines Lisp. Il supprimait les espaces superflus, modifiait les variables de façon aléatoire et rendait le code plus difficile à copier ou à modifier. Le présentateur montre comment le Kelvinator transforme une routine Lisp simple appelée Bread Delos—un outil permettant de créer des rectangles en fonction de la surface saisie par l’utilisateur.

Démonstration :
Le code original de Bread Delos est montré avant d’être « Kelviné ». Après avoir utilisé le Kelvinator, on compare la sortie obfusquée avec le code original, en montrant comment les variables et la mise en forme ont été modifiées. Le présentateur exécute ensuite le code original et le code Kelviné dans AutoCAD®, prouvant que les deux fonctionnent de manière identique.

Conclusion :
Même si le Kelvinator n’offre pas de gains de performance sur les machines modernes, il reste un élément fascinant de l’histoire d’AutoCAD®. En guise de révélation finale, les spectateurs apprennent que « Kelvin R. Throop » était en réalité un pseudonyme utilisé par John Walker, l’auteur original d’AutoCAD®.