hashcat hashcat is the world’s fastest and most advanced password recovery tool.
ベンチマークの実施
-b
オプションを指定すれば、自分のPCでどのぐらいの性能が出るのか確認することができます。
Copy λ hashcat --benchmark -m 0 --speed-only
hashcat (v4.2.1) starting in benchmark mode...
OpenCL Platform #1: Apple
=========================
* Device #1: Intel(R) Core(TM) i5-8210Y CPU @ 1.60GHz, skipped.
* Device #2: Intel(R) UHD Graphics 617, 384/1536 MB allocatable, 24MCU
Benchmark relevant options:
===========================
* --optimized-kernel-enable
Hashmode: 0 - MD5
Speed.Dev.#2.....: 403.4 MH/s (57.83ms) @ Accel:128 Loops:32 Thr:256 Vec:1
Started: Wed Apr 24 16:18:56 2019
Stopped: Wed Apr 24 16:19:02 2019
ということで、403.4 MH/s
の速度が出るそうです。MH/s
は Mega Hash per second
の略です。
アタックモードで最初から定義されている文字種
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?s = «space»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
マスクを利用する例
平文の長さがわかっている場合などで有用
Copy λ echo -n "xyz" | md5
d16fb36f0911f878998c136191af705e
λ hashcat -a 3 -m 0 d16fb36f0911f878998c136191af705e "?a?a?a"
.....
λ hashcat -a 3 -m 0 d16fb36f0911f878998c136191af705e "?a?a?a" --show
d16fb36f0911f878998c136191af705e:xyz
具体例
1文字~8文字まで順番にブルートフォースで解析する例
Copy λ echo -n "abcde" | md5
ab56b4d92b40713acc5af89985d4b786
λ hashcat -a 3 -m 0 --increment --increment-min=1 --increment-max=8 ab56b4d92b40713acc5af89985d4b786
.....
λ hashcat -a 3 -m 0 --increment --increment-min=1 --increment-max=8 ab56b4d92b40713acc5af89985d4b786 --show
ab56b4d92b40713acc5af89985d4b786:abcde
文字種をカスタマイズする例
Copy λ echo -n "dark-lambda" | md5
667e8e6657c53439df589d9a269792c5
λ hashcat -a 3 -m 0 667e8e6657c53439df589d9a269792c5 -1 abcdefghijklmnopqrstuvwxyz- "?1?1?1?1?1?1?1?1?1?1?1"
...
例として11文字の dark-lambda
を解析してみましょう。
出現する文字はアルファベットと -
だけとわかっているので、その情報を使います。
カスタム文字種を利用する場合は -1 abcdefghijklmnopqrstuvwxyz-
のように指定し、?1?1?1?1
のように利用します。一応1~4までカスタム文字種を設定できるようです。
これを実行すると、なかなか終わりません。(コンピュータの性能によります)
現在の進捗を確認するためにエンターキーを押してみましょう。
Copy ...
Session..........: hashcat
Status...........: Running
Hash.Type........: MD5
Hash.Target......: 028a44e44a6a2edce609caabdec635be
Time.Started.....: Wed Apr 24 15:06:04 2019 (1 min, 59 secs)
Time.Estimated...: Tue Sep 7 15:43:23 2021 (2 years, 137 days)
Guess.Mask.......: ?1?1?1?1?1?1?1?1?1?1?1 [11]
Guess.Charset....: -1 abcdefghijklmnopqrstuvwxyz-, -2 Undefined, -3 Undefined, -4 Undefined
Guess.Queue......: 1/1 (100.00%)
Speed.Dev.#2.....: 74208.8 kH/s (3.06ms) @ Accel:16 Loops:4 Thr:256 Vec:1
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 9157214208/5559060566555523 (0.00%)
Rejected.........: 0/9157214208 (0.00%)
Restore.Point....: 393216/282429536481 (0.00%)
Candidates.#2....: cvjgrqjaner -> pfjcu-verer
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
Time.Estimated
を確認してみると Tue Sep 7 15:43:23 2021 (2 years, 137 days)
とあるので、推定で2年ちょっとかかるようです。
待ちきれないので、文字種類をもっと限定してみます。ちょっとずるいですが、出現する文字のみに絞りました。
Copy λ hashcat -a 3 -m 0 667e8e6657c53439df589d9a269792c5 -2 abdklmr- "?2?2?2?2?2?2?2?2?2?2?2"
...
Session..........: hashcat
Status...........: Running
Hash.Type........: MD5
Hash.Target......: 667e8e6657c53439df589d9a269792c5
Time.Started.....: Wed Apr 24 15:15:16 2019 (1 sec )
Time.Estimated...: Wed Apr 24 15:16:30 2019 (1 min, 13 secs )
Guess.Mask.......: ?2?2?2?2?2?2?2?2?2?2?2 [11]
Guess.Charset....: -1 Undefined, -2 abdklmr-, -3 Undefined, -4 Undefined
Guess.Queue......: 1/1 (100.00%)
Speed.Dev.#2.....: 114.7 MH/s (4.58ms) @ Accel:16 Loops:8 Thr:256 Vec:1
Recovered........: 0/1 (0.00%) Digests, 0/1 ( 0.00% ) Salts
Progress.........: 134479872/8589934592 (1.57%)
Rejected.........: 0/134479872 (0.00%)
Restore.Point....: 196608/16777216 (1.17%)
Candidates.#2....: mlkarallrll - > -lk---k--ma
今度は1分ちょっとで解析が終わりそうです。
Copy λ hashcat -a 3 -m 0 667e8e6657c53439df589d9a269792c5 -2 abdklmr- "?2?2?2?2?2?2?2?2?2?2?2" --show
667e8e6657c53439df589d9a269792c5:dark-lambda
ちゃんと解析できました。
このように 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
を付けると良いです。
参考リソース