Bonsoir a tous ,

J'aurais donc comme le titre l'indique quelques questions concernant le protocole 1.29 , je vous explique mon problème , ayant décidé de me faire un petit bot sur la 1.29 ( officiel ) je bloque sur la réception d'un packet qui ne se fait pas du tout alors que le personnage est bien connecté en jeu, je ne recois pas le packet " ASK " qui contient l'inventaire , je vous joins ma fonction de connexion :

Public Sub ThreadConnexion()

        While (SocketClient.Connected)

            Dim Bytes(95536) As Byte
            Dim Recu As Integer


            Try
                Recu = SocketClient.Receive(Bytes)

            Catch ex As Exception '

                If IsDisposed Then
                    MsgBox("Erreur men")

                End If
            End Try

            Message = Encoding.ASCII.GetString(Bytes)

            Message = Message.Substring(0, Recu)

            If (Message <> "") Then
                Invoke(New dEcrire(AddressOf Ecrire), Message)
            End If

            If (Mid(Message, 1, 2) = "HC") Then
                SocketClient.Send(Encoding.UTF8.GetBytes("1.29.1" & vbCrLf & TextBox1.Text & Chr(10) & PassEnc(MaskedTextBox1.Text, Mid(Message, 3)) & vbCrLf & "Af" & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "1.29.1....LOGS..")

            ElseIf (Mid(Message, 1, 4) = "AlEf") Then
                MsgBox("[Erreur] Mauvais nom de compte ou mot de passe.")

            ElseIf (Mid(Message, 1, 4) = "AlEf") Then
                MsgBox("[Erreur] Mauvais nom de compte ou mot de passe.")

            ElseIf (Mid(Message, 1, 4) = "AlEb") Then
                MsgBox("[Erreur] Compte banni.")

            ElseIf (Mid(Message, 1, 4) = "AlEk") Then
                MsgBox("[Erreur]IP/Compte banni temporairement .")

            ElseIf (Mid(Message, 1, 4) = "AlEv") Then
                MsgBox("[Erreur] Mauvais version du jeu.")

            ElseIf (Mid(Message, 1, 2) = "Ad") Then
                SocketClient.Send(Encoding.UTF8.GetBytes("Ax" & vbCrLf))

            ElseIf (Mid(Message, 1, 3) = "AxK") Then
                SocketClient.Send(Encoding.UTF8.GetBytes("AX602" & vbCrLf)) 'Henual = AX602
                Invoke(New dEcrire(AddressOf Ecrire2), "AX602")

            ElseIf (Mid(Message, 1, 3) = "AXK") Then

                idconnexion = Mid(Message, 15)
                SocketClient = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

                Try
                    Dim MonEp As IPEndPoint = New IPEndPoint(IPAddress.Parse("80.239.173.168"), 443)
                    SocketClient.Connect(MonEp)

                Catch ex As Exception 'En cas d'erreur.
                    RichTextBox1.Text = RichTextBox1.Text + " Erreur ip/port"
                End Try

            ElseIf (Mid(Message, 1, 2) = "HG") Then
                SocketClient.Send(Encoding.UTF8.GetBytes("AT" & idconnexion & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "AT")

            ElseIf (Mid(Message, 1, 3) = "ATK") Then
                SocketClient.Send(Encoding.UTF8.GetBytes("Ak0" & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "Ak0")
                SocketClient.Send(Encoding.UTF8.GetBytes("AV" & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "AV")



            ElseIf (Mid(Message, 1, 3) = "AV0") Then

                SocketClient.Send(Encoding.UTF8.GetBytes("Agfr" & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "Agfr")
                SocketClient.Send(Encoding.UTF8.GetBytes("AL" & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "AL")
                SocketClient.Send(Encoding.UTF8.GetBytes("Af" & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "Af")

            ElseIf (Mid(Message, 1, 3) = "ALK") Then

                Dim sep1() = Split(Message, "|", 3)
                Dim sep2() = Split(sep1(2), ";", 4)
                Dim name As String
                name = sep2(1)
                nomperso = name
                MsgBox(sep2(0))
                Invoke(New DName(AddressOf Infoperso), name, "Nom")
                Invoke(New DName(AddressOf Infoperso), sep2(2), "LVL")
                SocketClient.Send(Encoding.UTF8.GetBytes("AS" & sep2(0) & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "AS" & sep2(0))
                SocketClient.Send(Encoding.UTF8.GetBytes("Af" & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "Af")




            ElseIf (Mid(Message, 1, 3) = "ASK") Then

                RecupéreInventaire = Message
                SocketClient.Send(Encoding.UTF8.GetBytes("GC1" & vbCrLf))



            ElseIf (Mid(Message, 1, 3) = "GCK") Then
                'Invoke(New DInventaire(AddressOf AjoutInventaire))

            ElseIf (Mid(Message, 1, 2) = "Aq") Then
                wait(4000)
                SocketClient.Send(Encoding.UTF8.GetBytes("AL" & vbCrLf))
                Invoke(New dEcrire(AddressOf Ecrire2), "AL")



            End If



        End While




    End Sub

Les fonctions (Ecrire et Ecrire2 ) servent uniquement a afficher les packets envoyés et reçus , ma questions est donc la suivante : ma fonction est elle correct ? manque il des choses pour afficher le packet " ASK " ( inventaire )

Voici les logs actuels :

Debut de la connexion ...
[06:32:05][RECV]HCoiexnovakjnlyidtlolcbrjxmtatdtvk
[06:32:05][SEND]1.29.1....LOGS..
[06:32:05][RECV]Af1|2|0||-1
[06:32:05][RECV]Adbababapapa
[06:32:05][RECV]AxK1187639720|602,3|602,3|602,3
[06:32:05][SEND]AX602
[06:32:05][RECV]AXK50>?:=:8bwZ3986846
[06:32:05][RECV]HG
[06:32:05][SEND]AT
[06:32:05][RECV]ATK0
[06:32:05][SEND]Ak0
[06:32:05][SEND]AV
[06:32:05][RECV]BN
[06:32:05][RECV]AV0
[06:32:05][SEND]Agfr
[06:32:05][SEND]AL
[06:32:05][SEND]Af
[06:32:05][RECV]BN
[06:32:05][RECV]BN
[06:32:05][RECV]Aq1
[06:32:09][SEND]AL
[06:32:09][RECV]ALK1187635185|3|603509;efcfr;114;80;ffffff;0;0;b4,2412~16~2,2411~17~20,,;0;602;;;|623598;crfcrf;1;61;-1;-1;-1;,,,,;0;602;;;|620894;crfcfr;1;70;-1;-1;-1;,,,,;0;602;;;
[06:32:11][SEND]AS603509
[06:32:11][SEND]Af
[06:32:11][RECV]BN
[06:32:11][RECV]Rx0
[06:32:11][RECV]7;1|447;0|226;0|496;0|5;1|275;2|54;1|324;0|103;1|152;1|201;0|471;2|250;0|29;1|299;0|78;0|127;0|446;0|225;0|495;0|4;1|274;0|53;2|323;0|102;1|151;0|200;0|470;0|249;0|28;1|298;0|77;0|126;0|175;0|445;0|224;0|494;0|3;1|273;0|322;0|101;0|150;0|469;2|248;0|27;1|297;0|76;2|125;0|174;0|444;0|223;0|493;0|2;1|272;0|51;1|321;0|100;0|149;0|468;1|247;0|26;0|296;0|75;2|124;0|173;0|443;0|222;0|492;1|1;1|271;0|50;1|320;0|99;0|148;0|467;1|246;0|25;2|295;0|74;1|123;1|442;0|221;0|491;0|0;0
[06:32:16][RECV]TT32

Merci d'avance pour le temps que vous m'accorderez :)

En Général ce genre de problème surgit quand on oublie d’envoyer un paquet (sûrement une question d’activation de frame côté serveur Ankama). As tu sniffé avec WPE pro ou encore Wireshark ?

Il existe aussi un diagramme du protocole 1.29 que tu peux trouver facilement sur gogole. J’esserai de te le trouver une fois chez moi.

Good luck ;)

  • Lugo a répondu à ça.

    tazman59

    En Général ce genre de problème surgit quand on oublie d’envoyer un paquet (sûrement une question d’activation de frame côté serveur Ankama). As tu sniffé avec WPE pro ou encore Wireshark ?

    Il existe aussi un diagramme du protocole 1.29 que tu peux trouver facilement sur gogole. J’esserai de te le trouver une fois chez moi.

    Good luck ;)

    Merci pour ta réponse , c'est peut être un oublie de packet je retesetrais ça avec le diagramme en question si tu le retrouve :)

    Merci pour le diagramme Kyu.

    Apres lecture de ce dernier , je ne vois pas quel packet j'ai pu oublier d'envoyer a part le packet " Ai + id unique client " ( quand on reçoit le packet AV ) mais en lisant les sources de M4x0uBot j'ai remarqué que lui aussi ne l'avait pas dans sa fonction ( ce qui n'empeche pas la bonne réception du packet ASK ( inventaire ) )

    Voila donc la fonction de Maxou :

    
                    ElseIf (Mid(packet, 1, 2) = "AV") Then
    
                        ' Envoi de la langue
                        If (.idServeur = 6002) Then
                            .sock.Envoyer("Agen")
                        Else
                            .sock.Envoyer("Agfr")
                        End If
                        .sock.Envoyer("AL")
                        .sock.Envoyer("Af")

    Et la mienne :

    ElseIf (Mid(Message, 1, 3) = "AV0") Then
    
                    SocketClient.Send(Encoding.UTF8.GetBytes("Agfr" & vbCrLf))
                    Invoke(New dEcrire(AddressOf Ecrire2), "Agfr")
                    SocketClient.Send(Encoding.UTF8.GetBytes("AL" & vbCrLf))
                    Invoke(New dEcrire(AddressOf Ecrire2), "AL")
                    SocketClient.Send(Encoding.UTF8.GetBytes("Af" & vbCrLf))
                    Invoke(New dEcrire(AddressOf Ecrire2), "Af")

    Je présume donc que le probleme ne vient pas d'ici :/

    C'est surement le paquet TT32 qui fait bloquer, d'après les sources c'est le lancement d'un tutoriel.

    Voila les logs pour le meme compte sur M4x0uBot , je ne vois aucun packet de different , mis a part apres le " Rx0 " il recoit directement le TT32 et saute une bonne partie des packets xD

    
    Recv: HCtkcjpxqtvurmcfrqobrcxqjcylwdsmbd
    Send: 1.29.1
    Send: cdvcfrvf# - Crypt -
    Send: Af
    Recv: Af1|2|0||-1
    Recv: Adbababapapa
    Recv: Ac2
    Recv: AH601;1;75;1|602;1;75;1
    Send: Ax
    Recv: AlK0
    Recv: AQQuel+%C3%A9tait+mon+premier+num%C3%A9ro+de+t%C3%A9l%C3%A9phone+%3F
    Recv: AxK1088194445|602,3|602,3|602,3
    Send: AX602
    Recv: AXK50>?:=:8ag73986846
    Recv: HG
    Send: AT3986846
    Recv: ATK0
    Send: Ak0
    Send: AV
    Recv: BN
    Recv: AV0
    Send: Agfr
    Send: AL
    Send: Af
    Recv: BN
    Recv: BN
    Recv: Aq1
    Send: Af
    Recv: ALK1088194028|3|603509;dzedzed;114;80;ffffff;0;0;b4,2412~16~2,2411~17~20,,;0;602;;;|623598;dazda;1;61;-1;-1;-1;,,,,;0;602;;;|620894;dzada;1;70;-1;-1;-1;,,,,;0;602;;;
    Send: AS603509
    Recv: Af0|0|0|1|602
    Recv: BN
    Recv: Rx0
    Recv: ASK|603509|czezzed|114|8|0|80|ffffff|0|0|8145baf~1c54~1~0~7d#2f#0#0#0d0+47,7e#23#0#0#0d0+35,7b#1f#0#0#0d0+31,b2#4#0#0#0d0+4,6f#1#0#0#0d0+1,d4#9#0#0#0d0+9;8145bb0~b4~1~1~6f#1#0#0#0d0+1,80#1#0#0#0d0+1,64#10#14#0#1d5+15,75#1#0#0#0d0+1,9d#11#0#0#0d0+17,7c#19#0#0#0d0+25,7e#26#0#0#0d0+38,3dc#0#0#0#Dakness;8145bb1~1c50~1~2~7c#15#0#0#0d0+21,7e#1e#0#0#0d0+30,73#2#0#0#0d0+2,b2#4#0#0#0d0+4,d3#6#0#0#0d0+6;8145bb2~1c48~1~3~7d#28#0#0#0d0+40,7e#37#0#0#0d0+55,73#5#0#0#0d0+5,b2#4#0#0#0d0+4,70#3#0#0#0d0+3,f4#5#0#0#0d0+5,f3#5#0#0#0d0+5,;8145bb3~9a5~1~4~3d9#0#0#0#Revoltoso,80#1#0#0#0d0+1,6f#1#0#0#0d0+1;8145bb4~1c4c~1~5~7e#14#0#0#0d0+20,77#24#0#0#0d0+36,73#2#0#0#0d0+2,80#1#0#0#0d0+1,b0#7#0#0#0d0+7;8145bb5~1c3c~1~6~7d#2c#0#0#0d0+44,7c#15#0#0#0d0+21,7e#1c#0#0#0d0+28,b0#a#0#0#0d0+10,d5#6#0#0#0d0+6,d4#6#0#0#0d0+6,3ca#0#0#2412,3cd#0#0#10,3cb#0#0#0,3cc#0#0#2,328#283#32d#70a,3ce#0#0#19a;8145bb6~1b53~1~7~7d#4b#0#0#0d0+75,7c#19#0#0#0d0+25,7e#30#0#0#0d0+48,b2#8#0#0#0d0+8,b0#f#0#0#0d0+15,f3#7#0#0#0d0+7,f2#a#0#0#0d0+10,3dc#0#0#0#Jeannos,3d9#0#0#0#Two-dezdez,3ca#0#0#2411,3cd#0#0#11,3cb#0#0#0,3cc#0#0#14,328#283#1a7#924,3ce#0#0#1bc;8145bb7~3cc~1~e~7c#1e#0#0#0d0+30,;8145bb8~224~25~23~258#0#0#1;8145bb9~234b~b~24~33e#0#0#2;8145bba~211d~8~~;8145bbb~2843~2~~;8145bbc~2836~1~~325#287#38c#4bf;8145bbd~21e1~2~~;8145bbe~250f~1~~325#287#461#da;8145bbf~250c~1~~105#2#0#0#0d0+2,fa#2#0#0#0d0+2;8145bc0~1deb~5~~;8145bc1~1ded~5~~;8145bc2~1b3~5~~;8145bc3~1c5e~5~~;8145bc4~1c5f~5~~;8145bc5~1c60~5~~;8145bc6~64c~5~~;8145bc7~1cb~5f~~;8145bc8~96b~1~~76#27#0#0#0d0+39,7e#b#0#0#0d0+11;8145bc9~6a7~1~~9e#315#0#0#0d0+789;8145bca~311~1~~76#19#0#0#0d0+25;8145bcb~1a5c~1~~76#14#0#0#0d0+20;8145bcc~1de2~1~~64#2#4#0#1d3+1,ae#a#0#0#0d0+10;8145bcd~98b~1~~76#16#0#0#0d0+22,7e#e#0#0#0d0+14;8145bce~977~1~~76#2b#0#0#0d0+43;8145bcf~98c~1~~9e#1e8#0#0#0d0+488,7d#35#0#0#0d0+53,73#5#0#0#0d0+5,70#1#0#0#0d0+1;8145bd0~7b6~7~~;8145bd1~6ea~2~~;8145bd2~9fc~1~~;8145bd3~6f1~1~~;8145bd4~220~1~~;8145bd5~221~1~~;8145bd6~6ef~2~~;8145bd7~6ed~1~~;8145bd8~676~1~~;8145bd9~c8~1~~64#b#f#0#1d5+10,6f#1#0#0#0d0+1,7d#28#0#0#0d0+40,7c#19#0#0#0d0+25,9a#28#0#0#0d0+40,73#1#0#0#0d0+1;8145bda~1e99~1~~3e3#83c8#1610b7d5a60#0,3e4#0#0#0#dezfze,3e6#13#1#2f;8145bdb~1db4~1~~-1#0#0#5a,3b4#0#0#0,32c#21ea#21ea#2328;8145bdc~1db4~1~~-1#0#0#5a,3b4#0#0#0,32c#21b4#21b4#2328;8145bdd~1db4~1~~-1#0#0#5a,3b4#0#0#0,32c#20b6#20b6#2328;8145bde~1db4~1~~-1#0#0#5a,3b4#0#0#0,32c#2205#2205#2328;8145bdf~1db4~1~~-1#0#0#5a,3b4#0#0#0,32c#21d0#21d0#2328;8145be0~1e56~1~~-1#0#0#5a,3b4#0#0#0,32c#1ebf#1ebf#2328;8145be1~1e56~1~~-1#0#0#5a,3b4#0#0#0,32c#1e77#1e77#2328;8145be2~1e56~1~~-1#0#0#5a,3b4#0#0#0,32c#1d96#1d96#2328;8145be3~1e56~1~~-1#0#0#5a,3b4#0#0#0,32c#1f0b#1f0b#2328;8145be4~1e56~1~~-1#0#0#5a,3b4#0#0#0,32c#1f02#1f02#2328;8145be5~1e42~1~~-1#0#0#5a,3b4#0#0#0,32c#1f18#1f18#2328;8145be6~1e42~1~~-1#0#0#5a,3b4#0#0#0,32c#21a1#21a1#2328;8145be7~1e42~1~~-1#0#0#5a,3b4#0#0#0,32c#1ce1#1ce1#2328;8145be8~1e42~1~~-1#0#0#5a,3b4#0#0#0,32c#2158#2158#2328;8145be9~1e42~1~~-1#0#0#5a,3b4#0#0#0,32c#2108#2108#2328;
    Send: GC1
    Recv: OS+37|7252;7248;7240;7244;7228|7d#28#0#0,b2#8#0#0,ae#96#0#0
    Recv: OS+6|2469|
    Recv: eL520|0
    Recv: JS|65;171~9~0~0~99,182~8~0~0~99|26;74~4~15~0~2000,71~6~23~0~2000,68~6~27~0~2000,160~4~15~0~2000,73~4~17~0~2000,69~6~25~0~2000,72~6~20~0~2000,23~8~0~0~99
    Recv: JX|65;100;581687;638688;-1;|26;100;581687;585688;-1;
    Recv: JO0|0|0
    Recv: JO1|0|0
    Recv: ZS0
    Recv: cC+*#%$:?pi
    Recv: gSPink Party|8|9d9lc|17|983bz|1
    Recv: al|270;0|49;1|319;0|98;0|147;0|466;1|245;0|515;2|294;0|73;1|122;1|171;1|441;0|220;0|490;1|269;0|48;1|318;0|97;0|146;0|465;0|244;0|514;1|23;2|293;0|72;2|121;1|170;1|440;0|219;0|268;0|47;1|317;0|96;0|145;0|464;2|243;0|513;1|22;1|292;0|71;2|120;1|169;1|218;0|488;1|267;0|46;1|316;2|95;0|144;0|463;0|512;1|21;0|291;0|70;2|119;1|168;1|217;0|487;0|266;0|536;0|45;1|315;2|94;0|143;1|462;0|511;2|20;0|290;0|69;1|339;0|118;2|167;2|216;0|486;1|44;1|314;2|93;2|461;2|510;2|19;0|289;0|68;2|338;0|117;1|166;2|215;0|485;1|43;1|313;0|92;0|141;0|460;0|509;2|18;0|288;0|67;1|337;0|116;1|165;2|214;0|484;1|42;0|312;0|91;1|140;0|459;0|508;2|17;0|287;0|66;1|336;0|115;1|164;2|213;0|483;1|41;0|311;0|139;0|507;2|16;0|286;0|65;1|335;0|114;2|163;2|212;0|482;1|261;0|40;0|310;0|89;0|138;0|457;2|236;0|506;2|15;0|285;0|64;1|334;2|113;1|162;2|211;0|481;1|260;0|39;0|309;0|88;0|137;0|235;2|505;2|14;0|284;0|63;1|333;0|112;1|161;2|210;0|480;1|259;0|38;2|308;0|87;0|136;0|455;1|234;2|504;2|13;0|62;1|332;0|111;1|209;2|479;1|258;0|37;1|307;0|86;0|135;0|454;1|233;2|503;2|12;1|61;2|331;0|110;0|159;0|208;0|478;1|257;0|306;0|85;0|134;0|453;1|232;2|502;2|11;2|281;0|60;0|330;0|109;1|158;0|207;0|477;1|256;0|35;0|84;0|133;0|182;2|452;0|231;2|501;0|10;1|280;2|59;2|329;0|108;1|157;0|206;0|476;1|255;0|34;0|304;0|83;0|132;0|181;0|451;0|230;2|500;1|9;1|279;1|328;0|107;1|156;0|205;0|254;0|33;1|303;0|82;0|131;0|180;0|450;0|229;0|499;2|8;1|278;0|57;2|327;0|106;1|155;0|204;0|474;0|253;2|32;1|302;0|81;2|130;0|179;1|449;0|228;0|498;0|7;1|277;1|56;1|326;0|105;1|154;0|203;0|473;0|252;0|31;1|301;0|80;2|129;0|178;1|448;0|227;0|497;0|6;1|276;1|55;2|325;0|153;0|202;0|472;2|251;0|30;0|300;0|79;2|128;0|177;1|447;0|226;0|496;0|5;1|275;2|54;2|324;0|103;1|152;1|201;0|471;2|250;0|29;2|299;0|78;0|127;0|446;0|225;0|495;0|4;1|274;0|53;2|323;0|102;1|151;0|200;0|470;0|249;0|28;1|298;0|77;0|126;0|175;0|445;0|224;0|494;0|3;1|273;0|322;0|101;0|150;0|469;2|248;0|27;1|297;0|76;2|125;0|174;0|444;0|223;0|493;0|2;1|272;0|51;1|321;0|100;0|149;0|468;1|247;0|26;0|296;0|75;2|124;0|173;0|443;0|222;0|492;1|1;1|271;0|50;1|320;0|99;0|148;0|467;1|246;0|25;2|295;0|74;1|123;2|442;0|221;0|491;0|0;0
    Recv: SLo+
    Recv: SL156~5~b;149~5~c;142~6~d;151~4~e;148~1~f;158~3~g;150~5~h;153~5~i;159~5~j;155~1~k;143~6~l;144~1~m;147~1~n;160~5~o;145~1~_;154~1~_;152~1~_;413~1~_;141~5~_;146~1~_;157~1~_;
    Recv: AR6bk
    Recv: Ow1581|4000
    Recv: FO-
    Recv: Im189
    Recv: Im0152;2017~12~30~22~07~84.103.63.171
    Recv: Im0153;84.103.63.171
    Recv: OCO8145bb
    Recv: 5~1c3c~1~6~7d#2c#0#0#0d0+44,7c#15#0#0#0d0+21,7e#1c#0#0#0d0+28,b0#a#0#0#0d0+10,d5#6#0#0#0d0+6,d4#6#0#0#0d0+6,3ca#0#0#2412,3cd#0#0#10,3cb#0#0#0,3cc#0#0#2,328#283#32d#70a,3ce#0#0#19a;
    Recv: OCO8145bb6~1b53~1~7~7d#4b#0#0#0d0+75,7c#19#0#0#0d0+25,7e#30#0#0#0d0+48,b2#8#0#0#0d0+8,b0#f#0#0#0d0+15,f3#7#0#0#0d0+7,f2#a#0#0#0d0+10,3dc#0#0#0#Jeannos,3d9#0#0#0#Two-Temple,3ca#0#0#2411,3cd#0#0#11,3cb#0#0#0,3cc#0#0#14,328#283#1a7#924,3ce#0#0#1bc;
    Recv: GCK|1|rgrtgtr
    Recv: As164327018,163640000,169655000|121761|1|4|0~0,0,0,0,0,0|866,866|10000,10000|471|135|7,3,0,0,10|3,3,0,0,6|0,-17,0,0|0,246,0,0|188,122,0,0|0,31,0,0|0,36,0,0|0,254,0,0|0,1,0,0|1,0,0,0|0,3,0,0|0,0,0,0|0,0,0,0|0,0,0,0|0,28,0,0|0,0,0,0|0,0,0,0|0,0,0,0|0,9,0,0|0,0,0,0|47,30,0,0|47,30,0,0|0,5,0,0|0,0,0,0|0,0,0,0|0,0,0,0|0,0,0,0|0,0,0,0|0,0,0,0|0,0,0,0|0,0,0,0|0,6,0,0|0,0,0,0|0,0,0,0|0,10,0,0|0,15,0,0|0,0,0,0|0,0,0,0|0,12,0,0|0,6,0,0|0,0,0,0|0,0,0,0|16
    Send: BD
    Recv: ILS2000
    Recv: GDM|4206|0706131721|2c5334643656623a5e2361215c25323551287b644f323233695f757c232e3e5d473b72702a2a732c253242783422676e7b38356f2532422532423e3c705940766154473d40234e225236457e3543563829344b6669473f5c253242482e6d5d677c4476404639507248707736445c4872216821205a77674b287127753e422f767a5d5f3041663f6c7452783a3e6f202f31253242537a7e42705a4178585b7c6e6a2763642678214c5f523d29632a57422532423a7951646b503934494b4c796843
    Send: GI
    Recv: BT1514671778636
    Recv: fC0
    Recv: GDO+652;7694;1;8094;9000
    Recv: GDO+672;7694;1;8215;9000
    Recv: GDO+671;7694;1;8417;9000
    Recv: GDO+652;7694;1;8090;9000
    Recv: GDO+596;7694;1;7720;9000
    Recv: GDO+633;7694;1;8157;9000
    Recv: GDO+672;7694;1;8211;9000
    Recv: GDO+671;7694;1;8413;9000
    Recv: GDO+672;7694;1;8207;9000
    Recv: GDO+671;7694;1;8409;9000
    Recv: GDO+672;7694;1;8203;9000
    Recv: GDO+652;7694;1;8086;9000
    Recv: GDO+652;7694;1;8082;9000
    Recv: GDO+672;7694;1;8201;9000
    Recv: GDO+652;7694;1;8078;9000
    Recv: GDO+596;7694;1;7716;9000
    Recv: GDO+633;7694;1;8155;9000
    Recv: BD647|11|30
    Recv: GA;1;-18;aknfj6
    Recv: hP245|kankansey;0
    Recv: hP247|Nox-zz;1
    Recv: hP247|Nox-zz;1
    Recv: hP246|iEgnima;0
    Recv: hP248|teamdof;0
    Recv: Rp6534;0;5;5;Pink Party;8,9d9lc,17,983bz
    Recv: GDO+596;7694;1;7716;9000|672;7694;1;8201;9000|671;7694;1;8409;9000|652;7694;1;8078;9000|633;7694;1;8155;9000
    Recv: GM|+579;1;0;603509;dezfze;8;80^100;0;0,0,0,603623;ffffff;0;0;b4,2412~16~2,2411~17~20,,;1;;;Pink Party;8,9d9lc,17,983bz;0;;
    Recv: GM|+63;1;200;-1;296,296;-3;1192^95,1192^100;40,60;-1,-1,-1;0,0,0,0;-1,-1,-1;0,0,0,0;
    Recv: GM|+653;1;-1;-19;;-9;7002^100;dezfze;5;43;100|+634;1;-1;-18;;-9;7002^100;dezfze;5;43;100|+653;1;-1;-17;;-9;7002^100;dezfze;5;43;100|+653;1;-1;-16;;-9;7002^100;dezfze;5;43;100|+615;1;-1;-15;;-9;7002^100;dezfze;5;43;100
    Recv: GDK
    Recv: EW+603509|
    Recv: GDE|652;2
    Recv: TT32
    
    

    Avant d’envoyer un AX602 il envoie un Ax juste après la réception du AH et pas toi, c’est peut être une bêtise du genre

    Pas faux mais dans mon cas je ne le recois meme pas le " AH " xD

    On m'a parlé de la façon dont je fais mes sockets :

       SocketClient = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) 'Je refais mon SocketClient.
    

    Faut il peut etre passé par du async ?

    Jettes un œil à la classe TcpClient c’est le plus simple pour débuter ;)

    quitte a refaire tes sockets , profites en pour faire un MITM (ou un genre de proxy locale) au moins pour le debug , pour sniffer , tu seras au moins certain que tout sera envoyé/recu puis ensuite tu vires la partie "serveur" si tu veux revenir a un bot "normal"

    • Lugo a répondu à ça.

      Kyu

      [Image Introuvable]

      Pourrais-je savoir avec quel logiciel cela a été fait enfin si ça n'a pas été fait à la main ?

      Merci !

      ToOnS

      quitte a refaire tes sockets , profites en pour faire un MITM (ou un genre de proxy locale) au moins pour le debug , pour sniffer , tu seras au moins certain que tout sera envoyé/recu puis ensuite tu vires la partie "serveur" si tu veux revenir a un bot "normal"

      Question béte certe ( et je m'en excuse d'ailleurs je debute xD ) , techniquement quel est la difference entre un MITM et un "normal" ? (Je sais que MITM = utiliser le client ? ) mais ma question est plus orienté niveau code , comment par exemple gérer la connexion avec le client offi en VB ( ou en C#) ?

      un MITM c'est en realité un "normal" avec seulement en plus une partie "serveur" (le serveur sert juste a chopper les paquets du client officiel et les passer au bot "normal" (donc au client du bot) qui lui va les envoyer au serveur officiel pour boucler la boucle et pareil dans l'autre sens) ca a surtout l'avantage de ne pas avoir a s'occuper de tout les paquets :

      un paquet (peu importe qu'il vienne du serveur officiel ou du client officiel) qui t'interresse pas parceque ca sert pas a recolter une herbe magique ou je ne sais quelle connerie (enfin qui sert pas a ton bot) alors tu le laisses passer s'en t'en occuper , tu n'as meme pas besoin de savoir a quoi il sert ni de coder quoique ce soit pour eux

      tu as juste a filtrer les paquets qui t'interressent et coder seulement pour ceux la , tu gagnes donc enormement de temps

      pour gerer la connexion avec le client officiel il faut le forcer a se connecter sur 127.0.0.1 (je sais plus du tout comment ca marche sur 1.29 , d'ailleurs je sais plus non plus comment ca marche sur 2.XX pour les forcer a se connecter sur 127.0.0.1 mais c'est pas tres difficile ou au pire tu utilises ca https://korben.info/logiciel-interface-reseau.html) et apres niveau code c'est tout bete , c'est ca :

      https://code.msdn.microsoft.com/windowsdesktop/Simple-Chat-Application-3f7f4ec5

      sauf que biensur a la place de "papa : a table , arrete de trainer sur cadernis" ca sera des paquets (et ca tombe super bien parceque sur 1.29 c'est aussi des strings)

      Pour faire du MITM et forcer le client à se connecter en local, il faut modifier la config.xml :

      <conf name="En ligne">
              <connserver name="NOM_CHOISI" ip="127.0.0.1" port="PORT_CHOISI" />
              <dataserver url="data/" type="local" priority="3" />
              <dataserver url="http://staticns.ankama.com/dofus/gamedata/dofus/" priority="1" />
              <dataserver url="http://gamedata.ankama-games.com/dofus/" priority="0" />
          </conf>

      Il y a juste la balise <connserver/> a rajouter normalement.

      Merci pour vos réponse :D

      Je vais test tous ça et up le sujet en cas de pépin.

      7 jours plus tard

      Du coup petit up , j'ai essayer de faire une classe qui me connecte au login en asynchrone mais je ne recois pas le tout premier packet avant l'envoi des ID ( enfaite je ne recois vraiment rien du tout )

      Pour le moment mon but est juste de recevoir et d'afficher le tout premier packet

      Voici mon code complet , si quelqu'un peut me dire la ou sa cloche :

      Imports System.Net.Sockets
      Imports System.Threading
      Imports System.Net
      Imports System.Text
      
      Public Class Socket_Connect
      
          Private Const port As Integer = 443
      
          ' ManualResetEvent instances signal completion.
          Private Shared connectDone As New ManualResetEvent(False)
          Private Shared sendDone As New ManualResetEvent(False)
          Private Shared receiveDone As New ManualResetEvent(False)
          Private Shared Connected As Boolean = False
      
          Private Shared response As String = String.Empty
      
      
          Public Sub Connexion()
              Dim ipAddress As IPAddress = (IPAddress.Parse("80.239.173.166"))
              Dim remoteEP As New IPEndPoint(ipAddress, port)
              Dim client As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
              Try
                  client.BeginConnect(remoteEP, New AsyncCallback(AddressOf ConnectCallback), client)
                  connectDone.WaitOne()
                  Logs(response)
                  Logs("Connexion effectuée")
      
              Catch ex As Exception
                  Logs("Erreur connexion client")
              End Try
      
              connectDone.WaitOne()
      
      
              Receive(client)
              'receiveDone.WaitOne()
              Logs(response)
              client.Shutdown(SocketShutdown.Both)
              client.Close()
          End Sub
      
      
          Private Sub ConnectCallback(ByVal ar As IAsyncResult)
              ' Retrieve the socket from the state object.
              Dim client As Socket = CType(ar.AsyncState, Socket)
      
              ' Complete the connection.
              Receive(client)
              client.EndConnect(ar)
      
      
      
              Logs("Socket connected to {0}" & client.RemoteEndPoint.ToString())
      
              connectDone.Set()
          End Sub 'ConnectCallback
      
      
          Private Sub Receive(ByVal client As Socket)
      
              ' Create the state object.
              Dim state As New StateObject
              state.workSocket = client
      
              client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, New AsyncCallback(AddressOf ReceiveCallback), state)
          End Sub 'Receive
      
      
          Private Sub ReceiveCallback(ByVal ar As IAsyncResult)
      
      
              Dim state As StateObject = CType(ar.AsyncState, StateObject)
              Dim client As Socket = state.workSocket
              Dim bytesRead As Integer = 0
      
              ' Read data from the remote device.
      
      
              Try
                  bytesRead = client.EndReceive(ar)
              Catch ex As Exception
                  Logs("Erreur lors de la reception de donnée")
              End Try
      
              If bytesRead > 0 Then
                  state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead))
      
                  ' Get the rest of the data.
                  client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, New AsyncCallback(AddressOf ReceiveCallback), state)
              Else
                  ' All the data has arrived; put it in response.
                  If state.sb.Length > 1 Then
                      response = state.sb.ToString()
                      Logs(response)
                  End If
                  ' Signal that all bytes have been received.
                  receiveDone.Set()
              End If
          End Sub 'ReceiveCallback
      
      
          Private Sub Send(ByVal client As Socket, ByVal data As String)
              Dim byteData As Byte() = Encoding.ASCII.GetBytes(data)
      
              client.BeginSend(byteData, 0, byteData.Length, 0, New AsyncCallback(AddressOf SendCallback), client)
          End Sub 'Send
      
      
          Private Sub SendCallback(ByVal ar As IAsyncResult)
              Dim client As Socket = CType(ar.AsyncState, Socket)
      
              Dim bytesSent As Integer = client.EndSend(ar)
              MsgBox("Sent {0} bytes to server.", bytesSent)
      
              sendDone.Set()
          End Sub 'SendCallback
      
          Public Sub Logs(ByVal data As String)
              Form1.RichTextBox1.Text &= Environment.NewLine & data
          End Sub
      
      
         
      
      End Class
      

      7 jours plus tard

      Petit up si quelqu'un a une solution s'il vous plait :)

      Je ne me rappel plus du 1.29 je te conseil d'essayer de voir avec wireshark pour voir dans l'ordre ce que tu es sensé recevoir, ce que tu envoies etc etc.

      À partir de là tu prends le tout premier message (qu'il soit reçu et envoyer) et tu fais en conséquence, tu regardes si c'est un message reçu vérifie bien l'ip.

      Après ... L'ip est peut être dynamique donc difficile à repéré sur shark donc on peut chercher une plage d'ip par exemple "80.239.173.xxx" en faisant simplement:

      ip.dst == 80.239.173.166/11 || ip.src == 80.239.173.166/11

      (Pour ceux qui souhaitent l'utilisez en 2.X il faut mettre /12 car l'ip sans la plage à 1 chiffre de plus)