私はPythonでランダムなパスワードジェネレータを作っています。ユーザとパスワードの数からテンプレートを取り出し、そのテンプレートに従うランダムなパスワードを作成します。このコードを繰り返しにくくするにはどうすればよいですか?ランダムパスワードジェネレータ
今のところうまくいきますが、基本的に同じことをする4つのif文がありますが、反復性を低くする方法がわかりません。ここで
は私が持っているものだ -#!/usr/bin/python
import random, sys, string
digit = string.digits
lower = string.lowercase
upper = string.uppercase
symbol = string.punctuation
if len(sys.argv) != 3:
print 'error, not enough arguments, need a template and the number of passwords'
print 'ex: ./passgen Template1! 100'
else:
passlist =[]
template = sys.argv[1]
for j in range(0,int(sys.argv[2])):
password = ''
charSet = ''
for i in template: #runs through every character in the template provided by the user and checks what each character is and adds the appropriate string constants to the character set
if i.islower():
charSet += lower
password += charSet[random.randint(0,len(charSet)-1)]
charSet = ''
elif i.isupper():
charSet += upper
password += charSet[random.randint(0,len(charSet)-1)]
charSet = ''
elif i.isdigit():
charSet += digit
password += charSet[random.randint(0,len(charSet)-1)]
charSet = ''
elif i in string.punctuation:
charSet += symbol
password += charSet[random.randint(0,len(charSet)-1)]
charSet = ''
passlist.append(password)
print passlist
私は文は、それが冗長と思われる場合、私はすべてのために、このアクション
password += charSet[random.randint(0,len(charSet)-1)]
charSet = ''
をやっていることを好きではないが、私は知りませんそれを行うための他の方法。
例入力と出力 -
./passgen.py Password1! 10
['Hozxmtll1*', 'Grprwixi2,', 'Fwqarvcu5.', 'Ikfywvth6_', 'Sndcnecv3&', 'Pkeerxpm0(', '[email protected]', 'Ibftiisa8_', "Xiljjsss8'", 'Ukfupsri6]']
パスワードを生成する方法を正確に説明できますか?つまり、入力とは何か、期待される出力は何ですか?うまくいけば、あなたも実際のパスワードを生成するためにこれを使用していないでしょう。 – pvg
@pvg私はペンテストを学んでいるので、最終目標は辞書攻撃をするプログラムを作ることです。メインポストに入力と出力を追加例 – Muffinator
パスワードを生成する目的のプロセスを記述する必要があります。 – pvg