世界を動かす技術を、日本語で。

生のエンコードされた添付ファイルから「エプスタイン」PDFを再作成する

概要

  • Epsteinアーカイブ の最新リリースにおける DoJ(司法省)の対応の問題点 を指摘
  • 検閲ミスや技術的な失敗、特に base64エンコードされた添付ファイルの処理不備 が顕著
  • OCR(光学文字認識)やフォントの選択ミス によるデータ復元の困難さ
  • 複数ツールを用いた復元作業の試行錯誤 とその限界
  • 証拠の信頼性や透明性への懸念 が浮き彫りに

DoJによるEpsteinアーカイブ公開の問題点

  • 共謀者の名前や無関係な女性の写真の過剰検閲 による誤解招来
  • 証拠資料の認証情報未編集 でRedditユーザーがEpsteinのアカウントにアクセス可能になった事例
  • Quoted-Printableエンコードの変換ミス による証拠データの破損
  • 重要証拠の過剰な編集 による透明性の損失
  • Pam Bondi率いるDoJの技術力不足 が露呈

base64エンコード添付ファイルの問題

  • 一部メールに base64形式のバイナリ添付ファイル がそのまま公開
  • EFTA00400459 では76ページに渡るbase64データが添付
  • 本来なら簡単にPDF復元可能 だが、実際には 部分的編集・OCR済みPDF しか提供されていない
  • OCRによる文字化けや不要な文字の混入 でbase64データが破損
  • 手動やスクリプトでの復元作業 も失敗が多い現状

OCRとフォントの課題

  • Adobe Acrobat Proやtesseract など複数OCRツールの試用
  • OCRの精度不足、特に Courier Newフォント の識別性の低さが障害
  • 1(数字)とl(小文字エル)の判別困難 が大きな問題
  • 低品質JPEGスキャン・小さいポイントサイズ による文字識別難易度の上昇
  • Amazon Textractも完全な復元には至らず

復元作業の詳細と技術的工夫

  • pdftoppmでPDFをPNG画像に変換 し、tesseractでOCR実行
  • tesseractの文字セット制限--psm 6 オプション利用による精度向上の試み
  • OCR結果におけるスペースや無効文字の混入、行長の不一致
  • Amazon Textract利用時のDPI調整目的で画像拡大 など追加工夫
  • それでもbase64データの完全な復元は困難

証拠の信頼性と透明性への懸念

  • DoJの処理ミスや技術的未熟さ が証拠の信頼性を損なう要因
  • 公開資料の編集・変換過程での情報欠落 が透明性を低下
  • 社会的関心の高い事案での情報公開体制の見直し の必要性
  • 今後の証拠公開プロセスにおける技術的改善要望

このように、Epsteinアーカイブの公開を巡る一連の問題は、単なる技術的失敗にとどまらず、証拠の信頼性や社会的な透明性にまで影響を及ぼしている。今後のためにも、 より高度な技術力と慎重な情報管理体制 の構築が強く求められる。

Hackerたちの意見

(1,l)の全ての組み合わせを試してみたらどうかな?76ページあって、1ページあたり約69行だとして、各行に[1l]が1つずつあるとしたら…うーん、2^5244通りの可能性があるね…誰か余ったCPU時間持ってない?

それよりずっと簡単なはずだよ。各編集が正常なPDF構造にデコードされるかを逐次テストできるはずだから、コストが削減できる。サーバーが一定時間のmemcmpを使わないときにパスワードを割るのと似てる。PDFは通常デフォルトで圧縮されてるのかな?そうなら、内蔵のチェックサムがあるからさらに簡単になる。でも、既存のツールにデータを投げるだけではできないことなんだ。デコーダーの奥深くに計測機能を持つテストハーネスを作る必要がある。この種の作業はAIコードジェネレーターや単純なスクリプトができることとは真逆だよ。

パム・ボンディの司法省がこの件に関して最高の人材を投入したとは言えないね。むしろ、彼女がやったんだ。

つまり、インターネットが彼女のミスを全部見つけてくれてるんだ。実際、彼女はこれでうまくやってるよ。クラウドソースで全部やって、ミスを直せばいいんだから。笑。

これはバイナリPDFにデコードされて、有効なエンコーディングは限られてるんだ。だから、こうやって解決するつもり。1. オープンソースのPDFデコーダーを手に入れる 2. 曖昧な文字までバイトをデコードする 3. 次のビットが1で有効か確認する、そうでなければl 4. 1とlの両方が有効だったらバックトラックが必要かも。デコードプロセスの途中で各文字を素早く試すことで、開始時間を短縮できるんだ。これで全ての組み合わせを自動的かつ線形にテストするのが現実的になる。

それ、aflの出番じゃない?

これは一見オタクっぽいけど、 brute forceでやった方が簡単にできそうだよ。76人にそれぞれ1ページずつ手動で打ってもらえば、ブログ記事が書かれる前に終わるだろうね。

76人を説得して、正直かつ正確にファイルを転写させるのが簡単で迅速にできると思ってるの?

76人を集めればいい Just get 76 people。自分はこの点では普通だと思ってるけど、76人の友達に頼むのは無理だから、どうやってやればいいかわからない。クレイグスリストに広告を出す?ファイバー?管理が大変そうだね。

それか、一人が76ページを打つっていう手もあるね。昔はよくやってたことだし、そんなに珍しくもないよ。もしかしたら、手伝ってくれる友達がいるかも?そしたら、時間半分にできるね。

Tesseractは特定のフォントに合わせてトレーニングできるから、そこから始めるのが良さそうだね。https://pretius.com/blog/ocr-tesseract-training-data

pdftoppmとGhostscript(Imagemagick経由で呼び出し)って、ページ全体を再ラスタライズして出力を生成するんだよね。だから遅かったんだ。Q16ビルドのImagemagickだとさらにひどい。pdfimagesやmutoolでスキャンしたページの画像を直接抽出する方がいいよ。ちなみに、pdfimagesはpdftoppmの13倍速いよ。

12月じゃないのが残念だなー。https://www.reddit.com/r/adventofcode/ の連中はこのパズル好きだろうに。

Nerdsnipeが確認したよ :) Claude Opusがこのスクリプトを作ったみたい。https://pastebin.com/ntE50PkZ これを使うと、そこそこ読めるPDF(少なくとも最初のページ)が生成されるよ。このテキスト出力はここにあるよ: https://pastebin.com/SADsJZHd (Joeがブログページのコメントで言ってた、https://pastebin.com/UXRAJdKJ のクリーンな出力を使ったよ)

justice.govの検索ボックスを使えば、その同じメールのいくつかの異なるコピーが見つかるよ。投稿にリンクされてるコピー: https://www.justice.gov/epstein/files/DataSet%209/EFTA004004... さらに3つのコピー: https://www.justice.gov/epstein/files/DataSet%2010/EFTA02153... https://www.justice.gov/epstein/files/DataSet%2010/EFTA02154... https://www.justice.gov/epstein/files/DataSet%2010/EFTA02154... いくつかの異なるバージョンがあった方が楽かもね。