Utiliser JSL pour chiffrer les 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 l'ensemble du fichier et l'enregistre à un certain emplacement (pour une liste de fichiers de script). Ensuite, je peux utiliser le brillant constructeur de compléments en @Justin_Chilton pour créer les compléments. Je ne trouve pas de fonction JSL pour chiffrer un script, existe-t-elle ou peut-on le faire avec un autre utilitaire ?
Automatisation et scriptFusion et nettoyage des donnéesRe : Utiliser JSL pour chiffrer des scripts pour le développement de complémentsMerci. Cette variable était restée d'une première version, avant que je réalise qu'elle voulait être une solution JSON.
Ceci est similaire à ce que fait JMP avec un fichier PER (et non 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.
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é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" )
);
intégrez la clé secrète dans le script chiffré afin de pouvoir la vérifier.
le fichier ressemble
{"checkcode":"B7611676E821AA1ECC4CB5D6F02C6BA9","expiredate":"1jan2022"}
Re : Utiliser JSL pour chiffrer 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 (protéger l'IP). Donc, chaque fois que je construis 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, un tableau de données n'est pas une option.
Re : Utiliser JSL pour chiffrer des scripts pour le développement de complémentsUtilisez peut-être un fichier jsl/jmp/plaintext avec uniquement les valeurs, et include() ou open() ou loadtextfile() à partir du script chiffré.
Une petite table de données peut être un bon choix pour un ensemble de paramètres nommés. Ou un extrait de JSL qui est 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 chiffrer des scripts pour le développement de complémentsLa commande Encrypt Script peut être transmise via JSL à l'aide de la fonction Main Menu().
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 que la fenêtre de dialogue demandant les mots de passe apparaît, et je ne pense pas que ce soit ce que vous voulez