1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2013
    Messages : 267
    Points : 0
    Points
    0

    Par défaut Passer les lettres & les chiffres

    Bonjour,

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Teste(ByVal password As String, ByVal intMax As Integer)
            Dim Allchars As String = "abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
            Dim x As Integer = 0
            Do While (x <= intMax)
                For Each ch As Char In Allchars
                    If (ch = password) Then
                        TextBox3.Text = ch
                        Exit For
                    Else
                        TextBox2.Text = ch
                        TextBox2.Refresh()
                    End If
                Next
                x = x + 1
            Loop
        End Sub
    j'ai probléme avec la code, il s'arret a la dernière chiffre de mon allchars . je voudrais savoir comment passer aprés une lettre passer 2 lettre aprés 3 lettre ...etc par rapport password.
    exemple : a à 9 , aa à 99 , aaa à 999 ....etc

    Merci de votre réponse,

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    octobre 2013
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2013
    Messages : 1 252
    Points : 2 704
    Points
    2 704

    Par défaut

    Quel est le but souhaité? J'ai pas compris le problème...

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2013
    Messages : 267
    Points : 0
    Points
    0

    Par défaut

    Le but par exemple password = 123 avec teste("123",3) comme un bruteforce , il recherche à 1 à 3 chiffre par rapport a password avec des chiffres et des lettres
    voici un exemple un video :

    es ce que vous avez compris?

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2011
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 1 814
    Points : 3 390
    Points
    3 390

    Par défaut

    On peut comparer un char et un string en VB.NET ? Ça fait quoi comme comparo au final ?

    Sinon, si j'ai compris le besoin :
    - tu veux générer une chaine de 1 à intMax caractères,
    - en passant par tous les compositions possibles,
    - et comparer avec password pour voir si t'as trouvé le bon.

    C'est ce qui ressort de la vidéo mais c'est pas franchement ce vers quoi ton code tend.
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2013
    Messages : 267
    Points : 0
    Points
    0

    Par défaut

    Bonjour,

    Sinon, si j'ai compris le besoin :
    - tu veux générer une chaine de 1 à intMax caractères,
    - en passant par tous les compositions possibles,
    - et comparer avec password pour voir si t'as trouvé le bon.
    oui, ç'est ça que je demande jopopmk.

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     Private Sub Teste(ByVal password As String, ByVal intMin As Integer, ByVal intMax As Integer)
            Dim Allchars() As Char = "abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".ToArray
            If intMax = 0 Then
                String.IsNullOrEmpty(password)
            Else
                Dim i As Integer = intMin
                Do While (i < intMax)
                    For Each ch As Char In Allchars
                        If (ch = password) Then
                            TextBox3.Text = ch
                            Exit For
                        Else
                            TextBox2.Text = ch
                            TextBox2.Refresh()
                        End If
                    Next
                    i = (i + 1)
                Loop
            End If
    il manque quoi pour passer aprés aa,ab,ac aprés aaa,aab aac.....etc?
    Merci de votre réponse,

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    octobre 2013
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2013
    Messages : 1 252
    Points : 2 704
    Points
    2 704

    Par défaut

    C'est de l'algo pur et dur. Il faut donc que tu prennes un papier et un crayon pour essayer de trouver les bonnes combinaisons

    Si tu veux jouer la carte de la facilité, ce genre d'algo devrait se trouver rapidement sur le net.

    PS : ta boucle While...Loop pourrait être remplacé par une boucle For...Next. Moins de risque de boucler à l'infini.

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2011
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 1 814
    Points : 3 390
    Points
    3 390

    Par défaut

    Comme ZenZiTone ; en plus l'algo c'est la partie fun du job

    Ce que tu cherches à faire est un poil plus complexe que la vidéo (enfin de ce que j'imagine du code derrière cette vidéo). Le gars ne fait que tester des valeurs numériques, il lui suffit donc d'incrémenter une variable et de la parser en string (ou inversement, parser le pass en int).
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    mars 2012
    Messages
    675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : mars 2012
    Messages : 675
    Points : 922
    Points
    922

    Par défaut

    Salut

    j'avais écrit un code qui donne les combinaisons et permutations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    Public Class ClassCombinatoric
     
        Private permlist As New List(Of String)
        Public Function GetPerms(ByVal mystring As String) As List(Of String)
            'donne toutes les permutations sans doublons d'une chaine de caractères
            'le temps traitement et la mémoire exigés dependent de la longueur de la chaine 
     
            permlist.Add(mystring)
            permutation(mystring)
     
            Dim letters As String = String.Empty
            Dim duplicate As Boolean = False
            For l = 0 To mystring.Count - 1
                If Not letters.Contains(mystring(l)) Then
                    letters &= mystring(l)
                Else
                    duplicate = True
                    Exit For
                End If
            Next
            If duplicate Then
                EraseDuplicateString()
            End If
     
            Return permlist
     
        End Function
        Private Function rotateright(ByVal str As String) As String
            'shift right  of the string parameter:  last characters goes to the first place
            Dim strret As String = String.Empty
            Return str.Substring(str.Length - 1) & str.Substring(0, str.Length - 1)
     
        End Function
     
        Private Sub EraseDuplicateString()
            'remove dupicate strings
            permlist = permlist.Distinct().ToList
     
        End Sub
     
     
        Private Sub permutation(ByVal str As String)
            ' on ajoute le premier string dans le tableau perms
            ' rotation du mot vers la droite et ajoute au tableau perms
            ' on refait l'opération longueur du string -1
            ' on recommence avec tout les strings de perms mais chaque mot commence un caratère 
            ' à droite 
            'ex  bnok 
            ' le mot = bnok
            ' après 3  rotation on a kbno okbn nokb 
            ' on reprend la sous chaine nok de bnok
            'après 2 rotations kno okn
            Dim prefix As String = String.Empty
            Dim group As Integer
            Dim str1 As String
            Dim count, pointer, last, permutcounter As Integer
            Dim x As Integer
            group = 0
            pointer = 0
            count = 0
            last = 1
     
            permutcounter = permlist(0).Length - 1
            x = permlist(0).Length
     
            While group <= permlist(0).Length - 2
                prefix = permlist(pointer).Substring(0, group)
                str1 = permlist(pointer).Substring(group)
                For iter As Integer = 0 To permlist(pointer).Length - (2 + group)
                    count += 1
                    permlist.Add(prefix & rotateright(str1))
                    str1 = permlist(count).Substring(group)
                Next
     
                If count + 1 = last + (permutcounter) * last Then
                    group += 1
                    last = count + 1
                    pointer = 0
                    permutcounter -= 1
                    x = count + 1
                End If
     
                If count + 1 = x + permutcounter Then
                    pointer += 1
                    x = count + 1
                End If
     
     
            End While
     
        End Sub
     
        Public Function MakeCombination(ByVal word As String) As List(Of String)
     
            'donne toutes les combinaisons d'une chaine de caractères
            'le temps traitement et la mémoire exigés dependent de la longueur de la chaine 
            'combinaison de 1 2 3 4 5 6 7 8 ..N lettres 
            ' si j'ai un chaine de N lettres j'ai donc 2^N -1 combinaisons
            ' mot 1 lettre = N!/((N-1)! * 1!) 
            ' 2 lettres = N!/((N-2)! * 2!)
            ' 3 lettres = N!/((N-3)! * 3!)
            ' 4 lettres = N!/((N-4)! * 4!) 
            ' 5 lettres = N!/((N-5)! * 5!) 
            ' 6 lettres = N!/((N-6)! * 7!) 
            ' 7 lettres = N!/((N-7)! * 7!) 
            ' 8 lettres = N!/((N-8)! * 8!)
            ' N lettres = N!/((N-N)! * N!) 
     
            ' pour obtenir toutes les combinaisons on se sert d'une boucle qui iter varie de 1 à 2^N -1 
            ' iter est converti en binaire et devancé par des 0 de façon à obtenir toujours N chiffres 
            ' on remplace les 1 du nombre binaire par le caractère du meme index de la chaine
            ' on retire les 0 de la chaine 
     
            Dim strbinary As String
     
            Dim binarydigit As Char()
            Dim list1 As New List(Of String)
            For iter = 1 To 2 ^ (word.Length)
     
                strbinary = Convert.ToString(Convert.ToInt32(iter), 2)
                strbinary = strbinary.PadLeft(word.Length, "0"c)
                binarydigit = strbinary.ToCharArray
                For iter2 = 0 To binarydigit.Length - 1
                    If binarydigit(iter2) = "1" Then
                        binarydigit(iter2) = word(iter2)
     
                    End If
                Next
                strbinary = binarydigit
                strbinary = strbinary.Replace("0", String.Empty)
                If strbinary.Length > 0 Then
                    list1.Add(strbinary)
                End If
            Next
            list1 = list1.Distinct.ToList
            list1.Sort()
            Return list1
        End Function
    End Class

  9. #9
    Membre expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    1 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 500
    Points : 3 091
    Points
    3 091
    Billets dans le blog
    6

    Par défaut

    Citation Envoyé par shayw Voir le message
    Salut

    j'avais écrit un code qui donne les combinaisons et permutations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    Public Class ClassCombinatoric
     
        Private permlist As New List(Of String)
        Public Function GetPerms(ByVal mystring As String) As List(Of String)
            'donne toutes les permutations sans doublons d'une chaine de caractères
            'le temps traitement et la mémoire exigés dependent de la longueur de la chaine 
     
            permlist.Add(mystring)
            permutation(mystring)
     
            Dim letters As String = String.Empty
            Dim duplicate As Boolean = False
            For l = 0 To mystring.Count - 1
                If Not letters.Contains(mystring(l)) Then
                    letters &= mystring(l)
                Else
                    duplicate = True
                    Exit For
                End If
            Next
            If duplicate Then
                EraseDuplicateString()
            End If
     
            Return permlist
     
        End Function
        Private Function rotateright(ByVal str As String) As String
            'shift right  of the string parameter:  last characters goes to the first place
            Dim strret As String = String.Empty
            Return str.Substring(str.Length - 1) & str.Substring(0, str.Length - 1)
     
        End Function
     
        Private Sub EraseDuplicateString()
            'remove dupicate strings
            permlist = permlist.Distinct().ToList
     
        End Sub
     
     
        Private Sub permutation(ByVal str As String)
            ' on ajoute le premier string dans le tableau perms
            ' rotation du mot vers la droite et ajoute au tableau perms
            ' on refait l'opération longueur du string -1
            ' on recommence avec tout les strings de perms mais chaque mot commence un caratère 
            ' à droite 
            'ex  bnok 
            ' le mot = bnok
            ' après 3  rotation on a kbno okbn nokb 
            ' on reprend la sous chaine nok de bnok
            'après 2 rotations kno okn
            Dim prefix As String = String.Empty
            Dim group As Integer
            Dim str1 As String
            Dim count, pointer, last, permutcounter As Integer
            Dim x As Integer
            group = 0
            pointer = 0
            count = 0
            last = 1
     
            permutcounter = permlist(0).Length - 1
            x = permlist(0).Length
     
            While group <= permlist(0).Length - 2
                prefix = permlist(pointer).Substring(0, group)
                str1 = permlist(pointer).Substring(group)
                For iter As Integer = 0 To permlist(pointer).Length - (2 + group)
                    count += 1
                    permlist.Add(prefix & rotateright(str1))
                    str1 = permlist(count).Substring(group)
                Next
     
                If count + 1 = last + (permutcounter) * last Then
                    group += 1
                    last = count + 1
                    pointer = 0
                    permutcounter -= 1
                    x = count + 1
                End If
     
                If count + 1 = x + permutcounter Then
                    pointer += 1
                    x = count + 1
                End If
     
     
            End While
     
        End Sub
     
        Public Function MakeCombination(ByVal word As String) As List(Of String)
     
            'donne toutes les combinaisons d'une chaine de caractères
            'le temps traitement et la mémoire exigés dependent de la longueur de la chaine 
            'combinaison de 1 2 3 4 5 6 7 8 ..N lettres 
            ' si j'ai un chaine de N lettres j'ai donc 2^N -1 combinaisons
            ' mot 1 lettre = N!/((N-1)! * 1!) 
            ' 2 lettres = N!/((N-2)! * 2!)
            ' 3 lettres = N!/((N-3)! * 3!)
            ' 4 lettres = N!/((N-4)! * 4!) 
            ' 5 lettres = N!/((N-5)! * 5!) 
            ' 6 lettres = N!/((N-6)! * 7!) 
            ' 7 lettres = N!/((N-7)! * 7!) 
            ' 8 lettres = N!/((N-8)! * 8!)
            ' N lettres = N!/((N-N)! * N!) 
     
            ' pour obtenir toutes les combinaisons on se sert d'une boucle qui iter varie de 1 à 2^N -1 
            ' iter est converti en binaire et devancé par des 0 de façon à obtenir toujours N chiffres 
            ' on remplace les 1 du nombre binaire par le caractère du meme index de la chaine
            ' on retire les 0 de la chaine 
     
            Dim strbinary As String
     
            Dim binarydigit As Char()
            Dim list1 As New List(Of String)
            For iter = 1 To 2 ^ (word.Length)
     
                strbinary = Convert.ToString(Convert.ToInt32(iter), 2)
                strbinary = strbinary.PadLeft(word.Length, "0"c)
                binarydigit = strbinary.ToCharArray
                For iter2 = 0 To binarydigit.Length - 1
                    If binarydigit(iter2) = "1" Then
                        binarydigit(iter2) = word(iter2)
     
                    End If
                Next
                strbinary = binarydigit
                strbinary = strbinary.Replace("0", String.Empty)
                If strbinary.Length > 0 Then
                    list1.Add(strbinary)
                End If
            Next
            list1 = list1.Distinct.ToList
            list1.Sort()
            Return list1
        End Function
    End Class
    Voila qui devrait rendre OP encore plus faineant et a coup sure il reviendra nous exposer d autres soucis qu il ne resoudra jamais lui meme........pfffffff

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2013
    Messages : 267
    Points : 0
    Points
    0

    Par défaut

    Bonjour,

    j'ai réussi a faire un testmot qui fonctionne mais le probléme si il trouve le mot de passe dans textbox1.text , il m'affiche dans textbox3.text.
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub teste(ByVal password As String, ByVal intMax As Integer)
            If intMax = 0 Then
                String.IsNullOrEmpty(password)
            Else
                For i As Integer = 1 To intMax
                    Dim SB As New StringBuilder(i)
                    Dim thisChar As Char = allChars(0)
                    For j As Integer = 1 To i
                        SB.Append(thisChar)
                    Next
                    Attackteste(password, 0, SB, i)
                Next
            End If
        End Sub
     
        Private Function Attackteste(ByVal password As String, ByVal position As Integer, ByVal SB As StringBuilder, ByVal Length As Integer) As Integer
            For i As Integer = 0 To allChars.Length - 1
                SB.Replace(SB(position), allChars(i), position, 1)
                If position >= Length - 1 Then
                    password = SB.ToString
                    If password = TextBox1.Text Then ' ex : abc
                        TextBox3.Text = password ' afficher le résulta abc
                        Exit For
                    Else
                        TextBox2.Text = password ' aa,ab,ac,aaa,aab,aac...etc 1 à 5
                        TextBox2.Refresh()
                    End If
                Else
                    AttackBruteForce(password, position + 1, SB, Length)
                End If
            Next
            Return position
        End Function
    Pouvez-vous me dire pourquoi j'arrive pas avoir le résulta par rapport textbox1.text dans textbox3.text? pourquoi ça fonctionne pas pour avoir le résulta ou d’où vient le probléme?
    merci de votre réponse,

  11. #11
    Membre expérimenté
    Homme Profil pro
    Développeur .Net et Delphi
    Inscrit en
    juillet 2002
    Messages
    629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .Net et Delphi
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2002
    Messages : 629
    Points : 1 424
    Points
    1 424

    Par défaut

    Bonjour,

    Désolé de te le dire mais ton code est assez incompréhensible. Je n'arrive même pas à comprendre ce que tu cherches à faire en le lisant.
    Exemple :

    A quoi servent ces deux lignes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If intMax = 0 Then
       String.IsNullOrEmpty(password)

    Concernant ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    If position >= Length - 1 Then
      password = SB.ToString
      If password = TextBox1.Text Then ' ex : abc
          TextBox3.Text = password ' afficher le résulta abc
          Exit For
      Else
          TextBox2.Text = password ' aa,ab,ac,aaa,aab,aac...etc 1 à 5
          TextBox2.Refresh()
      End If
    Else
      AttackBruteForce(password, position + 1, SB, Length)
    End If
    Sachant que position est passé en dur à 0 et que Length est forcément >= 1, le test ne sera jamais vrai. C'est quoi ce paramètre password passé par valeur que tu modifies dans la méthode Attackteste ?
    Même en prenant ton code est en faisant du pas à pas (ce que tu n'as pas dû faire je pense), j'ai du mal à voir où tu veux en venir. Tu devrais à mon avis reprendre depuis le début.(peut-être en t'inspirant du code de shayw, je ne sais pas, je ne l'ai pas regardé).

  12. #12
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2011
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 1 814
    Points : 3 390
    Points
    3 390

    Par défaut

    Re,

    moi j'en veux pas trop à shayw d'avoir donné du code, perso j'ai hésité à mettre une ou deux versions de l'algo parce que ça m'amusait
    D'ailleurs j'ai pensé à une autre méthode en écrivant mon précédent message (que j'ai pu testé de coder à l'instant).
    Donc voilà ce code, incomplet, comme un indice pour trouver mon algo ... et en C# pour rajouter de la difficulté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public static class IntegerExtension {
    	public static string ToBase(this UInt64 me, string dico) {
    		if (dico == null || dico == "") return null;
    		else {
    			string ret = "";
    			UInt64 len = (UInt64)dico.Length;
    			do {
    				int mod = (int)(me % len);
    				ret = dico[mod] + ret;
    				me = (me - (UInt64)mod) / len;
    			} while (me != 0);
    			return ret;
    		}
    	}
    }
    Après, ça amusera sûrement plus les autres helpers que l'OP.
    Les limites de cette méthode :
    - même en UInt64 le pass ne peut dépasser "v8QrKbgkrIp" dans l'espace [a-zA-Z0-9],
    - le parcours jusqu'à ce UInt64.MaxValue est extrêmement long,
    - je conseille fortement de threader le parcours si vous voulez pas benner votre babasse
    Plus je connais de langages, plus j'aime le C.

  13. #13
    Expert éminent

    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2012
    Messages
    3 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2012
    Messages : 3 767
    Points : 7 664
    Points
    7 664
    Billets dans le blog
    17

    Par défaut

    Bonjour,
    Citation Envoyé par jopopmk Voir le message
    Re,


    Après, ça amusera sûrement plus les autres helpers que l'OP.
    Les limites de cette méthode :
    - même en UInt64 le pass ne peut dépasser "v8QrKbgkrIp" dans l'espace [a-zA-Z0-9],
    Donc, si j'ai bien compris, il suffit juste de mettre un mot de passe de 12 caractères, non ?

    Ou, même 11 caractères en commençant avec w ?
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    À force de vouloir considérer les utilisateurs comme des imbéciles patentés, on risque de se mettre dans le trouble.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  14. #14
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2011
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 1 814
    Points : 3 390
    Points
    3 390

    Par défaut

    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,


    Donc, si j'ai bien compris, il suffit juste de mettre un mot de passe de 12 caractères, non ?

    Ou, même 11 caractères en commençant avec w ?
    Suffit de chercher un pass à partir de "v8QrKbgkrIq", qui correspond à (UInt64.MaxValue +1).
    Et t'en as pour l'a journée en incrémentant ta variable depuis 0

    Après, ce n'est jamais qu'une représentation duosexagésimal (base 62 s'entend, mais c'est moins classe) d'un entier positif.
    L'idée était de simplifier le parcours en faisant juste l'incrémentation d'un entier.

    Enfin, c'est juste pour le jeu, mais pour un vrai pass il faudrait considérer une base bien plus large que les 62 possibilités de [a-zA-Z0-9].

    edit : d'ailleurs j'ai pas trouvé d'entier plus grand en C# (ça existe en C/C++), j'ai raté un truc ?
    edit2 : [a-zA-Z0-9] est le "dico" que j'ai utilisé, dans cet ordre.
    Plus je connais de langages, plus j'aime le C.

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2013
    Messages : 267
    Points : 0
    Points
    0

    Par défaut

    Bonjour,

    j'ai un code qui fonctionne mais c'est avec Console.WriteLine.
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    rivate Shared Sub BruteForce(charset As String, length As Integer, callback As Func(Of String, Boolean))
    	If length < 1 Then
    		Throw New ArgumentException("length")
    	End If
    	If charset.Length = 0 Then
    		Throw New ArgumentException("charset")
    	End If
     
    	Dim sb = New StringBuilder(New String(charset(0), length))
    	Dim lastChar As Char = charset(charset.Length - 1)
    	Dim n As Integer = 0
    	While n <> charset.Length
    		If callback(sb.ToString()) Then
    			Return
    		End If
    		If sb(n) = lastChar Then
    			Do
    				If System.Threading.Interlocked.Increment(n) = length Then
    					Return
    				End If
    			Loop While sb(n) = lastChar
    			sb(n) = charset(charset.IndexOf(sb(n)) + 1)
    			For i As Integer = 0 To n - 1
    				sb(i) = charset(0)
    			Next
    			n = 0
    		Else
    			sb(n) = charset(charset.IndexOf(sb(n)) + 1)
    		End If
    	End While
    End Sub
     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            Dim charset As String = "abcdefghijklmnopqrstuvwxyz0123456789"
            Dim stopwatch As New Stopwatch()
            stopwatch.Start()
            bruteforce(charset, 5, Function(s)
                                       Dim result As Boolean = s = "abc2"
                                       If result Then
                                           Console.WriteLine(s)
                                       End If
                                       Return result
     
                                   End Function)
     
            stopwatch.Stop()
            Console.WriteLine("{0} seconds...", stopwatch.Elapsed.TotalSeconds)
            Console.ReadKey()
        End Sub
    voici un exemple ce que je voulais faire mais avec le code avant j'arrive pas avoir le résulta par rapport a AttackTeste. comment avoir le résulta par rapport password?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Function Attackteste(ByVal password As String, ByVal position As Integer, ByVal SB As StringBuilder, ByVal Length As Integer) As Integer
            For i As Integer = 0 To allChars.Length - 1
                SB.Replace(SB(position), allChars(i), position, 1)
                If position = Length - 1 Then
                    password = SB.ToString
                    If password = TextBox1.Text Then 'textbox1.text = abc, 1234, hello..etc
                        TextBox3.Text = password 'abc, 1234, hello..etc
                    Else
                        TextBox2.Text = password ' aa , ab, ac ...etc aaa,aab,aac...etc
                        TextBox2.Refresh()
                    End If
                Else
                    Attackteste(password, position + 1, SB, Length)
                End If
            Next
            Return position
        End Function

  16. #16
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    février 2010
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : février 2010
    Messages : 3 276
    Points : 8 705
    Points
    8 705
    Billets dans le blog
    3

    Par défaut

    Citation Envoyé par jopopmk Voir le message
    edit : d'ailleurs j'ai pas trouvé d'entier plus grand en C# (ça existe en C/C++), j'ai raté un truc ?
    Probablement : BigInteger Structure
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige

  17. #17
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2011
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 1 814
    Points : 3 390
    Points
    3 390

    Par défaut

    Citation Envoyé par DotNetMatt Voir le message
    Probablement : BigInteger Structure
    Merci bien ! C'est même plus que ce que j'attendais car cette structure semble ne pas avoir de limite.
    Pour le coup j'aimerais bien savoir comment ils ont codé le bousin derrière (chaine de caractères ? concat de mots matériels ?).
    Allez, fin du HS ^^
    Plus je connais de langages, plus j'aime le C.

  18. #18
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    février 2010
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : février 2010
    Messages : 3 276
    Points : 8 705
    Points
    8 705
    Billets dans le blog
    3

    Par défaut

    Citation Envoyé par jopopmk Voir le message
    Merci bien ! C'est même plus que ce que j'attendais car cette structure semble ne pas avoir de limite.
    Pour le coup j'aimerais bien savoir comment ils ont codé le bousin derrière (chaine de caractères ? concat de mots matériels ?).
    L'implementation du .NET Framework s'appuie sur un tableau (array) : System.Numerics.BigInteger.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2013
    Messages : 267
    Points : 0
    Points
    0

    Par défaut

    Bonjour,
    voici un image mon projet :
    Nom : Capture.JPG
Affichages : 45
Taille : 30,2 Ko

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            If TextBox1.Text.Length > 0 Then
                RichTextBox1.Clear()
                stopwatch.Start()
                For i = 1 To NumericUpDown1.Value
                    Attackteste("", 0, i)
                Next
            Else
                MessageBox.Show("Veuillez entrer un password pour rechercher!", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
        End Sub
     
        Private Function Attackteste(pass As String, ByVal pos As Integer, Length As Integer) As Integer
            If pos < Length Then
                For i = 0 To Alphabet.Length - 1
                    Attackteste(pass + Alphabet(i), pos + 1, Length)
                Next
            Else
                If pass.Contains(TextBox1.Text) Then
                    stopwatch.Stop()
                    RichTextBox1.AppendText(String.Format("Mot de passe trouver : {0}" & Environment.NewLine & "Temps écoulé : {1}:{2}:{3}", pass, stopwatch.Elapsed.Hours, stopwatch.Elapsed.Minutes, stopwatch.Elapsed.Seconds) & Environment.NewLine & "Traitement terminé avec succès...")
                End If
            End If
            Return pos
        End Function
    je voudrais savoir comment arrêt la recherche quand il trouve le mot de passe dans textbox1.text? comme vous voyez dans richtextbox1
    Merci de votre réponse,

  20. #20
    Expert éminent

    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2012
    Messages
    3 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2012
    Messages : 3 767
    Points : 7 664
    Points
    7 664
    Billets dans le blog
    17

    Par défaut

    On ne brille pas en anglais en écrivant finder password. C'est Password finder.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    À force de vouloir considérer les utilisateurs comme des imbéciles patentés, on risque de se mettre dans le trouble.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/12/2015, 20h04
  2. [Turbo Pascal] Afficher les lettres les unes après les autres
    Par feugana1 dans le forum Turbo Pascal
    Réponses: 25
    Dernier message: 15/05/2010, 14h31
  3. filtrer les lettres/chiffres
    Par PamelaGeek dans le forum Regex
    Réponses: 4
    Dernier message: 04/04/2007, 09h02
  4. Connaitre les deux premier chiffres d'un input
    Par PrinceMaster77 dans le forum JavaScript
    Réponses: 2
    Dernier message: 03/01/2005, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo