文字列がパスワードにふさわしいかチェックする。

八岐大蛇
※写真と本文は関係ありません。


文字列が辞書に載っていない物かどうかをコマンドで調べたい。

cracklib-check – Check passwords using libcrack2

$ echo hogefuga | cracklib-check
hogefuga: OK
$ echo test123 | cracklib-check
test123: 辞書の単語に基づいています
$ echo 1234123 | cracklib-check
1234123: 異なる文字が十分に含まれていません

スクリプト書いた。

# cat check_password.sh
#!/bin/sh

PASSWDFILE=$(cat /root/password.txt)    # ID:Password の形式のリスト
IFS_back=$IFS
IFS=$'\n'

for LINE in $VPASSWDFILE
do
	PASSWORD=$(echo $LINE | cut -d: -f2)
	USERID=$(echo $LINE | cut -d: -f1)
	RESULTS=$(echo $PASSWORD | cracklib-check)    # OKなら "fugagaga: OK" と帰ってくる。
	CHECK_OK=$(echo $RESULTS | cut -d: -f2 | sed -e "s/^\ //")
	if [ $CHECK_OK != 'OK'  ]
	then
		echo "$USERID@example.or.jp:$RESULTS"
	fi
done

IFS=$IFS_back

こんな感じで結果が出力される。
asao@example.or.jp:waaaaa: it is based on a (reversed) dictionary word
fax@example.or.jp:fax: it is too short
oshi@example.or.jp:lalalalala: it is based on a dictionary word
※パスワードは適当です。