Bonjour,
Je me suis mis en tête de créer un bot socket D1.29 sous Qt(C++) afin que celui-ci puisse être utilisable aussi bien sous windows que linux,
j'ai finalement réussis à connecter mon personnage au jeux a identifier le paquet qui gère la carte
(GDM), il serai constituer de la forme suivante : GDM|id_carte|date_creation|clef...
j'ai donc récupéré la clef et ai essayer de décrypter la carte avec celle ci ..
mais voilà mon soucis est que je ne comprend pas tout le fonctionnement du code et sans ca impossible de bien faire..
je poste le code que j'ai commenté, trouvé sur le forum a fin qui vous puissiez mieux m'aider :
je me suis inspirer de ce post : https://cadernis.fr/index.php?threads/système-de-décryptage-mapdata-dofus-1-29x.1790/
Je me suis mis en tête de créer un bot socket D1.29 sous Qt(C++) afin que celui-ci puisse être utilisable aussi bien sous windows que linux,
j'ai finalement réussis à connecter mon personnage au jeux a identifier le paquet qui gère la carte
(GDM), il serai constituer de la forme suivante : GDM|id_carte|date_creation|clef...
j'ai donc récupéré la clef et ai essayer de décrypter la carte avec celle ci ..
mais voilà mon soucis est que je ne comprend pas tout le fonctionnement du code et sans ca impossible de bien faire..
je poste le code que j'ai commenté, trouvé sur le forum a fin qui vous puissiez mieux m'aider :
C#:
private static string DecypherData(string data, string decryptKey)
{
try
{
var result = string.Empty; //créer une chaine de caractére.
if (decryptKey == "") return data; //si la clef est vide on retourne data
decryptKey = PrepareKey(decryptKey);
var checkSum = CheckSum(decryptKey)*2;
for (int i = 0, k = 0; i < data.Length; i += 2)
{
result +=
(char)
(int.Parse(data.Substring(i, 2), NumberStyles.HexNumber) ^
decryptKey[(k++ + checkSum)%decryptKey.Length]);
// ici je suppose que l'on recupére la chaine de caractere de data a l'emplacement (depart:i jusque i+2) et que l'on convertis le tout en hexa, le tout puissance
// du caractére(k+1 +le checkSum)modulo longueur key
}
return Uri.UnescapeDataString(result); // ici je ne comprend pas vraiment ..
}
catch
{
return "error";
}
}
private static string PrepareKey(string key)
{
var keyResult = string.Empty;
for (var i = 0; i < key.Length; i += 2)
keyResult += Convert.ToChar(int.Parse(key.Substring(i, 2), NumberStyles.HexNumber));
// retournerai le caractére Obtenu par le code ASCII en Hexa de key a l'emplacement depart i et deux caractères plus loin)
return Uri.UnescapeDataString(keyResult); // je ne comprend pas non plus ici ..
}
private static int CheckSum(string data) => data.Sum(t => t%16)%16; // mais mon plus gros soucis se situe sur cette fonction ci que je ne comprend pas du tout ..
Dernière édition: