DevChris
Motivé ou alors il ne sait pas tout ce qu'il devras faire encore après ^^ mais tout est possible continue comme ça ! :)
Je ne compte pas développer un bot entièrement en C. :p
C'est un code qui m'a permis de faire l'équivalent du readVarInt rapidement.
Si je développe un bot, je le ferrai probablement en Java pour rester dans le paradigme objet et pour la portabilité. ^^
J'ai quelques questions :
Je suis parvenu a faire les étapes de ce topic (message de @Arth ) : https://cadernis.com/d/1704-procédure-dauthentification-et-rsa/3
J'arrive bien a avoir la clé publique en base 64, j'ajoute le header et le footer.
Et je crypte ensuite de cette façon :
openssl rsautl -encrypt -inkey publickey.pem -pubin -in credential.txt -out credential.bin
- publickey.pem étant la clé que je reçois du serveur dans le HelloConnectMessage (Après avoir appliqué la signature avec la clé statique présente dans les sources du jeu).
- credential.txt étant la chaîne contenant le salt, pseudo, et password :
<salt><size pseudo sur un octet><pseudo><password>
- credential.bin : Le fichier credential.txt crypté.
Cela vous semble bon ?
Quand je tente d'envoyer cela au serveur, je reçois un paquet de type 20 avec comme raison : "WRONG_CREDENTIAL".
J'ai une autre question, voici un IdentificationMessage envoyé par le client :
// ID du paquet et nombre d'octets de la taille du paquet (id = 4, nombre d'octets de la taille = 2)
00 12
// Taille du paquet à 0 ??
00 00
00 16 01 17 00 02 2D 08 00 DC BC C3 00 00 01 01 00 02 66 72 80 02 92 03 56 D6 34 6C F3 51 5A FE 4B C3 4E 7E AA 1C D0 F8 96 C5 21 19 A1 39 34 10 17 E5 6B EF 21 19 37 E8 C3 1C 18 1B 7C 16 D5 5F 50 C3 CF 43 4A 62 91 43 54 13 78 08 80 65 6A 47 D2 59 FB E8 78 EF 94 2E 15 CA 3E CD 5D DF 82 41 F6 EE A2 FB D8 5D 87 73 AA 88 F9 C0 30 BD 40 DB 12 ED 48 9D C2 59 E3 23 80 A9 76 AE 51 00 87 7F 82 E1 1B F3 86 81 90 F0 D4 E4 49 8A F3 AF 8F A0 54 B7 F4 7C FC 61 40 B3 D3 23 51 00 B1 F8 9E 0D DB 7B D8 D5 F3 F2 84 30 04 0B 07 3A 41 47 BF 9D 63 11 AD F2 85 31 17 D1 C1 41 70 DF A4 72 07 BC EC F2 D1 E0 4D 06 E6 4A EB 64 AB 38 65 73 85 29 BC C9 04 EE 56 C4 32 71 28 2B C6 85 32 71 EE EA 3F 56 FC F8 C8 3B 98 5C 2E FC 0A 2F 65 96 2F A5 07 58 B9 2E C0 FA EE EF EE 2D E1 22 9C 0D D4 6C CF 03 CB 6C 2B 63 C4 76 05 68 1A 5B B2 6D C9 1D E5 EF 58 D0 C6 24 00 00 00 00 00
La taille total du paquet me paraît bizarre.
J'ai essayé de passer par le sniffer de @BlueDream (https://cadernis.com/d/1334-amaknacore-sniffer-dofus-2-45-6-1) qui injecte une dll dans le client du jeu, afin de tenter de mieux comprendre, mais celui ci ne m'a trouvé aucun paquet (malgré les droits administrateur).
Si j'arrive a comprendre la génération de ce credential, je ferrai peut-être un tuto clair qui pourra servir à d'autres personnes qui passeront sur ce forum. (Je ne dois pas être le seul a avoir des difficultés sur cette partie ^^)
PS: La clé statique du jeu n'est pas celle que j'ai mis dans mon précédent poste, j'ai récupéré la nouvelle dans le client, il s'agit de celle ci :
-----BEGIN PUBLIC KEY-----
MIIBUzANBgkqhkiG9w0BAQEFAAOCAUAAMIIBOwKCATIAgucoka9J2PXcNdjcu6CuDmgteIMB+rih
2UZJIuSoNT/0J/lEKL/W4UYbDA4U/6TDS0dkMhOpDsSCIDpO1gPG6+6JfhADRfIJItyHZflyXNUj
WOBG4zuxc/L6wldgX24jKo+iCvlDTNUedE553lrfSU23Hwwzt3+doEfgkgAf0l4ZBez5Z/ldp9it
2NH6/2/7spHm0Hsvt/YPrJ+EK8ly5fdLk9cvB4QIQel9SQ3JE8UQrxOAx2wrivc6P0gXp5Q6bHQo
ad1aUp81Ox77l5e8KBJXHzYhdeXaM91wnHTZNhuWmFS3snUHRCBpjDBCkZZ+CxPnKMtm2qJIi57R
slALQVTykEZoAETKWpLBlSm92X/eXY2DdGf+a7vju9EigYbX0aXxQy2Ln2ZBWmUJyZE8B58CAwEA
AQ==
-----END PUBLIC KEY-----