D2 - World Server

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#1
Petite question, sur D2, une fois que j'ai reçus (et altérer) le packet qui transmet l'IP et le port du world server, mon proxy MITM ferme la connexion de l'auth pour basculer vers celui de world, sauf que là il y à un échange de 3 packets, puis plus rien ne se passe.

Donc ma question est, ya t'il quelques chose de spécifique a ce moment là ?

Code:
Packet #1 from SERVER, size: 8
0x000000: 00 00 05 D4 00 00 05 D4 ........

Packet #101 from SERVER, size: 0

Packet #110 from CLIENT, size: 35
0x000000: 00 02 66 72 00 1D 32 30 ..fr..20
0x000008: 36 30 36 33 35 36 30 63 6063560c
0x000010: 38 35 31 63 38 37 30 61 851c870a
0x000018: 31 36 32 36 39 62 32 39 16269b29
0x000020: 66 34 30                f40
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#2
110 = AuthenticationTicketMessage

Le client envoi le Ticket mais le serveur ne répond pas c'est très étrange.
Selon moi c'est possible que yai un probleme au moment ou tu bascule sur l'autre socket.

Montre nous à quoi ressemble le code du paquet 3 'bidouillé' que tu envois au client;
 

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#3
J'altère seulement le packet 42 sur l'auth:

(la lecture et l'écriture du header est faite avant)
Code:
short serverId = packet->ReadShort();
char *WorldAddress = packet->ReadUTF();
unsigned short WorldPort = packet->ReadUShort();
int lenBytes = length - packet->position;
char *restBytes = packet->ReadBytes(lenBytes);

build->WriteShort(serverId);
build->WriteUTF("127.0.0.1");
build->WriteShort(443);
build->WriteBytes(restBytes, lenBytes);
(puis je send)
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#4
tu ne peux pas ecrire le header avant car l'utf *WorldAddress et "127.0.0.1" n'ont pas la meme taille (4 chars de moins si je me souvien , donc le header est different) a moins que tu prepares déjà avant le header en consequence mais le mieu c'est de compter les chars (bytes) apres pour faire un bon header.
ce qui fait que tu aurais un decalage de 4 bytes donc un ticket mauvais ?

aussi les ports de connexion et world sont bien les memes ? (comme je vois que tu l'ecris en dur)
 

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#5
Bien vu pour le header ^_^' je n'y avait pas pensé.
J'utilise un pipe pour communiquer l'IP et le port du WorldServer officiel au proxy world, j'écoute juste sur le 443 car j'utilise le 5555 pour le proxy auth.
 

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#6
J'avance :) mais là encore, sa bloque :( plus rien ne ce passe.
J'ai vérifier tout les packets à la main, il sont tous correct.

voila les données brute reçus sur le proxy world, aucune analyse est faite, je fait qu'acheminer les packets.

Code:
[INFO] Packet recv from SERVER
0x000000: 00 05 08 00 00 05 D4 00 ........
0x000008: 00 05 D4 01 94          .....

[INFO] Packet recv from CLIENT
0x000000: 01 B9 26 00 02 66 72 00 ..&..fr.
0x000008: 20 34 37 63 62 33 34 34  47cb344
0x000010: 61 38 36 36 33 35 39 36 a8663596
0x000018: 31 64 30 61 35 62 38 34 1d0a5b84
0x000020: 34 62 31 33 39 32 31 34 4b139214
0x000028: 36                      6

[INFO] Packet recv from SERVER
0x000000: 01 BC 02 BD 06 51 2D AD .....Q-.
0x000008: B5 0E 10 63 11 05 00 02 ...c....
0x000010: 66 72 00 62 85 0C 00 05 fr.b....
0x000018: 00 01 00 02 00 03 00 04 ........
0x000020: 00 06 61 21 0A 03 D6 74 ..a!...t
0x000028: 2F 01 7F FF 7F FF 00 61 /......a
0x000030: ED 01 01 02 C0          .....

[INFO] Packet recv from CLIENT
0x000000: 02 58                   .X

[INFO] Packet recv from SERVER
0x000000: 5F 51 04 00 01 00 01 5F _Q....._
0x000008: 51 04 00 00 00 00 02 C0 Q.......
0x000010: 5F 51 04 00 00 00 00    _Q.....

[INFO] Packet recv from SERVER
0x000000: 02 5D 03 00 00 00       .]....
 
Haut Bas