「password」という単語と、「best64.rule」というhashcatのルールファイルを与えて、以下のようなワードリストを自動生成する:
password
drowssap
PASSWORD
Password
password0
password1
password2
...
password01
password02
password11
...
passw123
passwman
passwdog
1password
thepassword
dassword
massword
...
単語を与えれば自動でその単語をパスワードとして使われそうな形に加工してる。
作り方
hashcat --stdout --force <単語が入ったファイル> -r <ルールファイル>
今回は例として「password」という単語からワードリストを生成するので、origin.txtという名のファイル名に「password」と書き込んでおく:
┌──(kali㉿kali)-[~]
└─$ cat origin.txt
password
ルールファイルは/usr/share/hashcat/rules/にある:
┌──(kali㉿kali)-[/usr/share/hashcat/rules]
└─$ ls
Incisive-leetspeak.rule generated2.rule
InsidePro-HashManager.rule hybrid
InsidePro-PasswordsPro.rule leetspeak.rule
T0XlC-insert_00-99_1950-2050_toprules_0_F.rule oscommerce.rule
T0XlC-insert_space_and_special_0_F.rule rockyou-30000.rule
T0XlC-insert_top_100_passwords_1_G.rule specific.rule
T0XlC.rule toggles1.rule
T0XlCv1.rule toggles2.rule
best64.rule toggles3.rule
combinator.rule toggles4.rule
d3ad0ne.rule toggles5.rule
dive.rule unix-ninja-leetspeak.rule
個人的にはbest64.ruleをよく使ってます。
加工したい単語が入ったファイル(origin.txt)とルールファイル(/usr/share/hashcat/rules/best64.rule)が用意できたので、これらを次のようにhashcat
に与えてやる:
bash
hashcat --stdout --force origin.txt -r /usr/share/hashcat/rules/best64.rule > newpass.txt
これで、新たなワードリストnewpass.txtが作成される(リダイレクトしないと、上記のコマンドの実行結果はすべて標準出力されてしまいます)。
ルールファイルの内容について
上で使用したルールファイルbest64.ruleの中身には以下のような記述がある:
## nothing, reverse, case... base stuff
:
r
u
T0
## simple number append
$0
$1
$2
...
## high frequency overwrite at end
] $a
] ] $s
...
それぞれには意味があって
-
:
= 何もしない(nothing) -
r
= 単語の文字列を反転させる(reverse) -
T0
= 0文字目の大文字・小文字を反転(Toggle 0) -
$1
= 単語の末尾に「1」を付ける -
$0 $2
= 単語の末尾に「02」を付ける -
$s
= 単語の末尾に「s」を付ける -
] $a
= 単語の末尾の一文字を消して、末尾に「a」を付ける
詳しくは以下を参照: