Team Cymru - Malware Hash Registry
http://www.team-cymru.org/Services/MHR/
そこで、ファイルを指定するだけで HASH値を調べて、このサービスに問い合わせ、結果を表示してくれる Perl スクリプトを作ってみました(ちょっと見難いですが…)。
#!/usr/bin/perlこれは内部から HASH値の取り出しに openssl、dns問い合わせに dig を使っています。大概の Unix系 OS ならばこのまま使えると思いますが、Windows のように標準でこれらのコマンドを有していない場合は次のように書き換えてください。
$#ARGV == 0 || die "$0 needs one argument!\n";
$file = "$ARGV[0]";
-e "$file" || die "$file: no such file!\n";
$sha1 = "openssl sha1";
$qfmt = "dig +short %s.malware.hash.cymru.com TXT";
open(SHA1, "$sha1 \"$file\" |") || die "Can't open \"$sha1\"!\n";
$_ = join "", <SHA1>;
close(SHA1);
( $digest ) = /([0-9a-f]{40})/;
( $digest eq "" ) && die "Can't find SHA1!\n";
$qcmd = sprintf("$qfmt", $digest);
open(QUEUE, "$qcmd |") || die "Can't open \"$qcmd\"!\n";
$_ = join "", <QUEUE>;
close(QUEUE);
( $t, $p ) = /\"([0-9]+) ([0-9]{1,3})\"/;
if ( $t ne "" && $p ne "" ) {
print "$p% (";
print scalar localtime($t);
print ")\n";
exit(1);
} else {
print "no data in database.\n";
}
exit(0);
(1) HASH値の取り出し
(旧) $sha1 = "openssl sha1";
(新) $sha1 = "fciv -sha1";
fciv は Windows 標準ではありませんが、Microsoft が無償で提供しているツールです。
Microsoft サポート オンライン
可用性と ファイル チェックサム整合性検証 ユーティリティの説明
http://support.microsoft.com/kb/841290/ja
fciv.exe を PATH の通った場所にインストールしてください。
(2) dns問い合わせ
(旧) $qfmt = "dig +short %s.malware.hash.cymru.com TXT";
(新) $qfmt = "nslookup -q=txt %s.malware.hash.cymru.com 2>&1";
また dnsではなく whoisを使う場合は次のように書き換えてください。
(旧) $qfmt = "dig +short %s.malware.hash.cymru.com TXT";
(新) $qfmt = "whois -h hash.cymru.com %s";
(旧) ( $t, $p ) = /\"([0-9]+) ([0-9]{1,3})\"/;
(新) ( $t, $p ) = /^$digest ([0-9]+) ([0-9]{1,3})/;
なお、Windows では ActivePerl 5.10.0 での動作を確認しています。
ActivePerl
http://aspn.activestate.com/ASPN/Downloads/ActivePerl/