-1

私自身はこの種のツールは好きではありませんが、pplはブルートフォースでパスワードを解読するのが最も速いと言っていますが、私の興味はパスワードを解読することではありません。「AA、AB、 AC、...... ZA "ですが、ソースでそれを見つけることができないようです。誰かがそれがどのように見えるか、またはソースでどこでそれを探すべきかを教えてもらえますか?

または、特定の文字セットに従ってこれらの文字列を生成するための優れた高速アルゴリズムを誰かが知っている場合はどうでしょうか。お気に入り

  char *charset1 = "abcdefghijklmnopqrstuvwxyz";
  char *charset1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  char *charset1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ........

ありがとう。

4

1 に答える 1

1

問題を分解します。

  1. 1 つの文字列 A ~ Z をすべて生成する
  2. 全2文字列AA~ZZを生成
  3. AAA ~ ZZZ の 3 つの文字列をすべて生成

ここで、たとえば AAA - ZZZ を、考えられるすべての 3 桁の数字を基数 26 で (または、文字セットに含まれる文字の数に関係なく) 出力する際の問題として扱うことを検討してください。

John the Ripper は、組み込みの辞書を使用して、別の手法を使用することから始めます。

password
パスワード
passw0rd
Passw0rd
など

ETA: これは、2 文字バージョン AA - ZZ のサンプル コードです。私の C は非常にさびているので、このフラグメントは Java です。

// Character set
String charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int cSetSize = charset.length();

// Two character strings AA - ZZ
int numChars = 2;
int limit = cSetSize * cSetSize;
char[] result = new char[numChars];

// Build strings
for (int i = 0; i < limit; ++i) {

    // Convert i to base cSetSize
    int current = i;
    for (int j = numChars - 1; j >= 0; --j) {
        result[j] = charset.charAt(current % cSetSize);
        current /= cSetSize;
    }

    // Do something with string
    System.out.println(new String(result));
}
于 2011-09-15T20:47:32.603 に答える