開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Python 3.5 (プログラミング言語)
Automate the Boring Stuff with Python (Al Sweigart (著)、No Starch Press)のPart 2.(Automating Tasks)、Chapter 13.(Working with PDF and word Documents)、Practice Projects(Brute-Force PDF Password Breakder)(No. 7850)を取り組んでみる。
Practice Projects(Brute-Force PDF Password Breakder)(No. 7850)
コード(Emacs)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import sys
import PyPDF2
if len(sys.argv) >= 1:
filename = sys.argv[1]
else:
print('usage: cmd password')
sys.exit(1)
with open('dictionary.txt') as f:
words = {line.strip() for line in f}
with open(filename, 'rb') as f:
pdf_reader = PyPDF2.PdfFileReader(f)
for word in words:
if pdf_reader.decrypt(word) == 1:
print(word.upper())
break
if pdf_reader.decrypt(word.lower()) == 1:
print(word.lower())
break
else:
print("couldn't find a password.")
入出力結果(Terminal, IPython)
$$ time ./pdf_password_breakder.py encrypted.pdf rosebud real 82m6.105s user 76m34.436s sys 1m4.232s $
0 コメント:
コメントを投稿