Gitが使えない納品先のための、Python 1ファイル完結のファイル改ざん検知ツール。SHA-256ベースの整合性検証を、外部依存ゼロで実現します。
受託開発でシステムを納品した後、本番環境で意図しないファイル改変が起きていないかを確認したい。けれども、納品先がGitやその他のバージョン管理を使えない環境では、確認手段が驚くほど整っていません。
共有レンタルサーバー、医療機関の閉域網、お客様の社内ポリシー — Gitやバージョン管理ツールが導入できない環境は今も普通にあります。
sha256sum は uploads/ や DB ファイルを巻き込んでしまい、純粋なシステムファイルだけを対象にする運用が現実的でない。
OK/FAILED の羅列では、追加・削除・変更されたファイルを把握できない。改ざんの種類まで知りたい。
"やらないこと"を明確にし、現場の納品検証で本当に必要な機能だけを 850 行ほどの単一ファイルに収めました。
Python 3.6 以降の標準ライブラリのみで動作。pip install 不要、Docker 不要。納品先のサーバーに余計なものを入れる必要がありません。
スクリプトは ckt.py 1 ファイルだけ。プロジェクトに同梱するだけで動作。USB で持ち込んでもすぐ実行できます。
uploads/ *.sqlite __pycache__/ といったパターンで除外設定。よくある除外パターンはデフォルトで同梱済み。
ファイルが含まれないディレクトリも記録。削除や新規作成された空フォルダもしっかり検知。構造の変化を見逃しません。
--stats オプションで種類ごとの合計サイズや変更状況をレポート。プロジェクトの全体像を把握しやすくなります。
--verbose でチェック中のファイルをリアルタイム表示。巨大なプロジェクトでも進捗が見え、安心感があります。
初期設定からマニフェスト生成、検証まで、すべて python ckt.py だけ。
除外パターンを記述する INI 形式の設定ファイルを作成します。
manifest.ini の [exclude] セクションをプロジェクトに合わせて編集。デフォルトでよくある除外は入っています。
SHA-256 で全ファイルのハッシュ値を計算し、MANIFEST.sha256 として保存します。
現在のファイル群とマニフェストを比較し、変更・追加・削除を一覧表示します。
マニフェスト本体は人間にも sha256sum 互換のツールにも読みやすいテキスト形式。検証結果は機械可読 JSON にも切り替え可能です。
納品検証だけでなく、ファイル整合性を確認したいさまざまな場面で活用できます。
納品時にマニフェストを生成し、納品物と一緒にお客様に渡す。後日トラブルが発生したときに「納品時から何が変わったか」を客観的に確認できる。責任分界点を明確にする運用に。
セキュリティ要件で Git やパッケージマネージャを使えない環境でも、Python 3.6 以降があれば動作。USB で持ち込んだスクリプト 1 つでファイル整合性を確認できる。
--json 出力と終了コード(0=一致、1=差分、2=エラー)を組み合わせて、本番デプロイ後の想定外ファイル変更を自動検知。Slack 通知やアラートと連携可能。
バックアップ取得時にマニフェストを生成しておけば、リストア後に「すべて正しく復元できたか」をハッシュレベルで検証できる。災害対策テストの一環として有効。
マニフェストファイルをリリースノートに添付することで、ダウンロード者が完整性を検証可能に。タイムスタンプ局(TSA)併用で法的証拠力もさらに強化できる。
4つのサブコマンドで全機能をカバー。詳細は python ckt.py --help で確認できます。
init
デフォルトの設定ファイル manifest.ini を生成する。
generate [--output FILE]
カレントディレクトリ以下の全ファイルからマニフェストを生成。
verify [--manifest FILE] [--stats] [-v]
現在のファイル状態とマニフェストを比較し、差分を表示。統計や詳細表示も可能。
diff OLD NEW
2つのマニフェストファイル同士を比較。バージョン間差分の確認に。
--algorithm {sha256,sha512,sha1,md5,blake2b}
ハッシュアルゴリズムを指定。デフォルトは sha256。
--json
結果を JSON 形式で出力(verify / diff サブコマンドで使用可)。
--root DIR
スキャン対象のルートディレクトリを指定(デフォルトはカレント)。