Hello :) je reviens après quelque temps et je vois que la connexion a bien changé !
Case 3
ID_Message = New Network.Messages.Connection.HelloConnectMessage
ID_Message.Unpack(PacketData)
Dim key As List(Of Integer) = ID_Message.key
Dim salt As String = ID_Message.salt
Dim Account As String = Me._nomDecompte
Dim Password As String = Me._motDePasse
Dim EncryptedPassword As List(Of Integer) = RSAManager.Encrypt(salt & Password, key)
Dim Version_ As New Types.Version.Version
Version_.initVersion(2, 6, 4, 58765, 1, 0)
' Dim Certificates As New List(Of Network.Types.Secure.TrustCertificate)
Dim Message As New Network.Messages.Connection.IdentificationMessage
Message.initIdentificationMessage(Version_, "fr", Account, EncryptedPassword, 24, _form.CKB_FASTCO.Checked, True, True)
Message.pack(_socket_Connexion)
Mais le serveur me renvoie un IdentificationFailedMessage J'ai peut être oublié quelque chose, ou mal configurer ma connexion. Si vous pouvez m'éclairer ce serait avec plaisir !
L'encryptage se fait avec celui de Maxou
Je me permet d'éditer : Avant l'IdentificationFailedMessage, je reçois ce message : CredentialsAcknowledgementMessage
A quoi correspond-t-il ?
Enfin, pour répondre à ToOnS :
Public Shared Function Encrypt(ByVal text As String, ByVal key As List(Of Integer)) As List(Of Integer)
Dim array As Byte() = New Byte(key.Count - 1) {}
For i As Integer = 0 To key.Count - 1
array(i) = CByte(key(i))
Next
Dim rsa As RSACryptoServiceProvider = DecodeX509PublicKey(array)
If rsa Is Nothing Then
Return Nothing
End If
Dim result As Byte() = rsa.Encrypt(Encoding.UTF8.GetBytes(text), False)
Dim intArray As New List(Of Integer)
For Each b As Byte In result
intArray.Add(b)
Next
Return intArray
intArray (comme son nom l'indique) est bien une liste d'integer et non une liste de byte (même si cette liste d'integer n'est composée que de byte :ugeek: )
RE-EDIT : (Oui je cherche ! :p)
La liste d'integer que retourne RSAManager a TOUJOURS un count de 256. L'erreur ne vient donc pas du cryptage.
Fait amusant ( je ne sais pas si chez vous c'est pareil) : Quand je change dans cette ligne
Message.initIdentificationMessage(Version_, "fr", Account, EncryptedPassword, 24, _form.CKB_FASTCO.Checked, True, True)
Un des "true" par un "false", il n'y a aucun retour du serveur ankama (donc une déconnection pour mauvais envoi) Or, Les trois boolean ne sont relié que par leur writer : BooleanByteWriter. Peut être une erreur dans celui-ci ?
Lecture du packet 20 :
Reason = 2
=>
Public WRONG_CREDENTIALS As uinteger = 2
Avec un sniffage, j'envoie un packet de taille 281 , avec le bot aussi.
La différence apparaît lors de l'écriture du 23e byte.