コンテンツにスキップ

ファイル破損チェックツール

ファイル破損チェックツールについて

インストール時やインストール後のコンピュータの不調などにより、データは破損します。

「ファイル破損チェックツール」(krkrcheck) は、そのような「破損した」ファイルを検出する為のツールです。エンドユーザの環境で、配布したファイルが壊れていないかを調べてもらうのに使います。

ファイルの破損を検出する為には、あらかじめ キー・署名ツール で、配布ファイルに署名を行っておかなければなりません。

ファイル破損チェックツールは、その電子署名の正当性も検査します (正当性が確認できないファイルは、このツールでは「破損」として扱われます)。別の鍵で作られた署名や、壊れた署名ファイルも「破損」になります。

チェックの対象となるファイルは、既定ではこのファイル破損チェックツールの置いてあるフォルダ以下のファイルとなります (階層下のフォルダも検索します)。そのため、このツールはインストール先フォルダに配置してください。

このツールがチェックするのは署名の行われているファイル、つまり «ファイル名.sig» という署名ファイルが隣にあるファイルのみで、署名の行われていないファイルに対してはチェックを行いません。

Note: 吉里吉里Z の本体 (実行可能ファイル) には、吉里吉里2 のような「exe の中に署名を埋め込む領域」がありません。本体も他のファイルと同じく «ファイル名.sig» で署名するので、本体にも必ず署名をしてください。署名していない本体はチェックの対象になりません。

吉里吉里2 の本体のように署名が埋め込まれた exe は、.sig が無くても埋め込まれた署名でチェックします。

Note: ファイル破損チェックツールは、ファイルの破損は検出できますが、「ファイルが存在しない」という状態は、それ自体では検出できません。

ファイルの不足がエラーの原因であると考えられる場合は、このツールの「結果をコピー」で、このツールがチェックしたファイルと、対象フォルダにある全てのファイルの一覧をクリップボードにコピーできますので、それをエンドユーザから送って頂いて調査してください。

入手方法

ファイル破損チェックツールは、吉里吉里Z の 標準ツール のひとつです。

  • krkrz_dev で本体をビルドすると一緒にビルドされ、make install でインストール先の tools/ フォルダに krkrcheck (Windows では krkrcheck.exe) が置かれます
  • ソースは krkrz_tools リポジトリにあり、単体でビルドすることもできます

ツールは実行ファイル 1 本で動きます (Windows / Linux / macOS)。エンドユーザに配布するときは、この実行ファイルと、後述の設定ファイル (.ini) を一緒に配布します。

ファイル破損チェックツールの設定ファイル

ファイル破損チェックツールは、«実行ファイル名.ini» を設定ファイルとして読みます。krkrcheck.exe なら krkrcheck.ini、実行ファイルを「ファイル破損チェックツール.exe」に改名した場合は「ファイル破損チェックツール.ini」です。設定ファイルは実行ファイルと同じフォルダに置きます。

ここにはファイル破損チェックツールの設定を書き込み、チェックツールの本体とともに配布する必要があります。設定ファイルが無いと公開鍵が無いので、チェックを行えません。

Note: 実行ファイルの名称を変更した場合は、設定ファイルの名称も変更してください。たとえば「署名確認ツール.exe」にした場合、設定ファイルは「署名確認ツール.ini」にしてください。

設定ファイルの書式は吉里吉里2 の「ファイル破損チェックツール.ini」と同じです。吉里吉里2 で使っていた ini は、そのまま使えます。文字コードは Shift_JIS と UTF-8 のどちらでもかまいません。

Note: Shift_JIS の ini を正しく読めるのは Windows 版だけです。Linux / macOS で使う場合は UTF-8 で書いてください。

以下に設定可能な項目を説明します。

  • [message]セクション - notice
    画面上部に表示するメッセージを指定します。

notice= で始まる行は一行で(改行をいれずに)記述しなければなりませんが、[cr] を書くとそこに改行を入れることができます。 - [message]セクション - caption
ウィンドウのタイトルと画面の見出しに表示する文字列を指定します。省略すると「ファイル破損チェックツール」になります。 - [key]セクション - publickey
電子署名の確認に用いる為の公開鍵を指定します。

ここには、直接 ('設定名=' のようなものを記述せずに) 、公開鍵をコピー&ペーストして指定してください。公開鍵は ini 全体から -----BEGIN PUBLIC KEY----- 〜 -----END PUBLIC KEY----- の部分を探して読みます。

以下は設定ファイルの例です。

[message]
notice=ファイルが破損していないかをチェックします。[cr]「チェック」ボタンを押してください。
caption=ファイル破損チェックツール

[key]
-----BEGIN PUBLIC KEY-----
MIGJAoGBAK0XoW5bq0F/8RpO/+n1IP0bYFGuJRdLqdZpUpyKzhfas4sq884DUHdT
rB1D84VUAnEER797Jo8Ck82GTtKIdMqpO4rinNVbpIzvxA6Qgi/s8u5+YtEv5pEc
V3WIF2zEufQ6SJ2LNbv3nXOy8zVOYG7fpS2PLmaCgXkZVX1AuB1RAgMBAAE=
-----END PUBLIC KEY-----

使い方

ファイル破損チェックツールの実行ファイルを起動すると、ブラウザのウィンドウでチェックの画面が開きます (画面は実行ファイルに埋め込まれているので、インターネットへの接続は要りません)。

画面の見出しには設定ファイルの caption が、その下には notice のメッセージが表示されます。

  • 対象フォルダ
    チェックの対象となるフォルダです。最初は実行ファイルのあるフォルダ (起動時にフォルダを指定した場合はそのフォルダ) が入っています。「参照…」ボタンで別のフォルダを選ぶこともできます。
  • チェック
    チェックを開始します。対象フォルダ以下を検索し、署名の行われているファイルを順に検査します。

大きなファイルのチェックには時間がかかります。進み具合はプログレスバーに表示されます。 - 中断
実行中のチェックを中断します。 - 結果の一覧
チェックしたファイルの一覧が、ファイル名・状態・サイズ・更新日時とともに表示されます。

「状態」欄には「正常」「破損」「エラー」のいずれかが表示されます。ファイルが破損していた場合は、該当ファイルは「破損」と表示されます。ファイルが読めないなどの理由でチェックできなかった場合は「エラー」となり、理由が表示されます。

一覧の上には、正常・破損・エラーそれぞれの件数が表示されます。 - 結果をコピー
結果をクリップボードにコピーします。

エンドユーザがチェックした結果を送って頂く際に便利です。

チェックが完了すると、有効状態(ボタンが押せる状態)になります。

結果はタブ区切りのデータで、左から順に、ファイル名、ファイルの日付、ファイルサイズ、チェックの結果、となります。

また、対象フォルダにある全てのファイルとフォルダの一覧もコピーされます。想定していないファイルが存在する可能性がある場合は、この出力を見てチェックを行うことができます。

画面を閉じるとツールも終了します。

Note: 名前が . で始まるファイルとフォルダは検索しません。また、署名ファイル (.sig) そのものはチェックの対象になりません。

コマンドラインからの使用法

--cli を付けると、画面を開かずにコマンドラインでチェックを行い、結果を表示して終了します。配布前の確認や、ビルドの自動化に使えます。

krkrcheck                           画面を開く (対象 = 実行ファイルのフォルダ)
krkrcheck <フォルダ>                 画面を開く (対象フォルダを指定)
krkrcheck --cli [<フォルダ>] [--key=<ini または公開鍵>] [--json | --tsv] [--quiet]

フォルダを省略すると、実行ファイルのあるフォルダが対象になります。

オプションは以下のとおりです。値を取るオプションは --名前=値 の形で書きます。

  • --key=ファイル
    公開鍵を読むファイルを指定します。設定ファイル (.ini) でも、キー・署名ツール で作った公開鍵のファイルでもかまいません。省略すると «実行ファイル名.ini» を読みます。
  • --json
    結果を JSON で出力します。
  • --tsv
    結果を「結果をコピー」と同じタブ区切りの形式で出力します。
  • --quiet
    進捗とファイルごとの結果 (標準エラー出力) を表示しません。

たとえば、配布用のフォルダ release を、手元の公開鍵 public.txt でチェックする場合は

krkrcheck --cli release --key=public.txt

と指定します。ファイルごとの結果が標準エラー出力に表示され、--json も --tsv も指定しない場合は、最後に標準出力へ集計が表示されます。

破損  b.dat
正常  data/a.txt
正常  krkrz64.exe
正常 2 / 破損 1 / エラー 0 (対象 3 / 全ファイル 7)

--json の出力は、集計 (ok / broken / error) と、ファイルごとの path / status (ok / broken / error) / label / message / size / mtime を持つ entries の配列です。

終了コードは以下のとおりです。

終了コード 意味
0 すべて正常
1 破損したファイルがある
2 チェックできないファイルがある、または公開鍵が無いなどで失敗した

ツール共通のオプション (--help など) は 標準ツール を参照してください。