Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Псевдослучайный генератор паролей  (Прочитано 18222 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ALiEN

  • Автор темы
  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Псевдослучайный генератор паролей
« : 05 Октября 2015, 03:07:31 »
Вступление.
Давно под виндой была у меня утилитка - пишешь в ней вполне осмысленное слово, а она выдаёт на него пароль. То есть, написал 'test' - программа выдала что-то вроде 'FG3fgT6fas5D' в зависимости от выставленных в ней настройках. 
В чем несомненный плюс - создание криптостойкого пароля, при том, что мы его не запоминаем, не сохраняем в облаках и бумажках, а помним лишь слово 'test'
Под линукс не нашел ничего похожего, решил написать сам. Представляю на ваш суд

скрипт:
(Нажмите, чтобы показать/скрыть)

Как пользоваться:
1. Создаете скрипт с содержимым, не забываем поставить права на исполнение
2. Запускаете с "ключевым" словом, например
   ./script test3. На выходе - офигенный пароль 2sJ2hND8dX1l, соответствующий ключевому слову test

Как работает:
Вычисляется md5 ключевого слова, из него получаются 16 переменных (32/2). Из ключей и того, что наделал md5, выбираются символы - в текущем исполнении: 1-4 - большие буквы, 5-8 - строчные буквы, 9-12 - цифры. переменные 13-16 отвечают за порядок символов в итоговом пароле (большая-строчная-число, строчная-число-большая, число-большая-строчная). 

Плюсы:
Сложные пароли не запоминаем, не записываем - помним лишь повседневную информацию
Можно использовать даже кириллицу и спецсимволы.
В роли "ключей" - любые последовательности, пароли от ключевого слова будут разные!
(Нажмите, чтобы показать/скрыть)
Минусы:
Точно знаю, код не оптимален, пишу в основном для себя, не заморачиваясь на красоту и скорость.
Нет возможности задать свои настройки длины пароля и набора символов без правки кода.
После замены ключа, большие, строчные буквы и цифры останутся на своих местах (как была цифра, допустим, на пятом месте, так цифра и останется на пятом).
Не рекомендую ставить тем людям, которые не разобрались в коде скрипта!

Код откомментил, надеюсь, проще будет разбираться  :)
В будущем планирую сделать человеческий интерфейс, хотя б zenity  :P
Критика и советы приветствуются  8)
Если будет интерес, конечно же, буду развивать проект  :)

 
« Последнее редактирование: 05 Октября 2015, 03:11:02 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #1 : 05 Октября 2015, 10:21:49 »
pwgen с опцией -H --sha1 генерит пароль основываясь на хэше указанного файла
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Псевдослучайный генератор паролей
« Ответ #2 : 05 Октября 2015, 12:11:28 »
Чуть более лаконичный вариант на Python3

Сохранить в файле pwcreate и дать права на исполнение:
Код: (python) [Выделить]
#!/usr/bin/env python3

from base64 import b64encode
from hashlib import md5
from sys import argv

if __name__ == '__main__':
  try:
    print(b64encode(md5(argv[1].encode('utf-8')).digest())[:-4].decode('utf-8'))
  except:
    print('Usage: pwcreate <pass phrase>')

Тут полученный через MD5 бинарный дайджест кодируется в base64 (финальные символы '==' от base64 кодировки и еще пара символов от конца - отбрасываются). Получается 20-и символьный пароль.

$ ./pwcreate test
CY9rzUYh03PK3k6DJie0
$ ./pwcreate
Usage: pwcreate <pass phrase>


В принципе можно задать еще сколько символов в пароле надо... по идее можно и длинне пароли генерить, если взять как хеш-функцию sha256 или sha512.
« Последнее редактирование: 05 Октября 2015, 13:21:22 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн gamayun

  • Активист
  • *
  • Сообщений: 823
  • Кто ищет, тот найдёт, может быть...
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #3 : 05 Октября 2015, 12:51:02 »
3. На выходе - офигенный пароль 2sJ2hND8dX1l, соответствующий ключевому слову test - и где его смотреть?
После запуска скрипта создается файл с именем test.Он пустой.
P.S.Я просто попробовал  :-[
Не бери в голову

Оффлайн ALiEN

  • Автор темы
  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #4 : 05 Октября 2015, 13:01:53 »
Azure,
20 паролей - 20 файлов разных? запутаться можно. По ключевому слову проще.


Sly_tom_cat,
могу ошибаться, конечно, но просто хэшировать ключевое слово и кодировать в base64 - как-то слишком просто (или я параноик)





Пользователь решил продолжить мысль 05 Октября 2015, 13:05:22:
gamayun,
только что перепроверил - все работает
« Последнее редактирование: 05 Октября 2015, 13:05:22 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Псевдослучайный генератор паролей
« Ответ #5 : 05 Октября 2015, 13:13:25 »
ALiEN175, ну раз считаете слишком просто, то восстановите ключевые слова из nuMwlkW9LAd1iZ/KFPMR или GoFNqxWR1HFKDW23O5JF.
;)

А сами эти пароли проходят на всяких паролечекерах (1, 2 или 3 для примера) на ура (т.е. они надежны)!
« Последнее редактирование: 05 Октября 2015, 13:22:48 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #6 : 05 Октября 2015, 13:18:09 »
20 паролей - 20 файлов разных? запутаться можно. По ключевому слову проще.
Вы забываете, что в Линукс почти всё суть файлы:pwgen -1H <(echo "test")#moj_address@mail.ru 1212 - длина пароля
# — seed для хэша
можно указать количество паролей  и выбирать определенный (например 12 из 40)
+ куча доп. опций которые тоже меняют саму генерацию.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #7 : 05 Октября 2015, 13:40:16 »
ALiEN175,
Sly_tom_cat,
$  echo test | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249  -
??
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн ALiEN

  • Автор темы
  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #8 : 05 Октября 2015, 14:02:44 »
Sly_tom_cat,
не поняли меня - ключевое слово мне не нужно, это же не пароль.
Допустим, мне нужно мыло на яндексе, беру пароль eWFuZGV4 (yandex-base64) и запускаю брутфорс)
Да и не каждый сайт позволит длинные пароли со спецсимволами использовать. Когда-то давно мало кто давал слэши и кириллицу в паролях использовать

и от длины пароля мало что зависит, касперский, кстати, знает, что
ZWM4YmY1MTZmYWZhNTE5MjdlNzEyMzNlMThlODI1MDM
- распространенное слово

alsoijw,
не знаю, как сейчас, а года 4 назад в аське максимальная длина пароля 8 символов была,
d8e8fca2 - 9 дней на подбор, касперский говорит






Пользователь решил продолжить мысль [time]05 Октябрь 2015, 14:22:56[/time]:
Azure,
не знал, что так с pwgen можно, спасибо. В линукс все проще, чем кажется
« Последнее редактирование: 05 Октября 2015, 14:26:24 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #9 : 05 Октября 2015, 15:12:52 »
ALiEN175, мало ли что касперский говорит? Ты его попробуй подбери.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн gamayun

  • Активист
  • *
  • Сообщений: 823
  • Кто ищет, тот найдёт, может быть...
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #10 : 05 Октября 2015, 15:15:56 »
pwgen работает, а скрипт пустой файл создает,хотя запускается без проблем.
Не бери в голову

Оффлайн ALiEN

  • Автор темы
  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #11 : 05 Октября 2015, 15:33:04 »
gamayun,
что в терминале пишете?
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Псевдослучайный генератор паролей
« Ответ #12 : 05 Октября 2015, 15:34:25 »
Да и не каждый сайт позволит длинные пароли со спецсимволами использовать. Когда-то давно мало кто давал слэши и кириллицу в паролях использовать
Какие длинные?
20 символов из разрешенных в качестве URL (именно для этого base64 с небольшой модификацией и используют).

Смысл генерации паролей в том, что бы в пароле не было ничего регулярного и были символы хотя бы из 3 классов (большие, маленькие, цифры и/или спецсимволы) так вот в base64 есть все (большие, маленькие, цифры и спецсимволы) только вот спецсимволов там мало (только два) и не в каждый пароль они попадают при предложенной мной генерации.

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

А чем больше алгоримов генерации паролей - тем лучше, ИМХО.
« Последнее редактирование: 05 Октября 2015, 15:39:26 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн gamayun

  • Активист
  • *
  • Сообщений: 823
  • Кто ищет, тот найдёт, может быть...
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #13 : 05 Октября 2015, 15:37:32 »
ALiEN175,
Vostro-A860:~$ script test
Скрипт запущен, файл - test
Vostro-A860:~$
В домашней директории появляется файл test-0 байт
Не бери в голову

Оффлайн ALiEN

  • Автор темы
  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Псевдослучайный генератор паролей
« Ответ #14 : 05 Октября 2015, 15:45:31 »
Sly_tom_cat,
берем базу распространенных слов, перегоняем в base64 и брутфорсим =)
А про длину паролей почитайте
http://habrahabr.ru/post/82753/

gamayun,
вы не мой скрипт запускаете, а выполняете команду /usr/bin/script
точку со слешем поставьте вначале
« Последнее редактирование: 05 Октября 2015, 15:48:57 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

 

Страница сгенерирована за 0.049 секунд. Запросов: 23.