処理が途中で終わってしまう。

前提

エラーなしで実行が止まってしまいます。
pythonの勉強を兼ねてプログラムを書いている中で興味があったので、ブルートフォースアッタクについてインターネットで調べながら書いて解読しているので、完璧にコードが理解できている訳ではありません。

実現したいこと

こちらで用意したpdfファイルのパスワードを特定したいです。

発生している問題・エラーメッセージ

エラーが発生していません。

該当のソースコード

Python

import PyPDF2 import itertools from multiprocessing import Pool import datetime def FileOpen(pw, file_pass): pdf_file = open(file_pass, 'rb') pw = ''.join(pw) try: open(pdf_file, password=pw) print('パスワードは『{}』です'.format(pw)) return True except: pass def BruteForceAttack(fill_pass, num_p, alphanumeric, pass_num): p = Pool(num_p) dt_now = datetime.datetime.now() print(dt_now, ",処理開始") for i in pass_num: dt_now = datetime.datetime.now() print(dt_now, ", ", i, "文字開始") cnt = 1 for passlist in itertools.product(alphanumeric, repeat=i): if cnt <= 1: start = datetime.datetime.now() result = p.apply_async(FileOpen, (passlist, file_pass)) result.wait() elif 1 < cnt <= 100: result = p.apply_async(FileOpen, (passlist, file_pass)) result.wait() else: result - p.apply_async(FileOpen, (passlist, file_pass)) if cnt == 100: end = datetime.datetime.now() start2end = end - start wait = start2end.total_second() / 100 waitspan = 1 if cnt > 100 and cnt % waitspan == 0: result.wait() if result.get() == True: break cnt = cnt + 1 result.wait() dt_now = datetime.datetime.now() print(dt_now, ", ", i, "文字終了") if result.get() == True: break p.close() p.join() dt_now = datetime.datetime.now() print(dt_now, ", 処理終了") if __name__ == "__main__": file_pass = "------/2022.pdf" num_p = 2 alphanumeric = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" pass_num = [1, 2, 3, 4, 5, 6, 7, 8] BruteForceAttack(fill_pass, num_p, alphanumeric, pass_num)

試したこと

初めPypdf2についてのエラーが出ていてそれは解消できたのですが、その後エラーが出ず、すぐ処理が終わってしまう状況になり、何もできずにいます。

補足情報(FW/ツールのバージョンなど)

環境はmacです。
少し無理をしてパスワードは6桁にしたのですが、解読できずとも動けるコードが書きたいと思っています。
Pythonに関して全くの初心者なので、ご迷惑をおかけすることが多いかと思います。
上記のプログラムが書かれていたwebsiteです。
https://s6raming.blogspot.com/2021/08/pdf.html

コメントを投稿

0 コメント