Показать сообщение отдельно

  #2  
Старый 03.10.2007, 13:31
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию

На мой взгляд вся задача распределения диапазонов паролей из заданного множества символов сводится к:

1. Приведение строки в вид b-ричной позиционной системы счисления.
2. Перевод в любую удобную систему для вычислений (операции -,+,/) например десятичная, шестнадцатиричная.
3. Собственно проведение операций деления полного диапазона на подмножества.
4. Обратное преобразование в строку в момент подбора (запись в виде b-ричной позиционной системы - это и есть пароль)

Вот например имеем пасс из трёх символов 'aZ/' в charsete[]=mixalpha-numeric-all-space, тогда основание b-ричной системы равно 95 (число возможных символов чарсета)
Тогда:
a(95)=0(10)
b(95) = 1(10)
c(95) = 2(10)
-------------------
--пропущено--
-------------------
_(95) = 94(10) "_" - обозначил пробел, так как он последний в чарсете. (для удобства отображения можно пробел поставить в начало чарсета и сделать, чтоб он, а не 'a' соответствовал '0' в десятичной системе, но оставим пока как есть).
Наш пароль: aZ/(95)=0*95^2+31*95^1+93*95^0=3038(10)

Итак, например у нас диапазон [aaa-___], чарсет mixalpha-numeric-all-space т.е. фактически 95-ричная позиционная система исчисления.
charset[]=mixalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX YZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]

Переводим его в десятичную систему:
aaa(95)=0(10)
___(95)=94*95^2+94*95^1+94*95^0=94*9025+8930+94=84 8350+8930+94=857374 - самое наибольшее число в дясятичной системе, соответствующее пассу из 3-х пробелов. Проверим, что нам говорит Winrtgen-> он говорит, что всего возможно 866495 ключей (паролей). Кто из нас ошибся? Похоже, что я, так как отсутствие какого либо символа в пароле это тоже результат имеющий значение, т. е. множестово одно и двух символьных паролей тоже учитывается в Winrtgen, тогда и мы исправим ошибку:
___(95)=95*95^2+95*95^1+95*95^0=866495 и получим результат, который сообщает Winrtgen.

И так мы получили: полное множество [пусто-___] -> [0-866495] и [aaa-'три пробела'] -> [0-857374] - теперь можно дробить на поддиапазоны, например разбить на два второй диапазон: 857374/2=428687 Затем остаётся перевести обратно в 95-ричную систему и можно использовать для подбора паролей.

ЗЫ Написал почти тоже самое ,что и Zaco, только щас заметил, заисключением того, что как я понял, все арифметические операции Zaco предлагает проводить в b-ричной системе счисления, вообщем смысл ясен...

Последний раз редактировалось -=lebed=-; 04.10.2007 в 08:50..