Utilice JSL para cifrar scripts para el desarrollo de complementosMantengo un par de complementos y, para algunos de ellos, me gustaría actualizar un par de variables en los scripts contenidos en el momento de la compilación. Entonces, me gustaría escribir un script que abra un archivo de script, haga algunas concatenaciones o sustituciones y luego encripte todo el archivo y lo guarde en una ubicación determinada (para obtener una lista de archivos de script). Entonces puedo usar el brillante creador de complementos al @Justin_Chilton para construir los complementos. No puedo encontrar una función JSL para cifrar un script, ¿existe o se puede hacer con otra utilidad?
ScriptingRe: usar JSL para cifrar scripts para el desarrollo de complementosEl comando Encriptar secuencia de comandos se puede pasar a través de JSL utilizando la función Menú principal ().
Main Menu( "encrypt script","Script 10" );
donde "Script 10" es el nombre de la ventana del script que se va a cifrar.
Sin embargo, lo que sucede a continuación es que aparece la ventana de diálogo que solicita las contraseñas, y no creo que eso sea lo que quieres.
Re: usar JSL para cifrar scripts para el desarrollo de complementosTal vez use un archivo jsl / jmp / de texto sin formato con solo los valores, e incluya () o open () o loadtextfile () del script encriptado.
Una tabla de datos pequeña podría ser una buena opción para un conjunto de parámetros con nombre. O un fragmento de JSL que se incluye para establecer algunas variables. Un archivo llamado X.jsl con solo el texto 42 se puede cargar como parm = include ("x.jsl"); y podría hacer conjuntos más complicados con una lista si X contiene {42, "Fred"}, algo como {parm, name} = include ("x.jsl");
Re: usar JSL para cifrar scripts para el desarrollo de complementos¡Gracias por las sugerencias!
La idea es crear un complemento autodestructivo que funcione por un tiempo y después de una fecha deje de funcionar (proteger IP). Entonces, cada vez que construyo el complemento, quiero una nueva fecha de caducidad codificada en el script para que esto no se pueda eliminar editando un campo de fecha en algún lugar. Si pongo la fecha de caducidad en un archivo de script externo, tengo que cifrarlo manualmente cada vez. Por la misma razón, una tabla de datos no es una opción.
Re: usar JSL para cifrar scripts para el desarrollo de complementos¿algo como esto?
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" )
);
incruste la clave secreta en el script encriptado para que pueda verificarlo.
el archivo se parece a
{"código de verificación": "B7611676E821AA1ECC4CB5D6F02C6BA9", "fecha de vencimiento": "1jan2022"}
Re: usar JSL para cifrar scripts para el desarrollo de complementosGracias @Craige_Hales esa es una solución interesante que incorpora la fecha de caducidad y una suma de comprobación.
Pequeña solución para un error de codificación en la línea 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: usar JSL para cifrar scripts para el desarrollo de complementosGracias. Esa variable quedó de una primera versión, antes de darme cuenta de que quería ser una solución JSON.
Esto es similar a lo que hace JMP con un archivo PER (no JSON); también puede bloquear otras variables, como un usuario o un nombre de sitio, agregándolas a la concatenación.
Debe usar ShowGlobals () después de ejecutar su aplicación para asegurarse de que su secreto no sea demasiado fácil de descubrir.