Problème sur la fonction send ?

Inscrit
17 Avril 2015
Messages
119
Reactions
0
#1
Bonjours, j'ai un problème sur un packet qui foire et ferme le socket, ( MITM ) j'ai bien vérifier les IOS aucun problème ainsi que le packet, comme ma fonction send est très vielle, je pense que sa bug sur sa. Si une personne pourrais jetez un coup d’œil, et me dire Merci encore :

Code:
Friend Shared Function Send(ByVal PacketID As Integer, ByVal sock As Object, ByVal writer As BigEndianWriter)
            Dim MessageLenghtType As Integer = ComputeTypeLen(writer.Data.Count)
            Dim Header As Short = ComputeStaticHeader(PacketID, MessageLenghtType)

            Dim BytesToWrite(2 + MessageLenghtType + writer.Data.Count - 1) As Byte
            BytesToWrite(0) = Header >> 8
            BytesToWrite(1) = Header - 256 * BytesToWrite(0)

            Dim index As Integer

            Select Case MessageLenghtType
                Case 1
                    BytesToWrite(2) = writer.Data.Count
                    index = 3
                Case 2
                    BytesToWrite(2) = writer.Data.Count >> 8
                    BytesToWrite(3) = writer.Data.Count - 256 * BytesToWrite(2)
                    index = 4
                Case 3
                    BytesToWrite(2) = writer.Data.Count >> 16
                    BytesToWrite(3) = writer.Data.Count >> 8
                    BytesToWrite(4) = writer.Data.Count - 256 * BytesToWrite(3) - 256 * 256 * BytesToWrite(2)
                    index = 5
            End Select

            Dim send_debug As String = Nothing
            For i As Integer = index To writer.Data.Count + index - 1
                BytesToWrite(i) = writer.Data(i - index)
            Next

            sock.Send(BytesToWrite)
            Console.WriteLine("envoie : id -> " & PacketID & " len -> " & BytesToWrite.Count - index)
            Console.WriteLine()

            Return (BytesToWrite)

        End Function

    End Class
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#2
Tout m'a l'air correct, à mon avis c'est le serveur qui ferme la connexion car tu lui envois des données mauvaises.
Il y aurai forcément une exception si cela venait de cette fonction. Cela peut venir des paquets qui ne seraient pas à jour.

On a besoin de plus d'infos comme les logs lorsque ce produit cette fermeture de connexion.
Ou encore les logs de ton client dofus.
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#3

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#4
Rien de vraiment anormal, je ne vois pas de problème. Tu switch sur le serveur de jeu, donc le client se déconnecte.
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#5
Je suis d'accord là tout fonctionne à merveille mais lorsque que le packet 110 viens, je me fais déconnecter du serveur. Io a jours je comprend pas comme c'est un mitm, j'ai juste besoin de gérer le 42.
 
Inscrit
10 Mai 2015
Messages
357
Reactions
55
#6
Tu as essayé de renvoyer les données comme elles te le sont envoyée par le client? et quand tu le désérialise tu obtiens quoi comme ticket ? Car si le ticket est faut tu verras directement qu'il y a quelque chose qui cloche et si tu le renvoies sans toucher c'est que la clef AES n'est pas la bonne. Si par exemple tu modifies le client pour faire une connexion automatique, il faut utiliser la même clef que le client.
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#7
Oui je renvoi les données sans rien faire, mais comment la clef AES peut elle être fausse puisque je touche a rien ?
ps : Si je me souvient bien une fois sa ma connecter quand même.
 
Inscrit
10 Mai 2015
Messages
357
Reactions
55
#8
Dans le cas où tu fais une connexion automatique, ça signifie que tu initialise la clef AES de ton coté mais elle est aussi générez par le client lors de la reception du Helloconnectmessage, donc la clef que tu vas mettre dans les credentials ne sera pas la même que celle avec laquelle tu vas deserialise ton ticket.

Après si tu fais pas de connexion automatique, peux-tu montrer le ticket reçu après deserialise.
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#9
Enfaite dans ma connexion e m'occupe uniquement du packet 42 cela est une erreur ?
 
Inscrit
10 Mai 2015
Messages
357
Reactions
55
#10
Non, alors cela vient pas de la clef AES. Mais montre ton ticket si possible.
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#11
La je suis en cours se soir quand j'ai le temps, merci .
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#12
Alors j'ai déserialise
Pour lang j'ai "fr"
mais pour ticket j'ai : "nt@" & ChrW(31) & "¸&" & ChrW(17) & "C¡»l?@º" & ChrW(140) & "s" & ChrW(143) & "T6§," & ChrW(146) & "$èúJ³" & vbNullChar & vbTab & "qn"

Or cela ne peut venir de mes ios je suis persuader.
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#13
Et si tu déserialize et que tu reconstruit le paquet manuellement ? Le résultat est le même ?
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#14
Oui effectivement sa fais la même erreur.
Par contre avec Brizze on a vu une chose :
  • [18:53:26:095] [ServerConnection] [RCV] HelloConnectMessage @35
  • [18:53:26:095] [ServerConnection] [RCV] BasicPongMessage @36
  • [18:53:26:096] [ServerConnection] [RCV] HelloConnectMessage @37
  • [18:53:26:096] [ServerConnection] [RCV] BasicPongMessage @38
j'ai 2 packet en double mais je comprend pas pourquoi
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#15
J'ai trouver d’où venais le problème, je renvoie les mauvaise data.
 
Haut Bas