VB/VB.Net problème D..Writer

A

Anonymous

Invité
#1
Bonjour j'ai un problème dans le D..Writer
J'essaie d'intercepter le paquet 42 et envoyer un autre paquet avec l'adresse locale "127.0.0.1"
paquet 42
Code:
if ID=42 then

Dim message As New SelectedServerDataMessage
            message.Deserialize(PacketData)
            Dim address As String = message.address
            message.address = "127.0.0.1"
            message.Serialize(writer)
            DofusWriter.Send(42)

 socket_jeu = TcPSock.AcceptSocket
            Dim socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            socket.Connect(address, &H15B3)
           socket_Server = socket

else

 
    _socket_Jeu.Send(data)
end if
Serialize/SelectedServerDataMessage:
Code:
   Public Sub Serialize(ByVal writer As DofusWriter)
            writer.WriteShort(Me.v_serverId)
            writer.WriteUTF(Me.v_address)
            writer.WriteShort(Me.v_port)
            writer.WriteBoolean(Me.v_canCreateNewCharacter)
            writer.WriteUTF(Me.v_ticket)
        End Sub
problème :
parsing(server) WriteShort -> L'opération arithmétique a provoqué un dépassement de capacité.
problème : le paquet n'est pas écrite correctement ....
 
A

Anonymous

Invité
#2
Remplace writeshort par writeint16.
Un conseil au lieu de mettre if id = xxx fait un select case.
 
A

Anonymous

Invité
#3
lolodu92 a dit:
Remplace writeshort par writeint16.
Un conseil au lieu de mettre if id = xxx fait un select case.
merci
mais le client Do*** ne répond pas




recu : id server= 42, taille = 56
0x62A80029040000000A00592602000774657374687574000B2D482D552D542D544553540335AEB8000000000000000000000000A938000F00
envoie TO Client : id = 42, taille = 50
0x000F00093132372E302E302E3115B30000203930373234653831396434383638363466333139353437373762306338646632

recu : id server= 1, taille = 8
0x0005080000059300
recu : id server= 101, taille = 0
0x
 
A

Anonymous

Invité
#4
La sa doit venir d'un précédent packet, ton 42 est clean.
C'est bizard. Ta pas mal renseigné une info précédamment ?
 
A

Anonymous

Invité
#5
lolodu92 a dit:
La sa doit venir d'un précédent packet, ton 42 est clean.
C'est bizard. Ta pas mal renseigné une info précédamment ?

Dim messagein As New SelectedServerDataMessage
Dim messageout As New SelectedServerDataMessage
messagein.Deserialize(PacketData)
Dim address As String = messagein.address
messageout.address = "127.0.0.1"
messageout.port = 5555
messageout.serverId = messagein.serverId
messageout.ticket = messagein.ticket
messageout.canCreateNewCharacter = messagein.canCreateNewCharacter
messageout.Serialize(writer)
DofusWriter.Sends(42)

Dim socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
socket.Connect(address, &H15B3)
_socket_Connexion = socket


normalement, le client se connecte à 127.0.0.1:5555
 
A

Anonymous

Invité
#6
Aucune idée si quelqu'un a une piste.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#8
D..Send(42)
Sans la censure ca donne quoi ?
(ca pue la decompilation l'hexa dans le port)
 
A

Anonymous

Invité
#9
ToOnS a dit:
D..Send(42)
Sans la censure ca donne quoi ?
(ca pue la decompilation l'hexa dans le port)
Dofus.DofusWriter.ClientSend(42)
envoie TO Client : id = 42, taille = 50
0x000F00093132372E302E302E3115B30000203930373234653831396434383638363466333139353437373762306338646632

dans le DofusWriter
ClientSend = Form1._socket_Jeu.Send(BytesToWrite)
_socket_Jeu= Socket De client
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#10
essais en deconnectant a la fin du 42 la partie "client officiel <-> bot" et en le reconnectant (car le client doit attendre la deco avant de reco)
 
A

Anonymous

Invité
#11
ToOnS a dit:
essais en deconnectant a la fin du 42 la partie "client officiel <-> bot" et en le reconnectant (car le client doit attendre la deco avant de reco)
déjà fait :)
mais le client ne répond pas au paquet 42
normalement le TcpListener attraper le nouveau socket sur 127.0.0.1:5555
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#14
comme c'est fait la oui c'est normal , sinon faut faire ouvrir form1 a chaque fois que tu recois un ID 1 par le serveur de logging
 
A

Anonymous

Invité
#15
ToOnS a dit:
comme c'est fait la oui c'est normal , sinon faut faire form1 a chaque fois que tu recois un ID 1 par le serveur de logging
fonctionne pas ...
J'ai essayé :

on GameSock_Accepted :
Dim NewForm2 As form2= New form2(GameSock)
NewForm2.Show()

dans le form2
Public Sub New(ByVal Client As BazSocket)


GameSock = Client

End Sub


tout vas bien jusqu'à le packet 42 !!! offf
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#16
ah ouais c'est surement parceque le parseur est en dehors de form1 , donc soit tu mets tout dans form1 ou soit tu envois les sockets des form dans le parseur (en modifiant un peu pour que ca gere les bons sockets)
 
A

Anonymous

Invité
#17
ToOnS a dit:
ah ouais c'est surement parceque le parseur est en dehors de form1 , donc soit tu mets tout dans form1 ou soit tu envois les sockets des form dans le parseur (en modifiant un peu pour que ca gere les bons sockets)
nn c'est dans le Form2
J'ai copié le parseur et suprimé le "Form1."

tout se passe bien, jusqu'à ce paquet 42
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#18
RipME interdit le multi poste " 2 poste a la suite " est essaye aussi de chercher un peut ToOnS ta donnés tout les infos nécessaire.
 
A

Anonymous

Invité
#19
tifoux a dit:
RipME interdit le multi poste " 2 poste a la suite " est essaye aussi de chercher un peut ToOnS ta donnés tout les infos nécessaire.
désolé :)

Admin : Dernier avertissement avant bannissement temporaire.
Pas de double post, pas de sms.
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#20
Déja que ToOnS à partager les source d'un Mitm maintenant essaye au minimum de comprend.
 
Haut Bas