Любые генераторы паролей Python, которые можно читать и произносить?

Достаточно просто создать случайную строку в Python (например, шоу энтропии Python ). Но есть ли там проекты Python, которые будут генерировать строки паролей, которые могут быть как произносимыми, так и читабельными? По понятным, я имею в виду не помещать как нули, так и O в одну строку и т. Д. Мне все равно, есть ли у него максимальная энтропия, просто что-то лучше, чем я, вероятно, выберет. 🙂

6 Solutions collect form web for “Любые генераторы паролей Python, которые можно читать и произносить?”

Если вы действительно ищете что-то «лучше, чем я могу составить» и «произносить», тогда, возможно, просто используйте random.sample() чтобы random.sample() из списка согласных-гласных-согласных random.sample() :

 import string import itertools import random initial_consonants = (set(string.ascii_lowercase) - set('aeiou') # remove those easily confused with others - set('qxc') # add some crunchy clusters | set(['bl', 'br', 'cl', 'cr', 'dr', 'fl', 'fr', 'gl', 'gr', 'pl', 'pr', 'sk', 'sl', 'sm', 'sn', 'sp', 'st', 'str', 'sw', 'tr']) ) final_consonants = (set(string.ascii_lowercase) - set('aeiou') # confusable - set('qxcsj') # crunchy clusters | set(['ct', 'ft', 'mp', 'nd', 'ng', 'nk', 'nt', 'pt', 'sk', 'sp', 'ss', 'st']) ) vowels = 'aeiou' # we'll keep this simple # each syllable is consonant-vowel-consonant "pronounceable" syllables = map(''.join, itertools.product(initial_consonants, vowels, final_consonants)) # you could trow in number combinations, maybe capitalized versions... def gibberish(wordcount, wordlist=syllables): return ' '.join(random.sample(wordlist, wordcount)) 

Затем вы просто выбираете подходящее количество «слов»:

 >>> len(syllables) 5320 >>> gibberish(4) 'nong fromp glosk zunt' >>> gibberish(5) 'samp nuv fog blew grig' >>> gibberish(10) 'strot fray hag sting skask stim grun prug spaf mond' 

Моя статистика немного нечеткая, но этого может быть достаточно для целей, не связанных с NSA. Обратите внимание, что random.sample() работает без замены. Я должен также указать, что если злонамеренная сторона знает, что вы используете этот метод, это будет уязвимым для атаки словаря. Это поможет помощь щепоткам соли .

Обновление . Для тех, кого интересует, обновленная версия с поддержкой fork доступна на странице https://github.com/greghaskins/gibberish .

Вы можете создать простой текстовый генератор Маркова, а затем подготовить его с помощью списка обычных / произносимых слов.

Некоторое время назад я написал простой генератор для удовольствия. Вот:

 #! /usr/bin/python from cStringIO import StringIO from sys import argv import random USAGE="usage: ./markov.py input_file" END_TAG='<end>' SEPARATOR='\n' def append(model,token, target): if token not in model: model[token]=[] model[token].append(target) def add_to_model(model,word, end_tag=END_TAG): append(model,'',word[:2]) for i in xrange(len(word)-2): append(model, word[i:i+2],word[i+2]) append(model,word[-2:],end_tag) def generate(model, end_tag=END_TAG): ret='' while True: cur=random.choice(model[ret[-2:]]) if cur==end_tag: break else: ret+=cur return ret if __name__=='__main__': if len(argv)>1: data=file(argv[1],'r').read().split(SEPARATOR) model={} for word in data: add_to_model(model,word) print generate(model) else: print USAGE 

Мне нравится версия Саймона Сапина: http://exyr.org/2011/random-pronounceable-passwords/

Я большой поклонник генератора паролей xkcd . Очень настраиваемый, устанавливаемый на диск, а также функция «acrostic» обеспечивает отличный способ дать пользователям ключ памяти для их сгенерированного набора слов.

Я предполагаю, что проект, над которым я работал, применим. Я изучил Марковскую модель из более чем 14 миллионов паролей (с дампа паролей RockYou.com) и таким образом создал искусственные пароли. Сообщение в блоге (и сопроводительный код) здесь . Некоторые выборочные искусственные пароли:

  • tablester111
  • genny0
  • mikk92
  • lvingree10633769
  • bubuzzarap71666
  • isamistilloro13020
  • dunl0velyiristalecasia4799

тарабарщина

 import string import random __all__ = ('generate_word', 'generate_words') initial_consonants = list(set(string.ascii_lowercase) - set('aeiou') # remove those easily confused with others - set('qxc') # add some crunchy clusters | set(['bl', 'br', 'cl', 'cr', 'dr', 'fl', 'fr', 'gl', 'gr', 'pl', 'pr', 'sk', 'sl', 'sm', 'sn', 'sp', 'st', 'str', 'sw', 'tr', 'ch', 'sh']) ) final_consonants = list(set(string.ascii_lowercase) - set('aeiou') # remove the confusables - set('qxcsj') # crunchy clusters | set(['ct', 'ft', 'mp', 'nd', 'ng', 'nk', 'nt', 'pt', 'sk', 'sp', 'ss', 'st', 'ch', 'sh']) ) vowels = 'aeiou' def generate_word(): """Returns a random consonant-vowel-consonant pseudo-word.""" return ''.join(random.choice(s) for s in (initial_consonants, vowels, final_consonants)) def generate_words(wordcount): """Returns a list of ``wordcount`` pseudo-words.""" return [generate_word() for _ in range(wordcount)] def console_main(): import sys try: wordcount = int(sys.argv[1]) except (IndexError, ValueError): wordcount = 1 print(' '.join(generate_words(wordcount))) if __name__ == '__main__': console_main() 
  • Linux / Python: как я могу скрыть конфиденциальную информацию в файле Python, чтобы разработчики в среде не могли получить к ней доступ?
  • Как использовать встроенные пароли для сброса / изменения видов с помощью собственных шаблонов
  • Введите скрытый пароль в python
  • Запросы s.get (url, verify = False) error
  • Получение ввода пароля командной строки в Python
  • как установить имя пользователя и пароль в tkinter python
  • Высококачественный, простой генератор случайных паролей
  • Защищенные параметры для хранения пароля Openssl на сервере (Linux, Python, CherryPy)
  • Python - лучший язык программирования в мире.