投稿

8月, 2021の投稿を表示しています

pdfに設定したパスワードの総当たり解析

お世話になっております、スログラミングです。 今回はパチンコ・スロットに全く関係ありませんのでご承知おきください。 ちょっと個人的に困ったことがあってpythonで解決できたのでそのコードを紹介したいと思います。 最近はテレワークや、ハンコレス等の影響で、 今まで紙でやりとりしていた資料をpdfで送る ケースが増えてきていると思います。 そうすると、pdfにパスワードをつけて送付したりしますが、「 パスワード何にしたかって忘れますよね。 」 ということで、今回は、 総当たり(Brute Force Attack:ブルートフォースアタック、ブルートフォース攻撃)でパスワードを解析 する方法をPythonでプログラミングしてみました。 ※他人のパスワードを解析する等の行為は絶対にやめてください。 本日のアジェンダはこちら。 1. 今回作成したコード 2. 試行錯誤の記録 3. 最後に 1. 今回作成したコード おそらくこんな僻地のブログに辿りついた方は相当切羽詰まっていると思いますので、いきなり最終コードからどうぞ。 ※並列処理等も組み込んでいますが、凄い時間がかかります。 (PCスペックにもよりますが、2並列処理で、4文字英数字が30分強、5文字英数字が丸1日くらい。) # coding: UTF-8 # PDF読み込み用 from pikepdf import Pdf # 総当たりの組み合わせ作成用 import itertools # 並列処理用 from multiprocessing import Pool # 処理時間の計測用 import datetime # パスワードを入力してファイルを開いてみる処理 def FileOpen(pw, file_pass): # pdfファイルの場所を指定 pdf_file = open(file_pass, 'rb') # ファイルが開けた時のパスワードを表示 pw = ''.join(pw) try: Pdf.open(pdf_fi