hashcat
hashcat is the world’s fastest and most advanced password recovery tool.

ベンチマークの実施

-b オプションを指定すれば、自分のPCでどのぐらいの性能が出るのか確認することができます。
1
λ hashcat --benchmark -m 0 --speed-only
2
hashcat (v4.2.1) starting in benchmark mode...
3
4
OpenCL Platform #1: Apple
5
=========================
6
* Device #1: Intel(R) Core(TM) i5-8210Y CPU @ 1.60GHz, skipped.
7
* Device #2: Intel(R) UHD Graphics 617, 384/1536 MB allocatable, 24MCU
8
9
Benchmark relevant options:
10
===========================
11
* --optimized-kernel-enable
12
13
Hashmode: 0 - MD5
14
15
Speed.Dev.#2.....: 403.4 MH/s (57.83ms) @ Accel:128 Loops:32 Thr:256 Vec:1
16
17
Started: Wed Apr 24 16:18:56 2019
18
Stopped: Wed Apr 24 16:19:02 2019
19
Copied!
オプション
意味
--benchmark -m 0
-b だと全てのベンチマークを取得するためmd5 に限定
--speed-only
計算速度のみを表示
ということで、403.4 MH/s の速度が出るそうです。MH/sMega Hash per second の略です。

アタックモードで最初から定義されている文字種

  • ?l = abcdefghijklmnopqrstuvwxyz
  • ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • ?d = 0123456789
  • ?h = 0123456789abcdef
  • ?H = 0123456789ABCDEF
  • ?s = «space»!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~
  • ?a = ?l?u?d?s
  • ?b = 0x00 - 0xff

マスクを利用する例

平文の長さがわかっている場合などで有用
1
λ echo -n "xyz" | md5
2
d16fb36f0911f878998c136191af705e
3
4
λ hashcat -a 3 -m 0 d16fb36f0911f878998c136191af705e "?a?a?a"
5
.....
6
7
λ hashcat -a 3 -m 0 d16fb36f0911f878998c136191af705e "?a?a?a" --show
8
d16fb36f0911f878998c136191af705e:xyz
Copied!
オプション
意味
-a 3
アタックモードをブルートフォースに設定
-m 0
ハッシュモードを MD5 に設定
?a?a?a
3文字として解析
--show
解析した結果を

具体例

1文字~8文字まで順番にブルートフォースで解析する例

1
λ echo -n "abcde" | md5
2
ab56b4d92b40713acc5af89985d4b786
3
4
λ hashcat -a 3 -m 0 --increment --increment-min=1 --increment-max=8 ab56b4d92b40713acc5af89985d4b786
5
.....
6
7
λ hashcat -a 3 -m 0 --increment --increment-min=1 --increment-max=8 ab56b4d92b40713acc5af89985d4b786 --show
8
ab56b4d92b40713acc5af89985d4b786:abcde
Copied!
オプション
意味
-a 3
アタックモードをブルートフォースに設定
-m 0
ハッシュモードを MD5 に設定
--increment
平文の文字数を1つずつ増やして試行する
--increment-min=1
平文の最小の文字数を1に設定
--increment-max=8
平文の最大の文字数を8に設定
--show
解析した結果を表示

文字種をカスタマイズする例

1
λ echo -n "dark-lambda" | md5
2
667e8e6657c53439df589d9a269792c5
3
4
λ hashcat -a 3 -m 0 667e8e6657c53439df589d9a269792c5 -1 abcdefghijklmnopqrstuvwxyz- "?1?1?1?1?1?1?1?1?1?1?1"
5
...
Copied!
例として11文字の dark-lambda を解析してみましょう。
出現する文字はアルファベットと - だけとわかっているので、その情報を使います。
カスタム文字種を利用する場合は -1 abcdefghijklmnopqrstuvwxyz- のように指定し、?1?1?1?1 のように利用します。一応1~4までカスタム文字種を設定できるようです。
これを実行すると、なかなか終わりません。(コンピュータの性能によります)
現在の進捗を確認するためにエンターキーを押してみましょう。
1
...
2
Session..........: hashcat
3
Status...........: Running
4
Hash.Type........: MD5
5
Hash.Target......: 028a44e44a6a2edce609caabdec635be
6
Time.Started.....: Wed Apr 24 15:06:04 2019 (1 min, 59 secs)
7
Time.Estimated...: Tue Sep 7 15:43:23 2021 (2 years, 137 days)
8
Guess.Mask.......: ?1?1?1?1?1?1?1?1?1?1?1 [11]
9
Guess.Charset....: -1 abcdefghijklmnopqrstuvwxyz-, -2 Undefined, -3 Undefined, -4 Undefined
10
Guess.Queue......: 1/1 (100.00%)
11
Speed.Dev.#2.....: 74208.8 kH/s (3.06ms) @ Accel:16 Loops:4 Thr:256 Vec:1
12
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
13
Progress.........: 9157214208/5559060566555523 (0.00%)
14
Rejected.........: 0/9157214208 (0.00%)
15
Restore.Point....: 393216/282429536481 (0.00%)
16
Candidates.#2....: cvjgrqjaner -> pfjcu-verer
17
18
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
Copied!
Time.Estimated を確認してみると Tue Sep 7 15:43:23 2021 (2 years, 137 days) とあるので、推定で2年ちょっとかかるようです。
待ちきれないので、文字種類をもっと限定してみます。ちょっとずるいですが、出現する文字のみに絞りました。
1
λ hashcat -a 3 -m 0 667e8e6657c53439df589d9a269792c5 -2 abdklmr- "?2?2?2?2?2?2?2?2?2?2?2"
2
...
3
4
Session..........: hashcat
5
Status...........: Running
6
Hash.Type........: MD5
7
Hash.Target......: 667e8e6657c53439df589d9a269792c5
8
Time.Started.....: Wed Apr 24 15:15:16 2019 (1 sec)
9
Time.Estimated...: Wed Apr 24 15:16:30 2019 (1 min, 13 secs)
10
Guess.Mask.......: ?2?2?2?2?2?2?2?2?2?2?2 [11]
11
Guess.Charset....: -1 Undefined, -2 abdklmr-, -3 Undefined, -4 Undefined
12
Guess.Queue......: 1/1 (100.00%)
13
Speed.Dev.#2.....: 114.7 MH/s (4.58ms) @ Accel:16 Loops:8 Thr:256 Vec:1
14
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
15
Progress.........: 134479872/8589934592 (1.57%)
16
Rejected.........: 0/134479872 (0.00%)
17
Restore.Point....: 196608/16777216 (1.17%)
18
Candidates.#2....: mlkarallrll -> -lk---k--ma
Copied!
今度は1分ちょっとで解析が終わりそうです。
1
λ hashcat -a 3 -m 0 667e8e6657c53439df589d9a269792c5 -2 abdklmr- "?2?2?2?2?2?2?2?2?2?2?2" --show
2
667e8e6657c53439df589d9a269792c5:dark-lambda
Copied!
ちゃんと解析できました。
このように hashcat に外部からナレッジを与えることで、探索すべき解空間を減らし、ある程度の文字数であれば、普通のコンピュータでも現実時間で解けるようになります。

Mac の警告

ATTENTION! Pure (unoptimized) OpenCL kernels selected. This enables cracking passwords and salts > length 32 but for the price of drastically reduced performance. If you want to switch to optimized OpenCL kernels, append -O to your commandline.
こんな感じの警告が出る場合、オプションに -O を付けると良いです。

参考リソース

Last modified 2yr ago