Bonjour, Bonsoir
Je suis actuellement entrain d'apprendre le python, issue du Web a la base l'apprentissage et long mais je m'accroche.
Je tien a spécifié que j'ai pris le temp de scruté les différents tutoriaux sur c-a-d, étudier les packets grâce a WireShark mais comprendre la logique du décodage de paquets D2 en python s'avère être une réelle épreuve pour moi.
J'utilise la méthode attaque en MITM avec python en "Hookant" ( je sais pas si ça se dit ^^' ) le process de D2.
Pour cela j'utilise le framework Fritm de @Labo
Voici mon code actuel:
import fritm
import select
def dumb_callback(soCli, soSrv):
conns = [soCli, soSrv]
other = {soCli: soSrv, soSrv: soCli}
active = True
try:
while active:
rlist, wlist, xlist = select.select(conns, [], conns)
if xlist or not rlist:
break
for r in rlist:
data = r.recv(8192)
if other[r] == soSrv:
print(f'[SERVEUR] => ' + data)
if other[r] == soCli:
print(f'[CLIENT] => ' + data)
if not data:
active = False
break
other[r].sendall(data)
finally:
for c in conns:
c.close()
fritm.hook("Dofus.exe", 5555)
httpd = fritm.start_proxy_server(dumb_callback, 5555)
Pour vous montrer mon investissement afin que vous ne pensiez pas que je souhaite que vous me mâchiez le travail.
J'ai en amont :
- étudié la construction d'un paquet dofus a l'aide de WireShark et de convertiseurs en ligne pour extraire l'id du message
- étudié le framework afin de différencier les message reçu par le serveur et par le client
- étudié la façon de décoder des bytes en python grâce a .decode() par exemple
Seulement voilà je suis véritablement perdu et dépourvue de réponses qui pourrait m'aider a comprendre, je souhaiterais décoder le message reçu de la part du serveur afin de pouvoir récupérer l'id du paquet, le nom, la data, etc..
Mais à vrais dire je ne sais pas par ou commencer, ni même comment attaquer le paquet en Python.. :/
J'espère sincèrement que vous pourriez me dirigé afin que je puisse comprendre cela.
Merci de vôtre aide et de vôtre temps !