Рассмотрю некоторые детали функционирования системы, чтобы материал не накапливался и не разрастался до объема статьи, которую нет времени писать.
Одной из ключевых особенностей серверной части является генерация диапазона строк для последующего перебора клиентом. Как было упомянуто в первом посте, она основана на взаимооднозначном соответствии строки символов с числом. На этом моменте остановлюсь подробнее.
Предположим, пользователю требуется перебрать всевозможные комбинации (строки), составленные из символов:
Пронумеруем каждый символ:
Код:
s(1); k(2); z(3); !(4); & (5); #(6)
Всего символов
n=6, значит работать будем в
n-ричной системе счисления.
Новая строка будет получаться в результате
итерации числа, которое также представляет свою строку. Для наглядности приведу пример:
Код:
Число Соответствующая ему строка
1 s
2 k
3 z
…
6 #
(Т.к. система 6-ричная, то если число >6 переходим в следующий разряд)
7 s#
8 k#
9 z#
И т. д.
Данный принцип используется подавляющим большинством переборщиков паролей. Надеюсь он описан понятно.