hfind


名前


hfind - ハッシュデータベースからハッシュ値を調べる

書式


hfind [-i db_type ] [-f lookup_file ] [-eq] db_file [hashes]

説明


hfindはバイナリサーチアルゴリズムを用いてデータベースからハッシュ値を調べる。これはハッシュデータベースを容易に作成しファイルの既知、未知を特定が可能となる。hfindはNISTのNSRLやmd5sumの出力を扱うことができる。

hfindでデータベースを使う前に、-iオプションによるインデックスファイルが作成されていなければならない。

このツールは効率化のために必要とされる。多くのテキストベースのデータベースは固定長のエントリを持たず、ソートされていないこともある。hfindはソートされた固定長エントリのインデックスファイルを作成する。この処理によりgrepのようなリニアサーチのかわりにバイナリサーチを用いた高速な参照を可能とする。

引数

-i db_type
そのデータベースのインデックスファイルを作成する。この手順は検索の前に実施されなければならない。'db_type'はデータベースのタイプ(nsrl-md5やmd5sum)を指定する。以下のセクションも参照すること。

-f lookup_file
1行あたり1ハッシュが含まれるファイルの場所を指定する。これらのハッシュがデータベースとして参照される。

-e
拡張モード。表示された名前に情報を追加する。(すべてのタイプのハッシュデータベースには適用されない。)

-q
クイックモード。ハッシュに相当する情報を表示するかわりに、ハッシュが見つからなければ0を、見つかれば1を表示する。もしこのフラグが指定されると、一度にひとつのハッシュのみを指定できる。

-V
バージョン情報を表示する。

db_file
ハッシュデータベースのファイルの場所を示す。

[hashes]
検索するハッシュを指定する。もしコマンドラインから入力されなければ、標準入力STDINが使われる。SHA-1とMD5ハッシュのインデックスファイルが存在すれば、実行時に両方のハッシュタイプが与えられる。

インデックスファイル


hfind はハッシュ値をバイナリサーチするためにインデックスファイルを用いる。これはgrepよりも高速である。ハッシュデータベースが使われる前に、相当するインデックスファイルを作成しなければならない。これは-iオプションにより実施できる。

結果となるインデックスファイル名はデータベースファイル名に基づく。この名前はオリジナルの名前にハッシュタイプ(sha1またはmd5)が続き、.idxが付加される形式となる。例えばNIST NSRLのMD5ハッシュであればNSRLFile.txt-md5.idx、SHA-1であればNSRLFile.txt-sha1.idxという名前でインデックスファイルが作成される。

このファイルは2つのカラムをもつ。各エントリは最初のカラムであるハッシュ値によりソートされる。第2カラムはオリジナルのファイルで対応するエントリのバイトオフセットとなる。よってインデックスファイル内でハッシュが見つかれば、オフセットが記録されてhfindはオリジナルのデータベースから対応するエントリを探す。

以下の入力形式が有効である。NSRLでは'nsrl-md5'と'nsrl-sha1'を使うことができる。これはインデックスがどちらのハッシュ値でソートしているかの違いである。md5sumの値もソートに使用でき、"ホームメード"のデータベースをインデックスすることができる。hfindは両方のフォーマットをとる。

        MD5 (test.txt) = 76b1f4de1522c20b67acc132937cf82e

        76b1f4de1522c20b67acc132937cf82e test.txt


NIST NSRLからMD5インデックスファイルを作成する。

        # hfind -i nsrl-md5 /usr/local/hash/nsrl/NSRLFile.txt

NSRLから値を検索する。

        # hfind /usr/local/hash/nsrl/NSRLFile.txt 76b1f4de1522c20b67acc132937cf82e

        76b1f4de1522c20b67acc132937cf82e Hash Not Found

SHA-1とMD5両方を指定することもできる。

        # hfind -i nsrl-sha1 /usr/local/hash/nsrl/NSRLFile.txt

        # hfind /usr/local/hash/nsrl/NSRLFile.txt

        76b1f4de1522c20b67acc132937cf82e 80001A80B3F1B80076B297CEE8805AAA04E1B5BA

        76b1f4de1522c20b67acc132937cf82e Hash Not Found

        80001A80B3F1B80076B297CEE8805AAA04E1B5BA thrdcore.cpp

信頼できるシステムの重要バイナリファイルのデータベースを作成するためには、md5sumを用いる。

        # md5sum /bin/* /sbin/* /usr/bin/* /usr/bin/* /usr/local/bin/* /usr/local/sbin/* > system.md5

        # hfind -i md5sum system.md5

エントリの検索において、以下の形式で動作する。

        # hfind system.md5 76b1f4de1522c20b67acc132937cf82e

        76b1f4de1522c20b67acc132937cf82e Hash Not Found

または

        # md5sum -q /bin/* | hfind system.md5

        928682269cd3edb1acdf9a7f7e606ff2 /bin/bash

        <...>

または

        # md5sum -q /bin/* > bin.md5

        # hfind -f bin.md5 system.md5

        928682269cd3edb1acdf9a7f7e606ff2 /bin/bash

        <...>

条件


hfindは/usr/binにUnixのsorterプログラムが配置されている必要がある。NISTのNational Software Reference Library (NSRL)のサイトはwww.nsrl.nist.govである。

ライセンス


Sleuth Kitのライセンスディレクトリにあるcpl1.0.txtファイルに記述されているCommon Public Licenseに従い配布される。

著者


Brian Carrier <carrier at sleuthkit dot org>

ドキュメントの更新情報は<doc-updates at sleuthkit dot org>に送信してください。