Utilisez JSL pour crypter des scripts pour le développement de complémentsJe maintiens quelques compléments et pour certains d'entre eux, je voudrais mettre à jour quelques variables dans les scripts contenus au moment de la construction. Je voudrais donc écrire un script qui ouvre un fichier de script, effectue des concaténations ou des substitutions, puis crypte le fichier entier et l'enregistre à un certain emplacement (pour une liste de fichiers de script). Ensuite, je peux utiliser le génial générateur de compléments en @Justin_Chilton pour créer les compléments. Je ne trouve pas de fonction JSL pour crypter un script, existe-t-il ou peut-il être fait avec un autre utilitaire?
ScriptingRe: Utiliser JSL pour crypter des scripts pour le développement de complémentsLa commande Encrypt Script peut être transmise via JSL à l'aide de la fonction Menu principal ().
Main Menu( "encrypt script","Script 10" );
où "Script 10" est le nom de la fenêtre de script à chiffrer.
Cependant, ce qui se passe ensuite, c'est la fenêtre de dialogue demandant les mots de passe, et je ne pense pas que ce soit ce que vous voulez
Re: Utiliser JSL pour crypter des scripts pour le développement de complémentsPeut-être utiliser un fichier jsl / jmp / en clair avec uniquement les valeurs, et include () ou open () ou loadtextfile () à partir du script chiffré.
Une petite table de données pourrait être un bon choix pour un ensemble de paramètres nommés. Ou un extrait de JSL inclus pour définir certaines variables. Un fichier nommé X.jsl avec juste le texte 42 peut être chargé comme parm = include ("x.jsl"); et vous pourriez faire des ensembles plus compliqués avec une liste si X contient {42, "Fred"}, quelque chose comme {parm, name} = include ("x.jsl");
Re: Utiliser JSL pour crypter des scripts pour le développement de complémentsMerci pour les suggestions!
L'idée est de créer un complément autodestructeur qui fonctionne pendant un certain temps et après une certaine date cesse de fonctionner (protection IP). Ainsi, chaque fois que je crée le complément, je veux une nouvelle date d'expiration codée en dur dans le script afin que cela ne puisse pas être vaincu en modifiant un champ de date quelque part. Si je mets la date d'expiration dans un fichier de script externe, je dois le crypter manuellement à chaque fois. Pour la même raison, une table de données n'est pas une option.
Re: Utiliser JSL pour crypter des scripts pour le développement de complémentsquelque chose comme ça?
mySecretKey = "The quick brown fox";
aa = [=> ];
aa["expiredate"] = "1jan2022";
aa["checkcode"] = Hex( Blob MD5( Char To Blob( mySecretKey || expiredate ) ) );
Save Text File( "$temp/license.txt", As JSON Expr( aa ) );
///////////////////
bb = Parse JSON( Load Text File( "$temp/license.txt" ) );
If( Hex( Blob MD5( Char To Blob( mySecretKey || bb["expiredate"] ) ) ) == bb["checkcode"],
Print( "ok: " || bb["expiredate"] ),
Print( "bad" )
);
incorporez la clé secrète dans le script chiffré afin de pouvoir la vérifier.
le fichier ressemble à
{"checkcode": "B7611676E821AA1ECC4CB5D6F02C6BA9", "expiré": "1jan2022"}
Re : Utiliser JSL pour chiffrer des scripts pour le développement de complémentsMerci @Craige_Hales c'est une solution intéressante intégrant la date d'expiration et une somme de contrôle.
Petit correctif pour une erreur de codage à la ligne 5 :
mySecretKey = "The quick brown fox";
aa = [=> ];
aa["expiredate"] = "1jan2022";
aa["checkcode"] = Hex( Blob MD5( Char To Blob( mySecretKey || aa["expiredate"] ) ) );
Save Text File( "$temp/license.txt", As JSON Expr( aa ) );
///////////////////
bb = Parse JSON( Load Text File( "$temp/license.txt" ) );
If( Hex( Blob MD5( Char To Blob( mySecretKey || bb["expiredate"] ) ) ) == bb["checkcode"],
Print( "ok: " || bb["expiredate"] ),
Print( "bad" )
);
Re : Utiliser JSL pour chiffrer des scripts pour le développement de complémentsMerci. Cette variable a été laissée par une première version, avant que je réalise qu'elle voulait être une solution JSON.
C'est similaire à ce que JMP fait avec un fichier PER (pas JSON) ; vous pouvez également verrouiller d'autres variables, comme un nom d'utilisateur ou de site, en les ajoutant à la concaténation.
Vous devez utiliser ShowGlobals() après avoir exécuté votre application pour vous assurer que votre secret n'est pas trop facile à découvrir.