需要一些指向John The Ripper中的部分代码

时间:2011-09-15 20:16:00

标签: c algorithm brute-force

我自己不喜欢这种工具,但人们说它在破解密码时最快破解密码,但我的兴趣不是破解密码,我需要生成强力数据的算法,如“AA ,AB,AC,...... ZA“,但我似乎无法在源头找到它,任何人都可以告诉我它会是什么样的,或者我应该在源头找到它?

或者是否有人知道根据给定字符集生成这些字符串的良好且快速的算法? 像

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

感谢。

1 个答案:

答案 0 :(得分:1)

打破你的问题。

  1. 生成所有一个字符串A - Z
  2. 生成所有2个字符串AA - ZZ
  3. 生成所有3个字符串AAA - ZZZ
  4. 现在考虑治疗,例如AAA - ZZZ,打印基本26中所有可能的3位数字(或者你的字符集中有很多字符)的问题

    John the Ripper开始使用不同的技术,内置字典:

      

    密码
      密码
      PASSW0RD
      PASSW0RD
      等。

    ETA:以下是两个字符版本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));
    }