Списки паролей (brute force) для борьбы с амнезией

archive view archive save

password4.jpg И что-то с памятью моей стало... Тут помню, а тут.., - ничего не помню. Забыл пароли от вай-вая и коды запуска ядерных ракет не помню, а ядерный пепел то нужно запустить по-графику.., - срочно нужны словари для подбора паролей!

АХТУНГ! Сразу отметим, что целью данного материала не является членовредительство или несанкционированное вмешательство в работу компьютерных систем! Материал носит исключительно общеобразовательный, познавательный характер и может быть использован только для борьбы с собственной амнезией!

Однако.., списки паролей - это Вам здесь не тут...

  1. Какие бывают пароли
  2. Вспомогательное ПО
  3. Цифровые пароли
  4. Пароли в виде дат
  5. Словарная БД

Какие бывают пароли

sad-programmer_lite Качать списки паролей в Интернетах совсем не вариант потому, что там дохренище всякого лишнего мусора, полнейшего бреда, лабуды и лажи, весят они в упакованном виде десятки-сотни ГБ, а в распакованном виде и того поди в разы более того - результат перебора по таким спискам паролей одинаков с тем, как сцать против ветра.

Запускать тупой brute force в надежде вспомнить пароль как бы тоже не вариант, ведь в ожидании результата можно состариться и нахрен крякнуть.

Но, чтобы получились хорошие и правильные, лаконичные и меткие словари паролей, нужно в полном объёме понимать какими бывают часто используемые пароли и из чего они состоят:

Требования к паролю для вай-вай роутера

When you log in wireless router, need to input this password (password is different from your wireless network password)

You can change login password on this page.
The password can't be empty and must contain at most 32 characters.
The password contains 0-9 a-z A-Z ! # $ * + , - . % : = ? @ [ ] ^ _ { | } ~

  1. с пробелами обычно не допускаются, пробелы отбрасываем сразу, а также исключаем: ` & ( ) / \ " ' ;;
  2. обычно в нижнем регистре (password), но верхний (PASSwOrD) также может быть;
  3. минимальной длины 4-6 в редких случаях, для вай-вай роутеров и пр. 8-10 и более символов;
  4. только из цифр (1234567890);
  5. даты в различном формате (Ymd / dmY / 2034-01-01) с разными разделителями (-.,) и без них;
  6. буквенно-цифровые (admin123)
  7. из латинских символов в английском произношении/смысле (admin, administrator, server, hosting, filesystem, etc);
  8. из латинских символов в русском/украинском произношении/смысле (vasya, peremoga);
  9. из латинских символов в русском/украинском произношении/смысле с транслитерацией в разных (ГОСТ 7.79-2000, загранпаспорт, водительское удостоверение, банковская карта Яндекс.Денег, Народная Карта Яндекса; Госдепартамент США; Для поисковых систем; ...) форматах по таким буквам как: е ё ж й х ц ч ш щ ъ ы э ю я;
    • e - e/ye
    • ё - yo/e/ye/jo
    • ж - zh/j
    • й - j/i/y
    • х - kh/x/h
    • ц - c/ts
    • ч - ch
    • щ - shch/sch/sc
    • ъ - " (кавычка)/'' (два апострофа)/`` (два грависа)/ie/y/не пишется
    • ы - y/y` (y с грависом)/i
    • ь - ' (апостроф)/` (гравис)/не пишется
    • э - e/eh/e` (e с грависом)
    • ю - yu/iu/ju
    • я - ya/ia/ja
  10. транслитерация раком, по-русским буквам при английской раскладке клавиатуры (з@еб@ли вы меня = pft,fkbdsvtyz).

С паролями только из цифр и датами всё относительно просто и понятно.

В случае с транслитом - здесь одними программами (ака crunch cupp3 diceware), тем более онлайн-сервисами (translit-online.ru / ukrlit.org/transliteratsiia) не обойдёшься! Тут нужно самостоятельно делать спец.баш-скрипт(ы) для транслитерации каждого слова во всевозможных его мутациях.

Ещё в транслите для паролей букву О можно чередовать с цифрой 0 (kosmos / k0sm0s, paasword / passw0rd), а мягкий и твёрдый знаки латинской b и без неё (solb / sol).

Для мутации каждой буквы слова в разные регистры (word lowercase uppercase mutation) также потребуется писать отдельный код или попробовать нарыть в Интернетах - если это возможно.

Вобщем.., есть над чем поработать, и чтобы Вспомнить всё, нам хорошенько нужно подумать...

Передайте Мюллеру, что я всё вспомнил! (с) Штирлиц

Вспомогательное ПО

Потому, как парсинг больших объёмов данных может занимать приличное время и объём ресурсов.., - нам пригодятся:

ionice -c 3 nice -n 19 CMD
cgexec -g blkio,cpu:limit1 CMD

Где CMD запускаемая команда. ionice и nice всегда готовы к работе, а cgexec ещё нужно приготовить и выходит за рамки данного материала...

Также могут быть полезны:

  • crunch - tool for creating wordlist
  • cupp - generate dictionaries for attacks from personal data
  • cupp3 - generate dictionaries for attacks from personal data version for python3
  • diceware - Create memorizable passphrases from wordlists and various sources of randomness

Но, эти проги пригодятся разве только для генерирования цифровых паролей и паролей типа admin123, admin112, admin122, - для трансформации уже имеющихся слов и уж тем более для транслитерации они безполезны.

Цифровые пароли

Для создания словарей по всем возможным комбинациям из 8-10 цифр, нам потребуется:

  • минимум 120 ГБ свободного места на диске;
  • crunch - tool for creating wordlist.

Как увеличивается число комбинаций и потребность в дисковом пространстве смотрите сами:

$ crunch 4 4 1234567890 -o 4.txt
Crunch will now generate the following amount of data: 50000 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 10000
 
$ crunch 5 5 1234567890 -o 5.txt
Crunch will now generate the following amount of data: 600000 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 100000
 
$ crunch 6 6 1234567890 -o 6.txt
Crunch will now generate the following amount of data: 7000000 bytes
6 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 1000000
 
$ ionice -c 3 nice -n 19 crunch 7 7 1234567890 -o 7.txt
Crunch will now generate the following amount of data: 80000000 bytes
76 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 10000000
 
$ ionice -c 3 nice -n 19 crunch 8 8 1234567890 -o 8.txt
Crunch will now generate the following amount of data: 900000000 bytes
858 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 100000000

Проверяем, присутствует ли случайное число из 8 цифр среди полученного результата:

cat 8.txt | grep 13579246
cat 8.txt | grep 13579240

Все комбинации из 8 цифр заняли без малого 1 ГБ, а вот на всевозможные пароли из 9 цифр нам уже потребуется 10 ГБ свободного места:

$ crunch 9 9 1234567890 -o 9.txt
Crunch will now generate the following amount of data: 10000000000 bytes
9536 MB
9 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 1000000000

Но, наверное будет лучше результат поделить на куски по 1 ГБ и сделать это в отдельном каталоге:

mkdir -p 9 && cd 9
 
crunch 9 9 1234567890 -o 9.txt -b 1gib
you must use -o START if you specify a count
 
crunch 9 9 1234567890 -o START -b 1gib
Crunch will now generate the following amount of data: 10000000000 bytes
9536 MB
9 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 1000000000
 
crunch: 1% completed generating output
...
crunch: 9% completed generating output
 
crunch: 10% completed generating output
 
crunch: 10% completed generating output
...111111111-218485292.txt - 1024MB...
crunch: 11% completed generating output

Получился набор из 10 файлов с диапазонами:

tree
.
├── 077478749-000000000.txt
├── 111111111-218485292.txt
├── 218485293-325859474.txt
├── 325859475-433233656.txt
├── 433233657-530507838.txt
├── 530507839-647981010.txt
├── 647981021-755356102.txt
├── 755356103-862720384.txt
├── 862720385-969004566.txt
└── 969004567-077478748.txt

По времени заняло в среднем 2-3 мин на 1 файл = около 30 мин

На все цифровые варианты из 10-и знаков потребуется уже целых 105 ГБ и около 5-и часов по времени (начало в 18:05, завершение в 22:20)!

mkdir -p 10 && cd 10
 
crunch 10 10 1234567890 -o START -b 1gib
Crunch will now generate the following amount of data: 110000000000 bytes
104904 MB
102 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 10000000000
 
tree
.
├── 0067626197-0000000000.txt
├── 0188000150-0286722052.txt
├── 0286722053-0384335945.txt
├── 0384335946-0481948838.txt
├── 0481948839-0579561731.txt
├── 0579561732-0677174624.txt
├── 0677174625-0774787517.txt
├── 0774787518-0872390300.txt
├── 0872390411-0969013203.txt
├── 0969013204-0067626196.txt
├── 1087239041-2184852933.txt
├── 1108723904-1206336896.txt
├── 1111111111-1108723903.txt
├── 1206336897-1303949789.txt
├── 1303949780-1401562682.txt
├── 1401562683-1599175575.txt
├── 1599175576-1696788468.txt
├── 1696788469-1794301361.txt
├── 1794301362-1891014254.txt
├── 1891014255-1989627147.txt
├── 1989627148-1087239030.txt
├── 2063368971-3150981863.txt
├── 2184852934-2282465826.txt
├── 2282465827-2379078719.txt
├── 2379078710-2477691612.txt
├── 2477691613-2575204405.txt
├── 2575204406-2672917398.txt
├── 2672917399-2760520291.txt
├── 2760520292-2868143184.txt
├── 2868143185-2965755077.txt
├── 2965755078-2063368960.txt
├── 3039497801-4136000793.txt
├── 3150981864-3258594756.txt
├── 3258594757-3356107649.txt
├── 3356107640-3453810542.txt
├── 3453810543-3551433435.txt
├── 3551433436-3648046328.txt
├── 3648046329-3746659221.txt
├── 3746659222-3844272114.txt
├── 3844272115-3941884907.txt
├── 3941884908-3039497890.txt
├── 4015626831-5113239723.txt
├── 4136000794-4234723686.txt
├── 4234723687-4332336579.txt
├── 4332336570-4429949472.txt
├── 4429949473-4527562365.txt
├── 4527562366-4625175258.txt
├── 4625175259-4722788151.txt
├── 4722788152-4810390044.txt
├── 4810390045-4917013937.txt
├── 4917013938-4015626820.txt
├── 5089368654-6186981546.txt
├── 5100852617-5208465409.txt
├── 5113239724-5100852616.txt
├── 5208465400-5305078302.txt
├── 5305078303-5403691295.txt
├── 5403691296-5501204188.txt
├── 5501204189-5698916081.txt
├── 5698916082-5796529974.txt
├── 5796529975-5894142867.txt
├── 5894142868-5991755750.txt
├── 5991755761-5089368653.txt
├── 6065497584-7162000476.txt
├── 6186981547-6284594439.txt
├── 6284594430-6382107332.txt
├── 6382107333-6479810225.txt
├── 6479810226-6577433118.txt
├── 6577433119-6674045011.txt
├── 6674045012-6772658804.txt
├── 6772658805-6860271797.txt
├── 6860271798-6967884680.txt
├── 6967884691-6065497583.txt
├── 7041626514-8139239306.txt
├── 7162000477-7250723369.txt
├── 7250723360-7358336262.txt
├── 7358336263-7455949155.txt
├── 7455949156-7553561048.txt
├── 7553561049-7651174941.txt
├── 7651174942-7748787834.txt
├── 7748787835-7846390727.txt
├── 7846390728-7943013610.txt
├── 7943013621-7041626513.txt
├── 8017755444-9115368336.txt
├── 8139239307-8236852299.txt
├── 8236852290-8334465192.txt
├── 8334465193-8431077085.txt
├── 8431077086-8529680978.txt
├── 8529680979-8627203871.txt
├── 8627203872-8724916764.txt
├── 8724916765-8822529657.txt
├── 8822529658-8910142540.txt
├── 8910142551-8017755443.txt
├── 9091497267-0188000159.txt
├── 9115368337-9212981229.txt
├── 9200594123-9308106015.txt
├── 9212981220-9200594122.txt
├── 9308106016-9405819808.txt
├── 9405819809-9503432701.txt
├── 9503432702-9690045694.txt
├── 9690045695-9798658587.txt
├── 9798658588-9896271470.txt
├── 9896271481-9993884373.txt
└── 9993884374-9091497266.txt

Можно перелопатить варианты:

  • из 8 цифр (1 ГБ) - за 1-2 дня;
  • из 9 цифр (10 ГБ) - за 10-12 дней;
  • из 10 цифр (105 ГБ) - месяца 3;
  • и т.д...

Разумеется скорость получения результата зависит от мощности оборудования.., и учитывая тот факт, что амнезия может накрыть в самый не подходящий момент, а суперкомпьютера под мышкой может не быть в наличии, то - нужно в самую первую очередь делать менее ресурсоёмкие и смысловые словари.

Например, более экономный и частоиспользуемый вариант с перестановкой знаков местами типа "123, 321, 231" без их повтора "111, 112, 113, ..." - например полезно при переборе по дате рождения:

$ crunch 8 8 -o 8_p.txt -p 1234567890
Crunch will now generate approximately the following amount of data: 39916800 bytes
38 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 3628800
 
crunch: 100% completed generating output

38 MB как никак не 1 ГБ тупого перебора всех комбинаций из 8-ми цифр.

Однако, ожидаемый результат вместо 8-ми, получился длиной в 10 цифр, потому, что при указании опции -p длина min and max length игнорируется:

man crunch
...
-p charset OR -p word1 word2 ...
 Tells crunch to generate words that don't have repeating characters.
 By default crunch will generate a wordlist size of
 #of_chars_in_charset ^ max_length. This option will instead gener‐
 ate #of_chars_in_charset!. The ! stands for factorial. For example
 say the charset is abc and max length is 4.. Crunch will by default
 generate 3^4 = 81 words. This option will instead generate 3! =
 3x2x1 = 6 words (abc, acb, bac, bca, cab, cba). THIS MUST BE THE
 LAST OPTION! This option CANNOT be used with -s and it ignores min
 and max length however you must still specify two numbers.

Тогда пойдём другим путём:

mv 8_p.txt 10_p.txt
 
crunch 8 8 -o 8_p1.txt -p 12345678
crunch 8 8 -o 8_p2.txt -p 12345670
crunch 8 8 -o 8_p3.txt -p 12345690
crunch 8 8 -o 8_p4.txt -p 12345890
crunch 8 8 -o 8_p5.txt -p 12347890
crunch 8 8 -o 8_p6.txt -p 12367890
crunch 8 8 -o 8_p7.txt -p 12567890
crunch 8 8 -o 8_p8.txt -p 14567890
crunch 8 8 -o 8_p9.txt -p 23456789
crunch 8 8 -o 8_p0.txt -p 23456780
 
cat 8_p*.txt >> tmp && rm -rf 8_p*.txt && cat tmp | \
sort -u > 8_p.txt && rm -rf tmp
 
crunch 9 9 -o 9_p1.txt -p 123456789
crunch 9 9 -o 9_p2.txt -p 123456780
crunch 9 9 -o 9_p3.txt -p 123456790
crunch 9 9 -o 9_p4.txt -p 123456890
crunch 9 9 -o 9_p5.txt -p 123457890
crunch 9 9 -o 9_p6.txt -p 123467890
crunch 9 9 -o 9_p7.txt -p 123567890
crunch 9 9 -o 9_p8.txt -p 124567890
crunch 9 9 -o 9_p9.txt -p 134567890
crunch 9 9 -o 9_p0.txt -p 234567890
 
cat 9_p*.txt >> tmp && rm -rf 9_p*.txt && cat tmp | \
sort -u > 9_p.txt && rm -rf tmp
 
cat *_p.txt >> tmp && | cat tmp | sort -u > 8-10_p.txt && rm -rf tmp

Файлы с перестановкой цифр местами без их повторения (типа 11123456, 11113456, ...) от 8 до 10 получилсь размером:

tree -h
.
├── [ 38M] 10_p.txt
├── [ 76M] 8-10_p.txt
├── [3.5M] 8_p.txt
└── [ 35M] 9_p.txt

По цифровым паролям от 4 до 10 закончили, от 10 и выше то уже космос...

Полный набор всевозможных варинтов цифровых паролей весит:

  • от 4 до 7 цифр = 83,6 МиБ
  • от 8 до 10 цифр = 112,6 ГиБ

Варианты с перестановкой (без повторения) занимают:

  • от 8 до 10 цифр = 152,3 МиБ.

В финальном варианте все комманды можно будет запихнуть в один баш-скрипт и создавать такие списки цифровых паролей по месту их надобности, чтобы не тратить десятки и сотни гигабайт Интернет-трафика если он платный например.

Пароли в виде дат

Чтобы чем-то управлять, нужно иметь как никак точный плян... Ну, скажем лет на тысячу! (с) Воланд.

Предположим, что владелец пароля в его качестве выбрал какую-то дату, и это магёт быть не обязательно дата рождения, а например дата какого-то древнего истерического исторического или грядущего в будущем события.

С таким расчётом нам нужны словари с датами в пределах +- одной тысячи лет, сложить в один файл или поделить на куски по 100 лет.

Сделать такой список можно прямо в коммандной строке bash:

man date
...
Convert seconds since the epoch (1970-01-01 UTC) to a date
 
start_date="1000-01-01" \
end_date="2070-01-01" \
seq $(date --date "$start_date" +%s) 86400 $(date --date "$end_date" +%s) | \
sed -n -E -e 's/(.*)/date --date @& +"%Y-%m-%d"/ep'
date: неверная дата «2070-01-01»

date: неверная дата «2070-01-01» - это Проблема 2038 года на 32х-битных машинах.

В таком случае, или делать ход козлом или запустить ту же команду на виртуальной 64-битной машине...

uname -a
Linux localhost 4.19.0-25-amd64 #1 SMP Debian 4.19.289-2 (2023-08-08) x86_64 GNU/Linux
 
mkdir -p date && cd date
seq $(date --date "$start_date" +%s) 86400 $(date --date "$end_date" +%s) | \
sed -n -E -e 's/(.*)/date --date @& +"%Y-%m-%d"/ep' > date.txt

В полученном результате меняя сепаратор - на любой другой допустимый в паролях спецсимвол ! # $ * + , - . % : = ? @ [ ] ^ _ { | } ~ каждый сохраняем в отдельном файле, не забыв в конце переименовать date.txt в 1000-2070_ymd1.txt

cat date.txt | sed 's/-//g' > 1000-2070_ymd0.txt
cat date.txt | sed 's/-/./g' > 1000-2070_ymd2.txt
cat date.txt | sed 's/-/,/g' > 1000-2070_ymd3.txt
cat date.txt | sed 's/-/~/g' > 1000-2070_ymd4.txt
cat date.txt | sed 's/-/!/g' > 1000-2070_ymd5.txt
cat date.txt | sed 's/-/@/g' > 1000-2070_ymd6.txt
cat date.txt | sed 's/-/#/g' > 1000-2070_ymd7.txt
cat date.txt | sed 's/-/$/g' > 1000-2070_ymd8.txt
cat date.txt | sed 's/-/%/g' > 1000-2070_ymd9.txt
cat date.txt | sed 's/-/^/g' > 1000-2070_ymd10.txt
cat date.txt | sed 's/-/:/g' > 1000-2070_ymd11.txt
cat date.txt | sed 's/-/*/g' > 1000-2070_ymd12.txt
cat date.txt | sed 's/-/[/g' > 1000-2070_ymd13.txt
cat date.txt | sed 's/-/]/g' > 1000-2070_ymd14.txt
cat date.txt | sed 's/-/_/g' > 1000-2070_ymd15.txt
cat date.txt | sed 's/-/+/g' > 1000-2070_ymd16.txt
cat date.txt | sed 's/-/=/g' > 1000-2070_ymd17.txt
cat date.txt | sed 's/-/|/g' > 1000-2070_ymd18.txt
cat date.txt | sed 's/-/{/g' > 1000-2070_ymd19.txt
cat date.txt | sed 's/-/}/g' > 1000-2070_ymd20.txt
cat date.txt | sed 's/-/?/g' > 1000-2070_ymd21.txt
 
mv date.txt 1000-2070_ymd1.txt
  • 1000-2070_ymd0.txt - даты без разделителя;
  • 1000-2070_ymd1.txt - изначальный файл дат с разделителем -.

Все файлы можно объединить в один, скажем 1000-2070_ymd.txt.

Аналогично делаем даты в формате dmY.

Можно также учесть, что каждая цифра даты в пароле может быть разделена спецсимволом, например для 2038-01-19: 2-0-3-8-0-1-1-9 Чтобы использовать такие даты можно трансформировать файл 1000-2070_ymd0.txt с датами без разделителя.

Словарная БД

Продолжение следует...

P.S. У кого-то по вордлистам есть какие-то соображения, дополнения, предложения? Пишите в комментарии, интересно будет узнать.


Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме