Bonjour à tous, nous sommes partis pour la seconde partie du tuto pour créer son MITM pour Dofus2.0
Premier schéma :
Sachez que la classe Stream est une classe avec laquelle nous pourrons gérer la partie communication (Envoie/Réception ...)
Second schéma (partie interne de l'application) :
Comme vous pouvez le constater, l'avantage de ce procédé et le fait que les paquets passent tous par un seul et même chemin (ici le NetworkManager) avant d'être envoyés, ce qui permet de les traiter très facilement en rejoutant par exemple un parser.
1) Les serveurs d'écoutes:
Une chose à savoir, c'est que Dofus ne contient pas qu'un seul serveur... En vérité, il y a un serveur dit de "Login", puis un serveur pour chaque serveur "In Game" (Jiva, Raval ...) C'est pour cela que nous devons lancer deux serveurs, un pour que le client puisse se connecter au serveur de "Login", et un autre pour que le client puisse se connecter à un serveur "In Game"
Pour celà, nous allons créer une classe, "Server" permettant de lancer nos serveurs (Du deux en un ! :champagne:)
Maintenant il ne vous reste plus qu'a créer et lancer les deux serveurs. Vous pouvez ensuite injecter la Dll No.Ankama.Dll, téléchargée auparavant (Personnelement j'utilise Extreme-Injector, qui est gratuit Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!).
Lancez maintenant le MITM et essayez de vous connecter avec votre Dofus patché, MAGIE, la console affiche quelque chose :hophopeeha:
1ère partie: Les principes basiques
Premier schéma :
Sachez que la classe Stream est une classe avec laquelle nous pourrons gérer la partie communication (Envoie/Réception ...)
Second schéma (partie interne de l'application) :
Comme vous pouvez le constater, l'avantage de ce procédé et le fait que les paquets passent tous par un seul et même chemin (ici le NetworkManager) avant d'être envoyés, ce qui permet de les traiter très facilement en rejoutant par exemple un parser.
2ème partie: Création de la base
1) Les serveurs d'écoutes:
Une chose à savoir, c'est que Dofus ne contient pas qu'un seul serveur... En vérité, il y a un serveur dit de "Login", puis un serveur pour chaque serveur "In Game" (Jiva, Raval ...) C'est pour cela que nous devons lancer deux serveurs, un pour que le client puisse se connecter au serveur de "Login", et un autre pour que le client puisse se connecter à un serveur "In Game"
Pour celà, nous allons créer une classe, "Server" permettant de lancer nos serveurs (Du deux en un ! :champagne:)
Imports System.Net.Sockets
Namespace Network.Server
Public Class Server
#Region "Public Vars"
' Le type sert à savoir si le serveur est destiné à la partie Login ou Game
' True = Login
' False = Game
Public MyType As Boolean = False
Public IsStarted As Boolean = False
#End Region
#Region "Private Vars"
Private MyTcpListener As TcpListener
#End Region
Public Sub New(ByVal type As Boolean)
MyType = type
End Sub
Public Function Start() As Boolean
Try
Select Case MyType
Case False 'Pour le serveur de login
MyTcpListener = New TcpListener(443)
MyTcpListener.Start()
Case True 'Pour le serveur de jeu
MyTcpListener = New TcpListener(5555)
MyTcpListener.Start()
End Select
IsStarted = True
Dim ThreadBeginWait As New Threading.Thread(AddressOf BeginWait)
ThreadBeginWait.Start()
Return True
Catch ex As Exception
Return False
End Try
Return False
End Function
Private Sub BeginWait()
While IsStarted
Dim NewClient As TcpClient = MyTcpListener.AcceptTcpClient 'Réception d'un nouveau client, le Client officiel se connecte au MITM
Other.Log.Log.Write("Un client se connecte au MITM", ConsoleColor.White, "Info", ConsoleColor.White)
'Ici on créera une nouvelle instance de la classe "Client"
End While
End Sub
End Class
End Namespace
Namespace Network.Server
Public Class Server
#Region "Public Vars"
' Le type sert à savoir si le serveur est destiné à la partie Login ou Game
' True = Login
' False = Game
Public MyType As Boolean = False
Public IsStarted As Boolean = False
#End Region
#Region "Private Vars"
Private MyTcpListener As TcpListener
#End Region
Public Sub New(ByVal type As Boolean)
MyType = type
End Sub
Public Function Start() As Boolean
Try
Select Case MyType
Case False 'Pour le serveur de login
MyTcpListener = New TcpListener(443)
MyTcpListener.Start()
Case True 'Pour le serveur de jeu
MyTcpListener = New TcpListener(5555)
MyTcpListener.Start()
End Select
IsStarted = True
Dim ThreadBeginWait As New Threading.Thread(AddressOf BeginWait)
ThreadBeginWait.Start()
Return True
Catch ex As Exception
Return False
End Try
Return False
End Function
Private Sub BeginWait()
While IsStarted
Dim NewClient As TcpClient = MyTcpListener.AcceptTcpClient 'Réception d'un nouveau client, le Client officiel se connecte au MITM
Other.Log.Log.Write("Un client se connecte au MITM", ConsoleColor.White, "Info", ConsoleColor.White)
'Ici on créera une nouvelle instance de la classe "Client"
End While
End Sub
End Class
End Namespace
Namespace Other.Log
Public Class Log
Shared Sub Write(ByVal message As String, ByVal color As ConsoleColor, Optional ByVal Suffix As String = "", Optional ByVal SuffixColor As ConsoleColor = Nothing)
Threading.Thread.Sleep(10)
If Suffix <> "" Then
Console.ForegroundColor = SuffixColor
Console.Write("[" & Suffix & "] ")
Console.ForegroundColor = color
Console.WriteLine(message)
Else
Console.ForegroundColor = color
Console.WriteLine(message)
End If
End Sub
End Class
End Namespace
Public Class Log
Shared Sub Write(ByVal message As String, ByVal color As ConsoleColor, Optional ByVal Suffix As String = "", Optional ByVal SuffixColor As ConsoleColor = Nothing)
Threading.Thread.Sleep(10)
If Suffix <> "" Then
Console.ForegroundColor = SuffixColor
Console.Write("[" & Suffix & "] ")
Console.ForegroundColor = color
Console.WriteLine(message)
Else
Console.ForegroundColor = color
Console.WriteLine(message)
End If
End Sub
End Class
End Namespace
Maintenant il ne vous reste plus qu'a créer et lancer les deux serveurs. Vous pouvez ensuite injecter la Dll No.Ankama.Dll, téléchargée auparavant (Personnelement j'utilise Extreme-Injector, qui est gratuit Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!).
Lancez maintenant le MITM et essayez de vous connecter avec votre Dofus patché, MAGIE, la console affiche quelque chose :hophopeeha:
La suite arrive prochainement !
Last edited: