unredact.py — PDFの弱い赤塗り(redaction)復元ツール

Security

概要

unredact.py は、PDF の「弱い赤塗り(redaction)」手法を対象に、隠された情報を発見するための監査ツールです。具体的には、黒い矩形で文字の上を塗りつぶしただけ、あるいはテキストの上に非フラット(透過や合成情報を含む)な画像を重ねて隠したケースを想定します。本ツールは元の PDF を解析し、デジタルテキスト情報を再抽出したり、画像や描画命令の特徴に基づいて「黒いブロック」と見なせる要素を検出・除去して新しいドキュメントを再構築します。結果として、表面的に隠された敏感情報が露出する可能性を評価できます。使い方次第でプライバシーに関わるため、倫理的かつ合法的な用途に限定する必要があります。

GitHub

リポジトリの統計情報

  • スター数: 22
  • フォーク数: 4
  • ウォッチャー数: 22
  • コミット数: 14
  • ファイル数: 3
  • メインの言語: Python

主な特徴

  • テキスト復元(Text Recovery): PDF 内に埋め込まれたデジタルテキストを抽出し、赤塗りレイヤーの背後に存在する可能性のある文字列を再表示します。
  • スマートな黒矩形除去(Smart Box Removal): 真っ黒に見える矩形や塗りつぶしオブジェクトを画像解析や描画命令の判別により検出し、選択的に除去して下のテキストを露出させます。
  • 再構築アプローチ: 元ドキュメントから「必要な要素のみ」を新規ドキュメントへ再挿入する方法を採用し、赤塗り層や上書き画像を排除してクリーンな出力を生成します。
  • 柔軟な適用範囲: 単純な黒塗りだけでなく、非フラットなオーバーレイ(画像として透明度や合成があるもの)による隠蔽にも対応を試みる点が特徴です。

技術的なポイント

unredact.py の中核は「PDF を構成する描画命令と埋め込みオブジェクトを分解し、意味のある要素のみを選択的に再配置する」点にあります。PDF はテキストオブジェクト、パス(矩形等)、画像、ページコンテンツストリームなどの組み合わせで表現されます。本ツールはまずコンテンツストリームからテキストオブジェクトを抽出し、フォント情報と位置を解析して本来のテキストを取り出すことを試みます。同時に、描画命令や画像の色・領域情報を解析して「黒に近い矩形」や「文字領域を覆う大きなオーバーレイ画像」を検出します。検出は単純な色閾値判定だけでなく、領域の形状(矩形比率、領域の一貫性)、画像のメタ情報(透過やカラー空間)などを手がかりに行うと効果的です。その後、オリジナルのページ構造を破壊せずに必要なテキストとグラフィックのみを新規ドキュメントへ再挿入します。これにより、上に重ねられた「赤塗り」や画像オーバーレイを除去して下のデジタルテキストを可視化します。技術実装では pikepdf / PyMuPDF / pdfminer 等のライブラリが想定され、PDF のストリーム編集、描画命令の再構成、フォント埋め込みの扱い(サブセット化やCIDフォント)といった細かい取り扱いが重要になります。限界として、赤塗りが元からフラットに焼き込まれ文字がラスター化されている場合や、意図的にノイズや複雑な合成を行った隠蔽には有効でないこと、また結果的に露出した情報の取り扱いは倫理・法的な問題を孕む点に注意が必要です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • docs: dir — 使用方法、依存関係、注意点などのドキュメント(README や簡易マニュアルが想定されます)。
  • src: dir — 実際の処理ロジック(PDF パーシング、検出アルゴリズム、再構築処理など)が収められているディレクトリです。
  • test: dir — テストケースやサンプル PDF、単体テストが配置されている想定のディレクトリです。

実行ワークフロー(一般的な流れ、リポジトリに基づく想定)

  1. PDF を読み込む(ページごとにコンテンツストリームを取得)。
  2. テキストオブジェクトと描画オブジェクトをパースしてメタ情報を抽出。
  3. 黒い塗りつぶしやオーバーレイ画像をヒューリスティックに検出。
  4. 除去対象をスキップしつつテキストや必要な描画を新規ドキュメントに書き出す。
  5. 出力を確認し、必要に応じて手動調整や OCR を追加して精度を補正。

利用上の注意点や拡張性

  • 自動検出は誤検出する可能性があるため、結果は必ず人間が確認するべきです。
  • ラスター化された赤塗りや高いレベルで合成された隠蔽は復元が難しく、OCR との併用や画像処理(ノイズ除去、コントラスト調整)が必要になる場合があります。
  • 倫理的・法的観点:他者の秘密情報や個人情報を無断で復元・公開することは違法または不道徳であり、本ツールは監査やセキュリティ評価の目的に限定して使用してください。

まとめ

弱い赤塗りの脆弱性を明らかにする実用的なツールであり、セキュリティ監査に有用だが倫理的配慮が必須。

リポジトリ情報:

README の抜粋:

PDF Redaction Auditor (Unredactor)

This script is designed to process PDF files to revreal what’s under weak redaction methods by recoloring digital text and selectively removing black redaction boxes.
It works by creating a new document and re-inserting only the essential elements from the original.

Features

  • Text Recovery: Extracts underlying digital text that might be hidden beneath redaction layers.
  • Smart Box Removal: Detects images that appear to be black redac…