Re: [HELP] types de données contradictoires - HumanCheck
DeepSiderZ a dit : "Je comprends pas trop ce que tu as voulu dire par là ?
Je sais pas en quel langage tu code mais moi qui fais du C/C++, j'utilise des char* à la place des byteArray, bien-sur je ne peux pas afficher ce dernier si l'octet n'a pas de représentation ascii, mais en aucun cas je perd de l'info."
Oui tu as raison, c'est moi qui suis dans l'erreur. Et ça me rassure, car effectivement je vais pouvoir convertir mes ByteArray en String sans faire de casse. Merci pour ce petit ré-aiguillage :)
Sinon, pour BlueDream :
je sais que le HumanCheck change très (trop) souvent pour qu'il soit rentable de prendre la peine de le traduire. Mais je n'ai adopté cette solution (c'est vite dit) qu'après avoir épuisé toutes les autres qui me semblaient possibles à ma connaissance et du point de vue de mes compétences.
Mon bot est en AS3 (facile direz-vous ^^) et pour les maj 2.21 et 2.22, il me suffisait de laisser le HumanCheck s'exécuter et intercepter le pm pour l'envoyer selon mes prescriptions.
A partir de la 2.23, ça ne fonctionne plus : HumanCheck/sendTicket() provoque une erreur qui, au vu du code décompilé, semble venir d'elle.
Cliquez pour révéler
Cliquez pour masquer
ArgumentError: Error #2004: One of the parameters is invalid.
at Error$/throwError()
at flash.filesystem::File/set nativePath()
at flash.filesystem::File()
at HumanCheck/sendTicket()
at MethodInfo-6()
https://cadernis.com/d/1114-[full-socket]-rawdatamessage
Or je sais bien que cela ne se peut pas. La classe HumanCheck est par définition complètement fonctionnelle dans sa forme originale. Mais après avoir retourné le problème dans tous les sens, impossible de mettre le doigt sur l'origine de l'erreur. Ce qui est rendu plus difficile encore par le fait que ce code dynamique n'est pas débuggable à l'exécution.
J'ai donc pris le parti d'essayer de mettre en place une classe nommée HumanCheckLite.as qui est sensée reprendre uniquement les parties qui me semblaient utiles chez sa grande sœur, c-à-d la récupération du gameServerTicket et du DInvoker, leur passage à la moulinette selon le code source... et finalement l'envoi du CheckIntegrityMessage. J'en suis là avec mes ByteArray et mes String :(.
Mais je suis ouvert à toute autre piste, ou astuce me permettant d'éviter une traduction bête et méchante...
Atlantide