-1

特別な理由はありませんが、暗号化とコンピューティングに興味がある以外は、Java、Visual Basic、またはC#で独自のブルートフォースプログラムを作成して、パスワードを解読できるかどうかを確認したいと思います。私はパフォーマンスには興味がなく、それが完全に非現実的な方法であることを認識しています。正直に言うと、これはちょっとした楽しいプロジェクトです。しかし、私は頭の中で大まかな考えしか持っておらず、それを擬似コードに入れることさえできません。私はJavaに最も精通していますが、誰かが私に疑似コードを提供してくれたとしても、それは素晴らしいことです。

プログラムに長さを提供したくありませんが、最大長を提供します。プログラムは多くの作業をしなければならないことは知っていますが、私はそれを少し考えすぎていると思います。

4

4 に答える 4

0

さて、C ++でやりたいことの例を見つけて、それを次のVisualBasic.NETコードに変換することができました。これは完全に機能します。ただし、出力は少し遅いようで、プログラムはほぼ100%の処理能力を使用すると思いましたが、そうではありません。なぜこれなのか、どうすれば変更できるのか教えてもらえますか?

Public Class Form1
    Dim chars() As Char = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYX".ToCharArray
    Dim csize As Integer = chars.Length - 1
    Dim upto As String
    Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
        upto = "                                                  "

        Dim max_length As Integer = 50

        For i = 1 To max_length
            bf_recursion(0, i)
            Update()
        Next

    End Sub

    Private Sub bf_recursion(ByVal index As Integer, ByVal depth As Integer)
        Dim current() As Char = upto.ToCharArray()

        For i = 0 To csize
            current(index) = chars(i)
            upto = CStr(current)

            Console.WriteLine(CStr(current))
            '\\lblOutput.Text = CStr(current)

            If index <> (depth - 1) Then
                bf_recursion(index + 1, depth)
            End If
        Next
    End Sub
End Class
于 2012-12-20T15:26:16.123 に答える
0

最初にやりたいことは、ブルートフォースしたいことを理解することです。MD5やSHA-1など、高速でブルートフォース攻撃を受ける可能性のある一方向のハッシュスキームを選択します。「破る」一方向ハッシュスキームを選択した後、http://www.whatsmypass.com/the-top-500-worst-passwords-of-all-のようなある種のパスワードリストを見つける必要があります。時間。リストを作成したら、値をハッシュしてどこかに保存する必要があります。この「実際の」データセットを保存したら、ブルートフォースループを作成して比較します。一致するものが見つかったら、その一致を出力します。これで、ブルートフォースを介して偽の人物のパスワードを「解読」しました。幸運を!

于 2012-12-19T21:06:24.007 に答える
0

Hasan-G:はい、できます

Dim chars() As Char = "1234567890abcdefghijklmnopqrstuvwxyz".ToCharArray
    Dim csize As Integer = chars.Length - 1
    Dim upto As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        upto = "                                                  "

        Dim max_length As Integer = 25

        For i = 1 To max_length
            bf_recursion(0, i)
            Update()
        Next

    End Sub

    Private Sub bf_recursion(ByVal index As Integer, ByVal depth As Integer)
        Dim current() As Char = upto.ToCharArray()

        For i = 0 To csize
            current(index) = chars(i)
            upto = CStr(current)

            TextBox1.Text = (CStr(current))
            TextBox1.Refresh()
            Me.Refresh()
            '\\lblOutput.Text = CStr(current)

            If index <> (depth - 1) Then
                bf_recursion(index + 1, depth)
            End If
        Next
    End Sub
于 2015-03-14T12:32:17.053 に答える
-1
while (true) 
{

 string[] mystring = new string[27];
                    mystring[0] = "";
                    mystring[1] = "a";
                    mystring[2] = "b";
                    mystring[3] = "c";
                    mystring[4] = "d";
                    mystring[5] = "e";
                    mystring[6] = "f";
                    mystring[7] = "g";
                    mystring[8] = "h";
                    mystring[9] = "i";
                    mystring[10] = "j";
                    mystring[11] = "k";
                    mystring[12] = "l";
                    mystring[13] = "m";
                    mystring[14] = "n";
                    mystring[15] = "o";
                    mystring[16] = "p";
                    mystring[17] = "q";
                    mystring[18] = "r";
                    mystring[19] = "s";
                    mystring[20] = "t";
                    mystring[21] = "u";
                    mystring[22] = "v";
                    mystring[23] = "w";
                    mystring[24] = "x";
                    mystring[25] = "y";
                    mystring[26] = "z";



                    if (counter == 27)
                    {
                        counter = 0;
                        counter2++;
                    }

                    if (counter2 == 27)
                    {
                        counter2 = 0;
                        counter3++;
                    }

                    if (counter3 == 27)
                    {
                        counter3 = 0;
                        counter4++;
                    }

                    if (counter4 == 27)
                    {
                        counter4 = 0;
                        counter5++;
                    }

                    if (counter5 == 27)
                    {
                        counter5 = 0;
                        counter6++;
                    }

                    if (counter6 == 27)
                    {
                        throw new Exception();
                    }



                    guessedpassword =  mystring[counter6] + mystring[counter5] + mystring[counter4] + mystring[counter3] + mystring[counter2] + mystring[counter];


                    counter++;
    }

これが私が書いたコードです。クラッキングは非常に非効率的ですが、単純です。

于 2015-02-24T20:38:44.743 に答える