Bonjour Cadernis, aujourd'hui je vous fait un partage. Il s'agit d'un DofusInvoker patch pour la dernière version de Dofus actuellement: 2.44.5:2 utilisable dans le cadre d'un émulateur.
Ceci a été patch par moi-même. Je ferais également un tutoriel pour pouvoir patch vous même les versions récentes si j'ai le temps.
Nous procédons avec RawDataMessage lors de la connexion, ce qui signifie que la sécurité est compromise car les identifiants sont envoyés en clair.
Téléchargements
RawDataMessage.swf
DofusInvoker.swf
Client 2.44.5:2 - C'est la dernière version, vous pouvez télécharger l'officiel en attendant l'upload du client.
Modifications
* Vous pouvez modifier l'IP de la config (L'IP des serveurs officiels seront refusées).
* Vous pouvez envoyer RawDataMessage (6253) à n'importe quel moment.
* Le ticket s'envoie d'une manière différente.
Connexion
Lorsque le client se connecte, vous envoyez ProtocolRequired comme d'habitude. Toutefois, au lieu d'envoyer HelloConnectMessage tout de suite après, vous devrez envoyer directement RawDataMessage contenant les bytes du fichier que vous avez au préalable téléchargé précédemment (RawDataMessage.swf)
Ce qui nous donnerait en considérant que nous ayons ajouté le fichier dans les ressources
Private Sub OnConnect(Client As Handle)
Client.Send(New ProtocolRequired(1797, 1803))
Client.Send(New RawDataMessage(My.Resources.RawDataMessage))
End Sub
Ou alors si vous préférez la méthode classique :
Client.Send(New RawDataMessage(File.ReadAllBytes("Chemin\Vers\RawDataMessage.swf")))
Le client vous renverra un message personnalisé ayant pour Id = 888.
Public Class IdentificationMessage
Inherits Readable
Public Overrides Property Id As UInteger = 888
Public Property AutoConnect As Boolean
Public Property Lang As String
Public Property Username As String
Public Property Password As String
Public Property ServerId As Short
Public Property ServerIp As String
Public Property HardwareId As String
Public Overrides Sub Deserialize(Reader As BigEndianReader)
Dim Flag As Byte = Reader.ReadByte
AutoConnect = BooleanByteWrapper.GetFlag(Flag, 0)
Lang = Reader.ReadUTF
Username = Reader.ReadUTF
Password = Reader.ReadUTF
ServerId = Reader.ReadShort
ServerIp = Reader.ReadUTF
HardwareId = Reader.ReadUTF
End Sub
End Class
Tout se déroule normalement pour la suite.
Ticket
Pour envoyer le ticket lorsque vous devez envoyer SelectedServerDataMessage.
Dim Generated As String = Guid.NewGuid.ToString("N")
Client.Send(New SelectedServerDataMessage(Message.ServerId, "127.0.0.1", 5556, True, Encoding.ASCII.GetBytes(Generated)))
Pour recevoir le ticket lorsque le client vous envoie AuthenticationTicketMessage.
Dim Ticket As String = Dispatch(Message.Ticket)
Public Function Dispatch(Ticket As String) As String
Return Encoding.ASCII.GetString(Ticket.Split(CChar(",")).Select(Function(S) CByte(S)).ToArray)
End Function
Vous êtes prêts !
Vous n'avez plus d'excuse, hop hop hop on pisse le code et plus vite que ça
![[Image Introuvable]](https://image.prntscr.com/image/xhmGEcH3TxqpO9eE3W9ovw.png)