Client

Le logiciel client doit être capable d’interpréter le fichier LUA et de renvoyer une réponse à la technologie Techover.

Interpréteur LUA

Peu importe le langage dans lequel votre logiciel a été conçu, il existe aujourd'hui des bibliothèques pour chaque langage capable d’interpréter le LUA. Dans notre exemple nous utiliserons Moonsharp car comme nous vous le disions avant, nous avons conçu notre technologie essentiellement pour Unity.

LUAInterpreter

Pour commencer, vous devrez créer une première classe qui aura pour but d’interpréter le script reçu par votre serveur.

using MoonSharp.Interpreter;
public class LUAInterpreter
{
public LUAInterpreter(string script, string challenge1, string challenge2, string processName = "", string processFile = "")
{
var secureScript = new Script();
secureScript.Globals("SEOGXHEELWHJ") = new TechoverEnvironment();
try
{
secureScript.DoString(script);
var value = secureScript.Call(secureScript.Globals("SEOGXHEELWHJH"), challenge1, challenge2, processName, processFile);
}
catch (Exception ex)
{
}
}
}

Dans cette classe, vous devrez ajouter le nom de votre processus client ainsi le nom du fichier client ICI :

...string processName = "", string processFile = ""...

SecurityEnvironnement

Voici la dernière classe que vous devrez ajouter qui aura pour but d'alimenter votre script LUA de fonctions c#

using MoonSharp.Interpreter;
[MoonSharpUserData]
public class TechoverEnvironment
{
public void resultChallenge(string value)
{
System.Net.WebClient techOverRequest = new System.Net.WebClient();
string tokenAPI = "TOKEN_API_CLIENT";
string hashMD5 = SEOGXHEELWHJBBYBQ();
techOverRequest.DownloadString("https://techover.fr/API/ResponseIntegrity/" + tokenAPI + "/" + hashMD5 + "/" + value);
}
public string SEOGXHEELWHJBBYB(string value)
{
return Encoding.UTF8.GetString(Convert.FromBase64String(value));
}
public string SEOGXHEELWHJBBYBQ()
{
string hashMD5 = "COMPUTE_HASHMD5";
return hashMD5;
}
}

Dans cette classe, il ne vous reste qu'a compléter la méthode resultChallenge en insérant le token API du client ainsi qu'en calculant le Hash MD5 de son fichier client (compléter la fonction SEOGXHEELWHJBBYBQ) .

Une demande de votre serveur

Dans cette dernière étape, vous ne devez pas oublier d'ajouter l'appel à la classe LUAInterpreter après la demande d'intégrité de votre serveur. Comme ceci :

private static void ServerAskIntegrity()
{
System.Net.WebClient techOverRequest = new System.Net.WebClient();
string techOverResult = techOverRequest.DownloadString("https://techover.fr/API/Security/");
string scriptContent = techOverResult.Split('#')[0];
string challenge1 = techOverResult.Split('#')[1];
string challenge2 = techOverResult.Split('#')[2];
var data = System.Convert.FromBase64String(scriptContent);
string base64DecodedScript = System.Text.Encoding.UTF8.GetString(data);
LUAInterpreter executeScript = new LUAInterpreter(base64DecodedScript, challenge1, challenge2);
}

Attention : Le contenu du script est envoyé en base64 vous devrez déchiffrer le contenu reçu par notre API avant de l’exécuter.

L'exemple ci-dessus est un exemple de méthode que vous pourriez appeler après une demande d'intégrité de votre serveur.