個人的な興味から、GPUを利用したハッシュ解析ツール『hashcat』をインストールしてみたので、その備忘。 Ubuntu Desktopの場合だとaptからインストールが可能(ドライバ等に関してはまた別途インストールが必要)だが、Ubuntu Serverの場合はコンパイルをする必要がある。 まず、以下のコマンドでコンパイル用のパッケージを導入する。
sudo apt update
sudo apt install cmake build-essential checkinstall git
パッケージの導入後、以下のコマンドでソースからコンパイルを行う。
git clone https://github.com/hashcat/hashcat
cd hashcat
git submodule update --init
sudo make && sudo checkinstall
これでインストールができた。 ただ、この時点ではまだGPUを使うためのパッケージ(OpenCLやらCUDAのツールやらGPUのドライバなど)が入っていないため、hashcatは利用できない。 Nvidiaのボードを使用しているのであれば、以下のコマンドを実行してインストールをする。
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-367
あとは、sudoからhashcatを実行すればいい。
以下例のようにコマンドを実行することで、hashのみが記述されたファイル(test.hash)を読み込んで解析を行ってくれる。
解析したハッシュと解析結果は、-oで指定したファイルに「$hash:$anser
」の形式で出力される。
sudo hashcat -m 100 -a 3 ./test.hash ?a?a?a?a? -o ./test.hash.out
以下、主要なオプションについて記述。 詳細なオプションについてはこちらを参照。
- -m … 解析対象ハッシュの種別指定。md5が0、sha1が100など。詳細についてはmanを参照。
- -a … アタックモード。3はブルートフォース(mask)でのモード。その他については以下。
- 1 … コンビ(組合せ)での解析モード
- 3 … ブルートフォース(mask)での解析モード
- 6 … ワードリスト+ブルートフォースでの解析モード
- 7 … ブルートフォース+ワードリストでの解析モード
- -w … GPUへの処理負荷を指定。最大で4。デフォルトは2。
- mask … ↑の例だと「?a?a?a?a?a」になってるとこ。以下の種類があり、「-1 ?l?d」のようにカスタムマスクも設定可能(マスクファイルではカスタムマスクは使用不可)。
- ?a … 全ての文字種別
- ?l … アルファベット小文字
- ?u … アルファベット大文字
- ?d … 数字
- ?s … 記号
- -o … 解析結果の出力先ファイル
なお、salt付きのhashを解析する場合、以下のような形式でhashファイルを作成する。
$hash:$salt