みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

FCIV 不一致でも一致の判定結果になる? なぜ?

FCIVの使い方に関する質問です。
fciv.exeを使って、2つのフォルダの中身
(階層構造のフォルダと複数ファイル)
が完全に一致することを確認したいのですが、
実行してみると、使い方が間違っているのかもしれませんが、
一致しないファイルが一致していると判定されてしまいます。
例えば、
1) C:\fcivフォルダの中にfolder1とfolder2
  という名前の2つのフォルダを作成する。
2) folder1フォルダにfileファイルを入れる。
3) folder2フォルダにfileファイルを入れる。
  2)と3)のfileファイルのバイナリデータは異なるものとする。
4) コマンドラインから
  fciv c:\fciv\folder1を実行すると、
-----------------------------------
//
//  File Checksum Integrity Verifier version 2.05.
//
  202cb962ac59075b964b07152d234b70 c:\fciv\folder1\file
-----------------------------------
  というメッセージが表示される。
  (以下、メッセージの先頭3行の部分を省略)
5) fciv c:\fciv\folder2を実行すると、
-----------------------------------
  81dc9bdb52d04dc20036dbd8313ed055 c:\fciv\folder2\file
-----------------------------------
  と表示される。
  よって、2つのfileのハッシュ値は異なっている。
6) fciv -add c:\fciv\folder1 -xml c:\fciv\hash_out.xml
  を実行すると、
-----------------------------------
  Error loading XML document.
  Create New XML database
-----------------------------------
  と表示されて、
  hash_out.xmlというファイルが生成される。
---hash_out.xml-----------------------------
<?xml version="1.0" encoding="utf-8"?>
<FCIV>
<FILE_ENTRY><name>c:\fciv\folder1\file</name><MD5>ICy5YqxZB1uWSwcVLSNLcA==</MD5></FILE_ENTRY></FCIV>
--------------------------------------------
7) fciv -v c:\fciv\folder2 -xml c:\fciv\hash_out.xml
  を実行すると、以下のように一致していると表示される。
--------------------------------------------
Could not create the registry key.
Starting checksums verification : 01/03/2016 at 14h32'26
All files verified successfully
End Verification : 01/03/2016 at 14h32'26
--------------------------------------------
本来ならば、
--------------------------------------------
Hash is : 81dc9bdb52d04dc20036dbd8313ed055
It should be : 202cb962ac59075b964b07152d234b70
--------------------------------------------
というように表示されるように思うのですが、
なぜ異なるファイルが一致していると判定されてしまうのでしょうか。
どのようにすれば正しく一致・不一致を判定することができるのでしょうか。
なお、実際のフォルダは階層構造になっているので-rオプションが付きます。
(OS Windows Vista)

投稿日時 - 2016-01-05 21:03:50

QNo.9106653

困ってます

質問者が選んだベストアンサー

>なぜ異なるファイルが一致していると判定されてしまうのでしょうか。

fcivの使用方法を間違っています。

civの使用方法は、以下の通りです。

・ハッシュ値を計算して画面に表示する
fciv ハッシュ値を計算したいファイル
fciv -add ハッシュ値を計算したいファイル

・ハッシュ値を計算してハッシュデータベースファイルに追加する
fciv ハッシュ値を計算したいファイル -xml ハッシュデータベースファイル
fciv -add ハッシュ値を計算したいファイル -xml ハッシュデータベースファイル

・ハッシュデータベースファイルに記録されたハッシュ値が、実際のファイルのハッシュ値と正しいか確認する
fciv -v -xml ハッシュデータベースファイル

・ハッシュデータベースファイルに記録されたハッシュ値を表示するだけ(確認は行なわない)
fciv -list -xml ハッシュデータベースファイル

fciv -v c:\fciv\folder2 -xml c:\fciv\hash_out.xml

と実行した場合、fcivは、指定した「c:\fciv\folder2」を無視して

ffciv -v -xml c:\fciv\hash_out.xml

と実行したのと同じになります。

-vオプションが指定された場合、hash_out.xmlの<name>タグで指定したファイルのハッシュ値と、hash_out.xmlの<MD5>タグで指定したハッシュIDで、比較が行なわれます。

ですのでhash_out.xmlの中身を

<?xml version="1.0" encoding="utf-8"?>
<FCIV>
<FILE_ENTRY><name>c:\fciv\folder2\file</name><MD5>ICy5YqxZB1uWSwcVLSNLcA==</MD5></FILE_ENTRY></FCIV>

と書き換えて(folder1をfolder2に書き換えて)から

fciv -v -xml c:\fciv\hash_out.xml

を実行してみて下さい。すると

Hash is : 81dc9bdb52d04dc20036dbd8313ed055
It should be : 202cb962ac59075b964b07152d234b70

と表示されます。

「-vオプション指定時」は「ファイルの指定は無視される」ので、使い方を間違えないようにしましょう。

投稿日時 - 2016-01-06 17:54:24

お礼

ネット上の情報では
fciv -v ディレクトリ名(あるいはファイル名) -xml XMLファイル名
というようなことが書かれていましたので
このような記述をしていましたが、
とても分かりやすい説明で
どこが間違っていたのかということと
どうすればよいのかということがよくわかりました。
ありがとうございました。

投稿日時 - 2016-01-07 21:10:32

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問