はじめに
Hashcat で最も重要なパラメータの一つが -m です。
-m は Hash Mode(ハッシュモード) を指定するオプションで、次の意味を持ちます。
「このハッシュは、どのアルゴリズム/形式で作られたものか?」
例えば:
-
-m 0→ MD5 -
-m 100→ SHA1 -
-m 1000→ NTLM -
-m 3200→ bcrypt
この指定を間違えると、Signature unmatched というエラーが出たり、いつまで経っても解析できなかったりします。
つまり -m の選択は、Hashcat 成功の鍵 です。
Hashcat は何種類の -m をサポートしているのか?
結論から言うと:
Hashcat は 数百種類 の Hash Mode(
-m)をサポートしています。
その範囲は非常に広く、次のようなものを含みます。
- 一般的なハッシュアルゴリズム
- MD5, SHA1, SHA256, SHA512 など
- OS のパスワード形式
- NTLM, LM, Unix crypt 系(md5crypt, sha512crypt など)
- 強度の高い KDF
- bcrypt, PBKDF2 など
- 無線・プロトコル系
- WPA/WPA2 など
- ファイル形式のパスワード
- ZIP, RAR, 7z, MS Office, PDF など
単なる「ハッシュ関数」だけでなく、ソフトウェアやファイル形式ごとの独自フォーマットまで含めてサポートしているのが Hashcat の強みです。
どうやってサポートされている -m を確認する?
1. すべての一覧を見る(ページャ推奨)
hashcat -h | less
これで Hash Mode の一覧をスクロールしながら確認できます。
/md5 や /sha1 のように検索も可能です。
2. 特定の種類だけ絞り込む(実用的)
例えば:
hashcat -h | grep -i md5
hashcat -h | grep -i sha1
hashcat -h | grep -i ntlm
hashcat -h | grep -i wpa
hashcat -h | grep -i bcrypt
必要なものだけ表示できるので、実戦ではこの方法が一番よく使われます。
3. その -m が要求する「正しい形式」を確認する(重要)
Hash Mode によっては、単なるハッシュ文字列ではなく、
-
hash:saltの形式 - 特定のプレフィックス付き
- 複数フィールドを含む形式
などを要求するものがあります。
それを確認するには次のコマンドを使います。
hashcat --example-hashes -m 100
例えば:
hashcat --example-hashes -m 1000 # NTLM
hashcat --example-hashes -m 3200 # bcrypt
hashcat --example-hashes -m 22000 # WPA/WPA2
これにより、そのモードでどんな形式の入力が必要かが一目で分かります。
Signature unmatched を避けるための最重要コマンドです。
よく使われる -m の代表例(実戦向け)
-m |
ハッシュ形式 |
|---|---|
| 0 | MD5 |
| 100 | SHA1 |
| 1400 | SHA2-256 (SHA256) |
| 1700 | SHA2-512 (SHA512) |
| 1000 | NTLM |
| 3000 | LM |
| 3200 | bcrypt |
| 500 | md5crypt (Unix $1$) |
| 1500 | descrypt (Unix) |
| 1800 | sha512crypt (Unix $6$) |
| 2500 | WPA/WPA2(旧ハンドシェイク) |
| 22000 | WPA/WPA2(PBKDF2-PMKID+EAPOL) |
| 12500 | RAR3 |
| 13000 | RAR5 |
| 13600 | WinZip |
| 17200 | PKZIP |
| 9400 | MS Office 2007 |
| 9500 | MS Office 2010 |
| 9600 | MS Office 2013/2016 |
| 10500 | PDF 1.4–1.6 |
| 10700 | PDF 1.7(Acrobat 10+) |
実際によく遭遇するのは:
MD5 / SHA1 / NTLM / bcrypt / WPA / ZIP / RAR / Office / PDF
あたりです。
正しい -m の選び方(おすすめ手順)
-
ハッシュを観察する
- 文字数(32 / 40 / 64 hex など)
-
:や$、salt の有無
-
初期判定ツールを使う
hashid hash.txt -
Hashcat で候補を探す
hashcat -h | grep -i sha1 # 例 -
候補の
-mを選ぶ -
フォーマットを確認
hashcat --example-hashes -m XXX -
自分のハッシュと形式が一致するか確認してから実行
よくあるエラー:Signature unmatched
このエラーはほぼ確実に、
❌ 指定した
-mと、入力したハッシュの形式が一致していない
という意味です。
対処法は:
-
hashcat --example-hashes -m XXXで形式を確認する - もしくは別の
-mを試す
これで大抵解決します。
まとめ
-
-mは Hashcat における ハッシュ形式指定の中核パラメータ - Hashcat は 数百種類 の Hash Mode をサポートしている
- 覚える必要はない:
hashcat -h | grep-
hashcat --example-hashes -m XXX
で調べれば十分
- 正しい
-mを選べるかどうかで、解析の成否がほぼ決まる
最後に一言で言うと:
Hashcat 上級者は「
-mを暗記している人」ではなく、
「正しい-mを素早く調べて当てられる人」 です。