【Python】pikepdfでパスワード保護されたPDFを解除する方法
はじめに
Pythonには、アプリケーション開発、Web開発、科学技術計算、ソフトウェアテスト、機械学習など、さまざまな用途に対応できる豊富なライブラリが揃っています。さらに情報セキュリティの分野でも、システムアプリケーションのテストや開発に活用されており、ハッシュ生成、情報収集・取得、暗号化・復号化、Webクローリング、スプーフィングなどに特化したスクリプトを備えたライブラリやツールが数多く公開されています。
本記事では、パスワードで保護されたPDFドキュメントを復号(ロック解除)するプログラムを作成します。復号には、よく使われるパスワードをまとめた「ワードリスト」を利用し、これを順番に試して正しいパスワードを見つけ出します。
注意: 本記事の内容は、自身が所有権を持つファイルや、事前に許可を得たファイルに対してのみ使用してください。他人のファイルへの不正アクセスは違法行為となるため、絶対に行わないでください。
必要なライブラリのインストール
PDFクラッカーを作成するには、pikepdfライブラリを使用します。以下のコマンドでインストールできます。
pip install pikepdf
また、試行の進捗状況を視覚的に確認するため、tqdmライブラリも併せてインストールしておきましょう。
pip install tqdm
ワードリストについて
今回は例として、一般的なパスワード5,000件を収録したワードリスト(wordlist.txt)を使用します。実際の解析では、より大規模な辞書ファイルを用意することで、パスワードの発見率を高めることができます。
コード例
import pikepdf
from tqdm import tqdm
# パスワードリストを読み込む
password = [line.strip() for line in open("wordlist.txt")]
# すべてのパスワード候補を順に試す
for paswrd in tqdm(password, "Cracking PDF"):
try:
# PDFファイルを開く
with pikepdf.open("protected.pdf", password=paswrd) as pdf:
# パスワードが一致したらループを抜けて結果を出力
print("Password found:", paswrd)
break
except pikepdf._qpdf.PasswordError as e:
# 一致しなければ次の候補へ
continue
コードの解説
- password = [line.strip() for line in open("wordlist.txt")]: ワードリストファイルを1行ずつ読み込み、前後の空白を除去したパスワード候補をリストとして格納します。
- tqdm(password, "Cracking PDF"): 試行の進捗状況をプログレスバーとして表示し、処理の経過がひと目でわかります。
- pikepdf.open("protected.pdf", password=paswrd): 各パスワード候補を使ってPDFファイルを開こうと試みます。
- pikepdf._qpdf.PasswordError: パスワードが一致しない場合に発生する例外です。これをキャッチすることで、エラーで停止せず次の候補へ処理を継続できます。
- パスワードが一致すると「Password found」とともに該当するパスワードが出力され、break文によってループを終了します。
実行結果
上記のコードを実行すると、ワードリスト内のパスワードが順番に検証され、正しいパスワードが見つかった時点でその内容が出力されます。

-
PDFファイルからパスワードを削除・解除する2つの簡単な方法
近年、データ窃取やプライバシー侵害の脅威が後を絶たない中、ファイルをしっかりと保護することの重要性は今さら言うまでもありません。数あるセキュリティ対策の中でも、ほぼ必ずと言っていいほど推奨されるのが「暗号化」です。特に重要な機密ファイルを扱っているなら、データを暗号化しておくことはもはや必須といえるでしょう。 こうしたファイルが仕事関連の場合、その多くはPDF形式で保存されているはずです。しかし、PDFファイルにアクセスするには、まずパスワードによる暗号化を解除する必要があります。この記事では、PDFファイルからパスワードを削除するさまざまな方法をご紹介します。それでは始めましょう。 PDFフ
-
ExcelファイルをPDFに変換する4つの方法|初心者向けに手順を徹底解説
データや数値を日常的に扱うお仕事をされている方なら、Microsoft ExcelやGoogleスプレッドシートをお使いのことでしょう。しかし、Excelファイルを誰かと共有する前に、必ずPDFに変換してから送るのがベストプラクティスであることをご存じでしょうか? この記事では、ExcelファイルをPDFに変換する具体的な方法をご紹介します。まずは、なぜExcelシートをPDFに変換すべきなのか、その理由から見ていきましょう。 ExcelをPDFに変換すべき理由 PDF化することでExcelシートが保護され、編集できなくなります。受け取った相手が書式や数式を勝手に変更したり、データを改ざんし