Нужно немного указывать на часть кода в John The Ripper

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

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

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

Благодарю.

1 ответ

Решение

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

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

Теперь рассмотрим обработку, например, AAA - ZZZ, проблемы печати всех возможных трехзначных чисел в базе 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));
}
Другие вопросы по тегам