Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
hashdeep — メッセージダイジェスト(MD5、SHA-1、SHA-256、Tiger、Whirlpool)を計算するためのクロスプラットフォームハッシュツールセット。再帰的なディレクトリトラバーサルとファイル整合性監査機能を備えています。 | Kitploit
ツール/GitHubGitHub/jessek/hashdeep
ハッシュ分析フォレンジックデータ復旧デジタルフォレンジック
GitHubjessek/hashdeep

hashdeep

メッセージダイジェスト(MD5、SHA-1、SHA-256、Tiger、Whirlpool)を計算するためのクロスプラットフォームハッシュツールセット。再帰的なディレクトリトラバーサルとファイル整合性監査機能を備えています。

リポジトリを見る
7861358年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

これはmd5deepです。任意の数のファイルに対してハッシュ(メッセージダイジェスト)を計算し、オプションでディレクトリ構造を再帰的に探索するクロスプラットフォームツールのセットです。また、既知のハッシュのリストを受け取り、入力ファイルのハッシュが既知のハッシュのいずれかに一致するか一致しないかに応じてファイル名を表示することもできます。このバージョンはMD5、SHA-1、SHA-256、Tiger、Whirlpoolハッシュをサポートしています。

リリース間の変更点については、ファイル NEWS を参照してください。

このプログラムのライセンス情報については、ファイル COPYING を参照してください。

(一般的な)コンパイルおよびインストール手順については、ファイル INSTALL を参照してください。以下は多くの場合にそのまま動作する簡略版です:

root@kitploit:~
sh bootstrap.sh # autoconf, automake を実行
./configure
make
make install

デフォルトの場所にインストールするには、通常 root 権限が必要です。その場合は sudo コマンドが便利です。configure スクリプトの --prefix オプションを使用して、別のインストール場所を指定できます。例えば、/home/foo/bin にインストールするには次のようにします:

$ ./configure --prefix=/home/foo

プログラムの使用方法に関する完全なドキュメントはプロジェクトのホームページにあります:https://github.com/jessek/hashdeep

リリースハッシュ

最新リリースはバージョン4.4です。以下はWin32版のハッシュです:

  • MD5 047ff5311d821f667150f37695bd01b3
  • SHA256 d5e85933e74e5ba6a73f67346bc2e765075d26949c831a428166c92772f67dbc

md5deep と hashdeep の違い

歴史的な理由により、このプログラムは"hashdeep"および"md5deep"という名前で実行された場合に異なるオプションと機能を持ちます。

hashdeepには"audit"(監査)機能があり、既知のハッシュのリストを使用して一連のファイルを監査できます。 エラーは標準エラー出力に報告されます。ファイルが指定されていない場合は、標準入力から読み取ります。

root@kitploit:~
-a 監査モード。各入力ファイルが既知のハッシュのセットと照合されます。
   監査は、各入力ファイルが既知のセット内のちょうど1つのファイルと一致した場合に
   合格とみなされます。衝突、新しいファイル、欠落ファイルがあると監査は失敗します。
   このフラグのみを使用すると、"Audit passed" または "Audit Failed" のメッセージが表示されます。
   -v = 各カテゴリのファイル数を表示
   -v -v = すべての不一致を表示
   -v -v -v = 調査したすべてのファイルと既知のすべてのファイルの結果を表示

-k <file> - 監査ファイルをロードするには -k オプションを使用します

監査を実行するには:

root@kitploit:~
hashdeep -r dir > /tmp/auditfile            # 監査ファイルを生成
hashdeep -a -k /tmp/auditfile -r dir        # 監査をテスト

監査は標準のhashdeep出力ファイルを使用して実行されることに注意してください。(内部的には、監査はハッシュ処理の一部として計算されます。)

Unicodeの問題

POSIXベースの現代的なコンピュータシステムでは、ファイル名はアプリケーションが望むように表示されるバイトのシーケンスと見なされます。つまり、ファイル名には通常ASCIIが含まれますが、UTF-8、UTF-16、latin1、または無効なUnicodeエンコーディングも含まれる可能性があります。

Windowsベースのシステムには、ASCIIベースのファイル名用のAPIコールセットと、UCS-2(「単にコードポイントを16ビットコードユニットとして使用することで固定長フォーマットを生成し、範囲0-0xFFFFの63,488コードポイントに対してUTF-16とまったく同じ結果を生成する」とwikipediaにある)でエンコードされたファイル名用の別のAPIコールセットがあります。しかしwikipediaのトークページでは、この記述の事実正確性が議論されています。Windowsが実際に何を行っているか誰も完全には確信しておらず、Windows自身も一貫していない可能性があることは明らかです。

このプログラムのバージョン3では、WindowsでTCHAR変数を使用してファイル名を保持し、それらを表示せず代わりに"?"を表示することでこの問題に対処していました。バージョン4では、Windows関数WideCharToMultiByteを使用して、できるだけ早くTCHAR文字列をstd::string文字列に変換します。Unicodeを表示するときにエスケープするためのフラグが追加されました。

WindowsでUTF-8のファイル名を開く方法は(どうやら)ありません。MultiByteToWideCharを使用してマルチバイトファイル名に戻す必要があります。

幸いなことに、実際に戻す必要はほとんどありません。

Windowsでは、ハッシュ化されるファイルにUnicode文字を含めることができますが、ハッシュが含まれるファイルはASCII名でなければならないことに注意してください。

WINDOWS用のコンパイル:

-D_UNICODE を定義すると、TCHAR が 'wchar_t' として定義されます。

POSIX用のコンパイル:

-D_UNICODE が定義されていないため、TCHAR は 'char' として定義されます。

以前は、win32関数は #ifdef 文で制御されていました。例えば次のように:

root@kitploit:~
#ifdef _WIN32
  _wfullpath(d_name,fn,PATH_MAX);
#else
  if (NULL == realpath(fn,d_name))
    return TRUE;
#endif

また、tchar-local.hというファイルがあり、実際に異なるプラットフォームで関数のセマンティクスを変更していました。例えば次のようなものです:

root@kitploit:~
   #define  _tcsncpy   strncpy
   #define  _tstat_t   struct stat

これによりコードのメンテナンスが非常に困難になりました。

4.0の書き直しでは、可能な場合はオブジェクトを返すC++関数を使用し、_WIN32システムでは realpath() 関数が使用前に定義され、メインラインコードには realpath() 関数が存在しないように #define の使用を避けるようにコードを変更しました。これは cycles.cpp で確認できます:

root@kitploit:~
/* WindowsとPOSIXシステムでUTF-8の正規化された絶対パスを返す */
std::string get_realpath(const TCHAR *fn)
{
#ifdef _WIN32
    /*
     * 相対パスをフルパスに展開する。
     * http://msdn.microsoft.com/en-us/library/506720ff(v=vs.80).aspx
     */
    TCHAR absPath[PATH_MAX];
    if(_fullpath(absPath,fn,PAT_HMAX)==0) return "";
    return tchar_to_utf8(absPath);
#else
    char resolved_name[PATH_MAX];	//
    if(realpath(fn,resolved_name)==0) return "";
    return string(resolved_name);
#endif
}

mingwをインストールし、次のようにconfigureを実行できます:

$ export PATH=$PATH:/usr/local/i386-mingw32-4.3.0/bin $ ./configure --host=i386-mingw32

ハッシュアルゴリズムの参考文献

MD5アルゴリズムはRFC 1321で定義されています: http://www.ietf.org/rfc/rfc1321.txt

SHA1アルゴリズムはFIPS 180-1で定義されています: http://www.itl.nist.gov/fipspubs/fip180-1.htm

SHA256アルゴリズムはFIPS 180-2で定義されています: http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf

Tigerアルゴリズムは以下で定義されています: http://www.cs.technion.ac.il/~biham/Reports/Tiger/

Whirlpoolアルゴリズムは以下で定義されています: http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html

動作原理

  • main.cpp
    • システムをセットアップ
  • dig.cpp
    • 個々のディレクトリを反復処理
    • 各ファイルをハッシュ化するために hash.cpp の hash_file() を呼び出す
  • hash.cpp
    • 各ファイルのハッシュを実行
  • display.cpp
    • 結果を保存/表示
ツールをダウンロード