Нужно немного указывать на часть кода в John The Ripper - PullRequest
0 голосов
/ 16 сентября 2011

Мне сам инструмент такого рода не нравится, но люди говорят, что он самый быстрый в взломе паролей грубой силой, но меня интересует не взлом паролей, мне нужен алгоритм, который генерирует данные грубой силы, например, "AA , AB, AC, ...... ZA ", но я не могу найти его в источнике, кто-нибудь может просто сказать мне, как он будет выглядеть или где мне искать его в источнике?

или если кто-нибудь знает хороший и быстрый алгоритм для генерации этих строк в соответствии с заданным набором символов? как

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

спасибо.

1 Ответ

1 голос
/ 16 сентября 2011

Разбери свою проблему.

  1. Генерация всех строк одного символа A - Z
  2. Генерирует все 2 строки символов AA - ZZ
  3. Генерирует все 3 строки символов AAA - ZZZ
  4. и т.д.

Теперь рассмотрим лечение, например, AAA - ZZZ, как проблема при печати всех возможных 3-значных чисел в базе 26 (или сколько символов в вашем наборе символов)

Джон Потрошитель начинает использовать другую технику со встроенным словарем:

пароль
Пароль
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));
}
...