Code Interpreterを使って、PDFにパスワードをつけたり、パスワードを解除したりする。

今回も引き続きCode Interpreterを使うという記事です。
PDFにパスワードをかけたり、パスワードを解除したり、パスワードを総当たりで探索したりします。


PDFにパスワードをつける

Code InterpreterでPDFにパスワードをかけることができます。
今回はChatGPTについてまとめたパスワードに、例として4桁の数字のパスワードである「5678」をパスワードとして設定します。

このpdfにパスワードをかけて保存してください。
パスワードは5678にしてください。
ChatGPT:
PDFファイルにパスワードをかけて保存しました。以下のリンクからダウンロードできます。

**ChatGPT_Overview_Password_Protected.pdf**
パスワードは **`5678`** です。確認してみてください。

このように、簡単にパスワードをつけることができました。
パスワードをつけたファイルを共有しておきます。


パスワードがついているファイルを読み込む

パスワードがついているファイルを読み込むことができます。
先ほどのパスワードをつけたファイルを開いて、読み込んでみます。

このPDFを'pdfplumber'ライブラリを使用して、開いて何ページのPDFか教えて下さい。
PDFのパスワード5678です。
ChatGPT:
PDFは2ページあります。パスワードを使用して正常に開くことができました。何か他にお手伝いできることはありますか?

総当たりでパスワードを開く

上のツイートのように、次のプロンプトのように指示することで、PDFファイルを0000から9999までの1万通りパスワードを試して、パスワードがかかったPDFを開きます。

このPDFを'pdfplumber'ライブラリを使用して、開いて下さい。
パスワードは4桁の数字であることがわかっています。総当たりで試して下さい。

計測したところ、Code Interpreterの環境では1秒間に200回ぐらい試すことができるようでした。
1万通りだと、この環境でも最大50秒程度で開けてしまうので、パスワードとしてあまり意味がないようです。

パスワードについて

4桁の数字だけのパスワードだと、すぐに開けられてしまうのは、当然。
NISCのコラムによると次のように、ファイルの暗号化に使われるパスワードは、15桁以上が推奨されているようです。

ZIPファイルやOfficeファイルの暗号化に使われるパスワード「暗号キー」は、英大文字(26種類)小文字(26種類)+数字(10種類)+記号(26種類)の計88種類の文字をランダムに使って、15桁以上を推奨しています。(NISCのハンドブックP.58参照)

https://www.nisc.go.jp/pr/column/20220705.html


88文字で、パスワードの桁数を4, 8, 10, 15とした場合のパスワードの組み合わせ数

試しに、パスワードの桁数を4, 8, 10, 15で何通りあるか、ChatGPTに計算してもらったのが上の図です。今は10の29乗ぐらいのオーダーが推奨されているんですね。すごい…

まとめ

PDFのパスワードを総当たり開くネタについて、反応が大きくて驚きました。
セキュリティについては、先ほどのNISCコラムのページや、インターネットの安全・安心ハンドブックなど、セキュリティについて参考になるページが読まれると良いと思いました。

CodeInterpreterでPDFでパスワードをつけたり、開いたりするのはそれほど優先度は高くないけれど、PDFを扱える環境が手元にない時など、Code Interpreterでできるのは便利なタイミングはあるかもと思いました。


コメントお待ちしています。匿名の質問はマシュマロから→https://marshmallow-qa.com/currypurin