Bonjour à tous,
Je me suis plongé récemment dans l'univers du reverse engineering sur D2, et je commence donc en douceur avec avec un sniffer en python, mais je rencontre quelques soucis.
Je mets ici le lien du repo pour que vous puissiez éventuellement jeter un oeil au code : https://github.com/Okhr/d2sniffer
Ainsi que la capture wireshark que j'utilise pour travailler : https://www.mediafire.com/file/z18ksugp5tblgxs/port-5555.pcap/file
Dans les grandes lignes, j'utilises pyshark pour sniffer une interface (ou lire un .pcap pendant le dev). Je m'intéresse uniquement aux segments TCP qui contiennent un payload. D'après ce que j'ai compris un segment TCP peut contenir plusieurs paquet D2 et un paquet D2 peut être séparé sur deux segments TCP différents.
La sortie de mon script :
Chaque paragraphe représente un segment TCP, que je "consomme" et quand un message est complet je l'ajoute à un liste et je l'affiche. Tout va bien au début, je recupère bien les messages et j'extrais leurs noms grâce au parser Botofu, jusqu'au segment 29 (même numéro dans la capture wireshark si jamais) ou la taille du message lue semble pas bonne et ça fout tout en l'air.
Voilà je me casse les dents là dessus depuis plusieurs jours et j'ai l'impression de tourner en rond. Trop stylé si vous pouvez me donner une piste.
Okhr
Je me suis plongé récemment dans l'univers du reverse engineering sur D2, et je commence donc en douceur avec avec un sniffer en python, mais je rencontre quelques soucis.
Je mets ici le lien du repo pour que vous puissiez éventuellement jeter un oeil au code : https://github.com/Okhr/d2sniffer
Ainsi que la capture wireshark que j'utilise pour travailler : https://www.mediafire.com/file/z18ksugp5tblgxs/port-5555.pcap/file
Dans les grandes lignes, j'utilises pyshark pour sniffer une interface (ou lire un .pcap pendant le dev). Je m'intéresse uniquement aux segments TCP qui contiennent un payload. D'après ce que j'ai compris un segment TCP peut contenir plusieurs paquet D2 et un paquet D2 peut être séparé sur deux segments TCP différents.
La sortie de mon script :
Packet 4
Segment payload size : 18
Message length : 15
<server : ProtocolRequired - length : 15> - instance_id : -1
Segment payload size : 0
Packet 6
Segment payload size : 345
Message length : 341
<server : HelloConnectMessage - length : 341> - instance_id : -1
Segment payload size : 0
Packet 8
Segment payload size : 284
Message length : 276
<client : IdentificationMessage - length : 276> - instance_id : 3
Segment payload size : 0
Packet 10
Segment payload size : 30
Message length : 23
<client : ClientKeyMessage - length : 23> - instance_id : 4
Segment payload size : 0
Packet 11
Segment payload size : 7
Message length : 4
<server : LoginQueueStatusMessage - length : 4> - instance_id : -1
Segment payload size : 0
Packet 13
Segment payload size : 2
Message length : 0
<server : CredentialsAcknowledgementMessage - length : 0> - instance_id : -1
Segment payload size : 0
Packet 15
Segment payload size : 7
Message length : 4
<server : LoginQueueStatusMessage - length : 4> - instance_id : -1
Segment payload size : 0
Packet 17
Segment payload size : 493
Message length : 117
<server : IdentificationSuccessMessage - length : 117> - instance_id : -1
Segment payload size : 373
Message length : 369
<server : SelectedServerDataExtendedMessage - length : 369> - instance_id : -1
Segment payload size : 0
Packet 25
Segment payload size : 20
Message length : 15
<server : ProtocolRequired - length : 15> - instance_id : -1
Segment payload size : 2
Message length : 0
<server : HelloGameMessage - length : 0> - instance_id : -1
Segment payload size : 0
Packet 27
Segment payload size : 45
Message length : 38
<client : AuthenticationTicketMessage - length : 38> - instance_id : 12
Segment payload size : 0
Packet 29
Segment payload size : 1460
Message length : 11338713661440
Segment payload size : 0
Packet 31
Segment payload size : 2048
Segment payload size : 0
Packet 33
Segment payload size : 4096
Segment payload size : 0
Packet 35
Segment payload size : 2920
Segment payload size : 0
Packet 37
Segment payload size : 2920
Segment payload size : 0
Packet 39
Segment payload size : 1156
Segment payload size : 0
Packet 41
Segment payload size : 1460
Segment payload size : 0
Packet 43
Segment payload size : 1460
Segment payload size : 0
Packet 45
Segment payload size : 1460
Segment payload size : 0
Packet 47
Segment payload size : 2920
Segment payload size : 0
Packet 49
Segment payload size : 3812
Segment payload size : 0
Packet 51
Segment payload size : 2920
Segment payload size : 0
Packet 53
Segment payload size : 2920
Segment payload size : 0
Packet 55
Segment payload size : 4380
Segment payload size : 0
Packet 57
Segment payload size : 2920
Segment payload size : 0
Packet 59
Segment payload size : 1460
Segment payload size : 0
Packet 60
Segment payload size : 1460
Segment payload size : 0
Packet 62
Segment payload size : 2028
Segment payload size : 0
Packet 64
Segment payload size : 1460
Segment payload size : 0
Packet 65
Segment payload size : 2920
Segment payload size : 0
Packet 67
Segment payload size : 1460
Segment payload size : 0
Packet 68
Segment payload size : 1460
Segment payload size : 0
Packet 70
Segment payload size : 2920
Segment payload size : 0
Packet 72
Segment payload size : 2920
Segment payload size : 0
Packet 74
Segment payload size : 2920
Segment payload size : 0
Packet 76
Segment payload size : 2920
Segment payload size : 0
Packet 78
Segment payload size : 2920
Segment payload size : 0
Packet 80
Segment payload size : 2920
Segment payload size : 0
Packet 82
Segment payload size : 2920
Segment payload size : 0
Packet 84
Segment payload size : 2920
Segment payload size : 0
Packet 86
Segment payload size : 2920
Segment payload size : 0
Packet 88
Segment payload size : 2920
Segment payload size : 0
Packet 90
Segment payload size : 4212
Segment payload size : 0
Packet 92
Segment payload size : 266
Segment payload size : 0
Packet 94
Segment payload size : 137
Segment payload size : 0
Packet 96
Segment payload size : 24
Segment payload size : 0
Packet 98
Segment payload size : 6
Segment payload size : 0
Packet 100
Segment payload size : 41
Segment payload size : 0
Process finished with exit code 0
Segment payload size : 18
Message length : 15
<server : ProtocolRequired - length : 15> - instance_id : -1
Segment payload size : 0
Packet 6
Segment payload size : 345
Message length : 341
<server : HelloConnectMessage - length : 341> - instance_id : -1
Segment payload size : 0
Packet 8
Segment payload size : 284
Message length : 276
<client : IdentificationMessage - length : 276> - instance_id : 3
Segment payload size : 0
Packet 10
Segment payload size : 30
Message length : 23
<client : ClientKeyMessage - length : 23> - instance_id : 4
Segment payload size : 0
Packet 11
Segment payload size : 7
Message length : 4
<server : LoginQueueStatusMessage - length : 4> - instance_id : -1
Segment payload size : 0
Packet 13
Segment payload size : 2
Message length : 0
<server : CredentialsAcknowledgementMessage - length : 0> - instance_id : -1
Segment payload size : 0
Packet 15
Segment payload size : 7
Message length : 4
<server : LoginQueueStatusMessage - length : 4> - instance_id : -1
Segment payload size : 0
Packet 17
Segment payload size : 493
Message length : 117
<server : IdentificationSuccessMessage - length : 117> - instance_id : -1
Segment payload size : 373
Message length : 369
<server : SelectedServerDataExtendedMessage - length : 369> - instance_id : -1
Segment payload size : 0
Packet 25
Segment payload size : 20
Message length : 15
<server : ProtocolRequired - length : 15> - instance_id : -1
Segment payload size : 2
Message length : 0
<server : HelloGameMessage - length : 0> - instance_id : -1
Segment payload size : 0
Packet 27
Segment payload size : 45
Message length : 38
<client : AuthenticationTicketMessage - length : 38> - instance_id : 12
Segment payload size : 0
Packet 29
Segment payload size : 1460
Message length : 11338713661440
Segment payload size : 0
Packet 31
Segment payload size : 2048
Segment payload size : 0
Packet 33
Segment payload size : 4096
Segment payload size : 0
Packet 35
Segment payload size : 2920
Segment payload size : 0
Packet 37
Segment payload size : 2920
Segment payload size : 0
Packet 39
Segment payload size : 1156
Segment payload size : 0
Packet 41
Segment payload size : 1460
Segment payload size : 0
Packet 43
Segment payload size : 1460
Segment payload size : 0
Packet 45
Segment payload size : 1460
Segment payload size : 0
Packet 47
Segment payload size : 2920
Segment payload size : 0
Packet 49
Segment payload size : 3812
Segment payload size : 0
Packet 51
Segment payload size : 2920
Segment payload size : 0
Packet 53
Segment payload size : 2920
Segment payload size : 0
Packet 55
Segment payload size : 4380
Segment payload size : 0
Packet 57
Segment payload size : 2920
Segment payload size : 0
Packet 59
Segment payload size : 1460
Segment payload size : 0
Packet 60
Segment payload size : 1460
Segment payload size : 0
Packet 62
Segment payload size : 2028
Segment payload size : 0
Packet 64
Segment payload size : 1460
Segment payload size : 0
Packet 65
Segment payload size : 2920
Segment payload size : 0
Packet 67
Segment payload size : 1460
Segment payload size : 0
Packet 68
Segment payload size : 1460
Segment payload size : 0
Packet 70
Segment payload size : 2920
Segment payload size : 0
Packet 72
Segment payload size : 2920
Segment payload size : 0
Packet 74
Segment payload size : 2920
Segment payload size : 0
Packet 76
Segment payload size : 2920
Segment payload size : 0
Packet 78
Segment payload size : 2920
Segment payload size : 0
Packet 80
Segment payload size : 2920
Segment payload size : 0
Packet 82
Segment payload size : 2920
Segment payload size : 0
Packet 84
Segment payload size : 2920
Segment payload size : 0
Packet 86
Segment payload size : 2920
Segment payload size : 0
Packet 88
Segment payload size : 2920
Segment payload size : 0
Packet 90
Segment payload size : 4212
Segment payload size : 0
Packet 92
Segment payload size : 266
Segment payload size : 0
Packet 94
Segment payload size : 137
Segment payload size : 0
Packet 96
Segment payload size : 24
Segment payload size : 0
Packet 98
Segment payload size : 6
Segment payload size : 0
Packet 100
Segment payload size : 41
Segment payload size : 0
Process finished with exit code 0
Chaque paragraphe représente un segment TCP, que je "consomme" et quand un message est complet je l'ajoute à un liste et je l'affiche. Tout va bien au début, je recupère bien les messages et j'extrais leurs noms grâce au parser Botofu, jusqu'au segment 29 (même numéro dans la capture wireshark si jamais) ou la taille du message lue semble pas bonne et ça fout tout en l'air.
Voilà je me casse les dents là dessus depuis plusieurs jours et j'ai l'impression de tourner en rond. Trop stylé si vous pouvez me donner une piste.
Okhr