Chromeで「パスワード生成」がでない
Webサービスによってはlogin画面の作りが凝りすぎていてChromeなどのパスワード作成機能が働かないことがあります。そういうときのコードです。
方針
- argv でパスワードの長さ(plen) とスペシャルキャラクタ(spchr)を指定できるようにしたい。
- 大文字小文字数字を混ぜて上記のspchrを入れさせたい。
- stringからimportすればいいか
- そうすると、random.sampleで必要な文字数をとってspchrをくっつけて random.shuffleすればよいかな
mkpasswd.py
#!/usr/bin/env python3
from sys import argv
from string import ascii_letters, digits
from random import shuffle, sample
def main():
print("Usage %s <length> <spchars>\n$ %s 12 '-,' # length is 12, generated passwd contains '-' and ','"%(argv[0], argv[0]))
plen, spchr = (12, '') # デフォルト値を設定
try: plen = int(argv[1]) # argv[1]が数字なら置換
except: pass
try: spchr = argv[2] # argv[2]があれば置換
except: pass
lentotal = len(ascii_letters+digits+spchr)
if plen > lentotal: plen = lentotal # plenが大きすぎるときは削る
if plen <= len(spchr): plen = len(spchr) + 1 # plenが小さすぎるなら足す
print("Generate length:%d, contains:[%s]"%(plen, spchr)) # 変更される可能性があるので表示してあげる
pwd = sample(ascii_letters+digits, plen-len(spchr))+list(spchr)
shuffle(pwd) # shuffleはインプレース置換
print(''.join(pwd)) # printしておしまい
return None
if __name__ == "__main__": main()
念の為ご注意
我ながら雑なコードですね。なお、spchrは__全て__出力されるパスワードで使われます。