VB/VB.Net Envoie Packet 4

  • Auteur de la discussion Anonymous
  • Date de début
A

Anonymous

Invité
#41
Ok merci beaucoup 4R7Y.
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#42
ça ne résout pas le problème de WRONG_CREDENTIAL :/
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#43
[supposition]En fait, je pense que si tu mets les deux derniers paramètre à "true", le serveur attend d'autre informations concernant les credentials et le cryptage RSA proposé par maxou n'est donc plus suffisant [/supposition]
 
A

Anonymous

Invité
#44
nostrora, tu as bien mis les 3 derniers paramètre de IdentificationMessage à True ?
Et oui je pense aussi 4R7Y
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#45
Après un sniffage de la connexion avec le client, voilà ce qu'il en ressort
Code:
initIdentificationMessage(Version_, "fr", Account, EncryptedPassword, 0, CKB_FASTCO.Checked, True, False)
Ca c'est ce que le client envoie.
Ce que je propose d'envoyer :
Code:
initIdentificationMessage(Version_, "fr", Account, EncryptedPassword, 0, True, False, False)
C'est pas pareil mais en tout cas, ça fonctionne avec les credentials
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#46
les 3 derniers paramètre ??

Moi les 3 derniers var de IdentificationMessage
C'est la taille du credential, le credential, et serverId

Moi si je sniff client et connexion bot
Voilà ce que j'obtient ;)

Officiel : http://pastebin.com/8LfL6pxu
Connexion Bot : http://pastebin.com/zySmkByd

Regarder byte par byte, tout est IDENTIQUE, sauf le credential

Donc il me sort un WRONG_CREDENTIAL en id 20
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#47
En gros, ma solution propose :
Code:
Public Function serializeAs_IdentificationMessage(ByVal param1 As DofusWriter)
            param1.WriteByte(1)
            Me.version.serializeAs_Version(param1)
            param1.WriteUTF(Me.lang)
            param1.WriteUTF(Me.login)
            param1.WriteShort(Me.credentials.Count)
            For i As Integer = 0 To credentials.Count - 1
                param1.WriteByte(Me.credentials(i))
            Next
            param1.WriteShort(Me.serverId)
            Return Me
        End Function
Tout dépend comment tu codes ton bot après :
- proche des classes (tu traduis tout ce qui est utile et tu Initialise la classe avant de la serializer)
- moins proches des classes (tu écris directement dans le select case les données que tu veux écrire après avoir vu comment les écrire dans la classe).

EDIT pour au dessus :
C'est ce que je trouvais aussi, si tu regardes mes précédents messages (l'histoire du 23e byte)
Et j'ai vu que ce qui déconnais c'était le booleanbytewrapper
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#48
Credentials dans ta solution, c'est bien un byteArray ou un Vector<int> ?
Dans les sources, il sort un byteArray ensuite il le transforme un Vector<int> ensuite il ÉCRIT writeByte(vector)

Je ne comprends pas pourquoi il transforme en Vector<int> si après il l'écrit en byte
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#49
Pour moi crédential est une liste d'integer

Et de toute façon tout n'est écrit qu'en byte dans le flux (tout passe par le writebyte)
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#50
Alors si tout est des bytes, pourquoi ta une liste d'integer ?
T'aurais pu laissé en bytes non ?
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#51
Pour moi dans les sources, c'est une liste d'integer. Logique puisque le cryptage RSA ressort (chez moi en tout cas) une liste d'integer
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#53
même problème que moi ici =>viewtopic.php?p=12845#p12845
montre moi comment tu écris ton IdentificationMessage
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#54
Puisque la trameTCP est identique que le client officiel, j'ose imaginer que le problème ne viens pas d'ailleurs que ma façon d'écrire le credential t'es d'accord;)

Pour l'instant je fais une approche pas trop orientée objet, j'écris directement le message dans mon switch

Donc sa donne :

http://pastebin.com/aUm3NeQm

Donc comme j'ai dit plus haut

Puisque le paquet est EXACTEMENT pareil que le client officiel
Preuve :
Officiel : http://pastebin.com/8LfL6pxu
Connexion Bot : http://pastebin.com/zySmkByd

C'est que le problème vient uniquement du credential, le header et tout le reste est pareils
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#55
C'est ce que je pensais aussi, d'où ma remise en cause du cryptage RSA de maxou, mais il semble que mettre l'option useCertificate à true demande des informations complémentaires au serveur concernant le crédential (puis qu'en mettant cette option à false, le même cryptage est suffisant !)
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#56
Chez moi c'est false
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#57
Code:
                quint32 option(0);
                option = setFlag(option, 0, 1);
                option = setFlag(option, 1, 0);
                option = setFlag(option, 2, 0);
                inMessage.writeByte(option); // ça reviens aux même d'écrire 1 ;)
Et bien chez moi, non.
remplace le code du dessus par
Code:
inMessage.writeByte(1);
et fait nous part du résultat ! (si sa marche c'est que sa ne vient pas de ton cryptage, on est d'accord ?)
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#58
D'accord,

Je viens d'essayer, et ça ne change rien. Toujours wrong_credential
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#59
Et essaie sans passer par le tableau de byte ? (en laissant en liste d'integer (même si la liste d'integer n'est composée que de byte, c'est vrai et donc que ça ne va vraisemblablement rien changer)
 
Inscrit
3 Novembre 2011
Messages
51
Reactions
0
#60
Donc je doit mettre le tableau de byte dans un vector<int> et j'écrit writeByte avec le vector<int>
 
Haut Bas