ファイルの変更を確かめる fc と md5 ハッシュ

投稿者: | 2019年1月20日

更新されているか、されていないか

例えば、同じファイル名で同じバイト数のファイルがあったとして、それが同じものかどうかを比べる方法です。

備忘録というほどでもないですが…

今回、Windows Server 2019 がダウンロードできるみたいなので落としに行き、ついでに仕事で2016の評価もする予定だったな…と思い、ダウンロードしてみました。
この Windows Server 2016 評価版の ISO ファイルについては 2016年10月8日にダウンロードしたものと、2017年3月25日にダウンロードしたものではファイル名もサイズも違うので違うことが明白です。
その後、ダウンロードした際は、ファイル名もサイズも2017年3月25日にダウンロードしたものと同じでした。その時も、念の為、比較をして同じことを確かめています。

今回もファイル名もサイズも2017年3月25日にダウンロードしたものと同じものが落とされましたが、中身のバイナリが変わっていないのかを確かめてみます。

方法1:ファイル比較 ( fc /b )

簡単な方法は fc コマンドを使うもの。テキストならばオプションなしでもいいですが、ISOとかexeとかzipであれば、/b のバイナリオプションを使います。
(どの行がどう違うかを出す必要がないものは /b で比較します。)


fc /b <ファイル1> <ファイル2>

違いがない場合の結果はこんな感じです。

方法2:ハッシュ取得 ( certutil -hashfile )

これも簡単ですが、 md5 という関数で、不可逆変換(一方向にのみの変換で、変換後の値から元の状態を作ることはできない)の値を求める方法があります。これは絶対に同じことを証明できるのではなくて、偶然であっても、改ざんであっても、極めて稀なケースでは同じ値になることが(論理的には)あります。
バイナリで比べておけばそれだけで十分ですが、例えば、2つのファイルをひとつのパソコンにもってきてファイルそのものをfc /bで比較するようなことができない場合は、こちらの方法で確認すれば「絶対ではないけれど、同じものであろうことが推定できる」と言えます。

こちらも、Windowsにある標準のコマンドで確認できます。
certutilコマンド自体はハッシュを取得するだけのツールではありません。
md5 をファイル名の後に書き、 -md5 とか書きたくなるけれど、ハイフンなしで md5 とするあたりが間違いやすいです。


certutil -hashfile <ファイル> md5

『CertUtil: -hashfile コマンドは正常に完了しました。』の前の行の数字の羅列が md5 でとったハッシュの値になります。
この例では「5a2f1ee76016b5ae2d74016ed30b5ac8」です。

この例では、同じパソコンで実施していますが、ネットワークが繋がっていない別のパソコンで、それも別々のタイミングで実施したとしても md5 のハッシュ値が同じであれば「絶対ではないけれど、同じものであろうことが推定できる」となります。
計算させるパソコンのマシン名やIPアドレスには依存せず、作業日時が値に影響することもありません。

中身が違う例

ファイル名が同じでもサイズが違うからひと目でわかるだろというツッコミは置いておいて、Windows 10 の 1809 について比べてみました。
メディア作成ツールで落としてきた Windows.iso です。

これは、当初リリース直後のものと、引っ込められたあと再リリースされたあと(11月15日)にダウンロードしたもの。

もちろん、 fc /b で比較してもバイナリ自体が違います。
ログがたくさん出ます。作業が長すぎて ctrl c してしまいましたので違いが出ているメッセージは掲載しませんが、見ればわかる内容です。

Windows 10 ( 1809 ) ですが、 11月15日と12月1日にダウンロードしたものはサイズが同じです。

これを fc /b で比較してみます。
(全部やると時間かかるので途中で止めました。)

バイナリとしては違いがあるようです。

この時点で、ファイルの中身は違うことは確定ですが、念のため、
今度は、 certutil で md5 をとってみます。

ハッシュ値は、835c07d18712b2907fd0525595105462 と e5541e7657d23e048dfc1c3a9209101a ですから、こちらでも違うことがわかります。

掲載時に作業しているものでは、fc /bで比較するよりも時間は短いです。一つ前の fc /b はまだ終わりません。certutil はふたつやってもfc /bの比較よりは断然早かったです。

ファイルの変更を確かめる fc と md5 ハッシュ」への1件のフィードバック

  1. ピンバック: Windows 10 ( 1903 ) 向けのアップデートが出た – 湘南藤沢.ネット

コメントは停止中です。