一応前提
マシン:win10,グラボはRTX3060Ti
解析対象:pdf
※注意
犯罪行為を助長するものではありません。悪用ダメ・絶対!
dokerの準備
dockerでGPUの認識を~等の初期部分は割愛しているのでお許しください。ネットの海にやり方は沢山転がっているので、適宜参照して頂ければと思います。
dockerのイメージはnvcr.io/nvidia/cuda:12.0.1-devel-ubuntu22.04
使っていきます。デフォでnvcc入っているみたいなので。
docker run --gpus all -it -d --name ubuntu nvcr.io/nvidia/cuda:12.0.1-devel-ubuntu22.04 bash
john the ripperの準備
apt -y install build-essential libssl-dev zlib1g-dev #私はいれたけど必要ないと思う
apt -y install yasm pkg-config libgmp-dev libpcap-dev libbz2-dev #私はいれたけど必要ないと思う
apt -y install nvidia-opencl-dev #私はいれたけど必要ないと思う
apt -y install clinfo ocl-icd-opencl-dev
wget https://github.com/magnumripper/JohnTheRipper/archive/bleeding-jumbo.zip
unzip bleeding-jumbo.zip
ここでclinfo
を確認する。
Number of platforms 0
何も認識されてない。調べたところ、pocl-opencl-icd
もいるらしい
apt -y install pocl-opencl-icd
clinfo
を確認する。ちゃんと認識されているのがわかる。GPUが認識されていないのが気になるけど...まあどんどん行きましょ。
hashを生成していきます。今回は解析対象としてtest.pdfを用意したよ。
perl john-bleeding-jumbo/run/pdf2john.pl test.pdf > pdf.hash
cat pdf.hash
で中身を確認する。
test.pdf:$pdf$2*3*128*-1028*1*16*566bfc1f30.........
test.pdf:
部分は解析の時に必要ないので消しておきます。vim大好き人間。
hashcatのインストール
apt -y install hashcat
hashcat -I
でGPUを認識しているかどうか確認する。
OpenCLの方はGPU認識されてなくてもOK。デバイス指定でグラボ指定するので、デバイスの番号だけメモってね。
認識されていたらアルファベット・数字・記号含めて総当たりしていく。
hashcat -m 10500 -a 3 -w 4 --session test -o result.txt -d 1 -1 ?a --increment pdf.hash ?1?1?1?1?1?1?1?1?1?1
-a 3
が総当たり、-d 1
でグラボのデバイスIDを指定している。
詳しくは公式が出しているオプション一覧とか見てね。
hashcatの使い方(オプションなど)はこの方の記事がわかりやすかったです。
こちらの方は神です。めっちゃ助けられた。はやく会いたかった。
後は解析結果を見るだけ。
まとめ
とりあえずパスワードは記号も含めて長く作っとけってことですね。記号まで含めて5桁探索しても数分だったことを考慮しながら...。まあ当たり前ですけど桁が増えるほど指数関数的に探索も増えていくので破られにくくなりますよね。普段意識出来てなかったけど、簡単なものだとすぐ破られちゃうよと危機意識を改めて持つことができました。簡単なパスワードなら解けるからって悪用はダメだよ!
間違えやアドバイスがあればご教示お願いしますm(._.)m
余談
本当はJohn the ripperだけで完結するつもりだったんですが、johnくんがどう頑張ってもGPU使ってくれなくて、諦めてhashcat使うことにしました。build周りとかめっちゃ時間取られたのに結局使わなかったの悲しい。だから余計なapt install入っていたりします(「私はいれたけど必要ないと思う」のところ)
参考にさせて頂いたもの