kwprocessor - パスワード推測のためのキーボード・ウォーク・ジェネレーター
hashcat/kwprocessor は、キーボード上で上下左右に図形を描くことで作れるタイプのパスワード文字列を類推し、総当たりのリストを生成するためのジェネレーターです。
キーボード配置から作ったよくあるパスワード
昔からよくあるパスワードの作り方として、例えば "qwerty" なんていうのがあります。キーボードの左上から順番に右へ一文字ずつ打っていくとこうなりますね。大昔はこれでも「ランダム」で「推測されにくい」パスワードだったのかもしれません。
しかし、とある2020年のありがちなパスワード・ランキングだと、"qwerty" はなんと12位。"1234" や "000000" よりも良く使われ、そして当然ながら流出しているそうです。
他にもこのパターンのものが多数ランク上位に出ているようです。
キーボード配置からパスワードを作る
「横一列だから甘いんだ。縦も横も使えば難しいパスワードが作れる」と言う人もいるかもしれませんが、本当でしょうか?
kwprocessor は、キーボード上で縦・横にキーを選んでいった際にできる文字列を生成するというツールです。
この図だと、q から始めて右に3個、下に1個、左に3個、という逆コの字型の並びを示すわけですが、kwprocessor はこのような並びでできる文字列を一括で生成してくれます。
ubuntu$ ./kwp --output-file results.txt basechars/q.base keymaps/en-us.keymap routes/2-to-16-max-3-direction-changes.route
これで出来上がるのが以下のようなファイル。1200行ほどの冒頭です。
qa qw q1 qaz qwe qwer qwert qwerty qwertyu qwertyui qwertyuio qwertyuiop qws q1q qwq q1` qas q12 qaq qw2 qwsx q1qa qasd q123 qaq1 q1qaz qasdf q1234
「キーボードの"q" を起点とし、英語(米国)キーボードで、2~16字までで2回方向を変えた文字列」 を返してくれます。
コマンドに与えているパラメーターファイルですが、
basechars では"q" だけでなく起点となるキーを多数指定することができます。
keymaps ではキーボード配列をカスタマイズできます。ドイツやロシアのキー配列ファイルも用意されていますし、日本語配列を作ることもできるでしょう。
routes ファイルでは上下左右へいくつ動くか、という移動パターンを数字列として複数与えます。一直線や往復、コの字型などのパターンは最初から用意されていますし、独自のパターンを作って与えることもできます。
コマンドラインオプションでは、シフトキーを押した場合やAltキーを押した場合(ウムラウトとかの出力につながるそう)を含めるようにもできているため、途中で大文字や記号を混ぜるという操作をして作られたパスワードも再現できるでしょう。
これらのパターンから自動生成されたリストを有り得るパスワードのリストとして使うことで、総当たりよりもはるかに少ない試行回数でパスワードの発見と突破ができるかもしれません。
この手のパスワードの作り方を今でもしている人がいたら、やり方を変えた方が無難でしょうね。
via Hacker News