Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 PDF 비밀번호 크랙하기: pikepdf 라이브러리 완벽 가이드

파이썬(Python)은 애플리케이션 개발, 웹 개발, 과학 연산, 소프트웨어 테스트, 머신러닝 등 다양한 분야에서 활용할 수 있는 방대한 라이브러리 생태계를 갖추고 있습니다. 특히 정보 보안 분야에서는 시스템 애플리케이션의 테스트와 개발에도 널리 사용되고 있습니다. 해시 생성, 정보 수집 및 검색, 암호화·복호화, 웹 크롤링, 스푸핑(spoofing) 등 보안 관련 작업을 수행할 수 있는 전용 스크립트를 포함한 여러 라이브러리와 도구들도 함께 제공됩니다.

PDF 복호화 프로그램의 원리

이 글에서는 비밀번호로 보호된 PDF 문서를 복호화하는 프로그램을 만들어 보겠습니다. 복호화에는 흔히 사용되는 일반적인 비밀번호들을 모아놓은 워드리스트(wordlist)를 활용하며, 이 리스트를 순차적으로 대입해 올바른 비밀번호를 찾아내는 방식입니다.

PDF 크래커를 만들기 위해서는 pikepdf 라이브러리가 필요합니다. pip를 통해 설치한 후 노트북이나 스크립트에 불러와 사용하면 됩니다. 예제에서는 5,000개의 흔한 비밀번호가 담겨 있는 워드리스트 파일을 참조용으로 사용합니다.

예제 코드

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

실행 결과

위 코드를 실행하면 tqdm이 진행 상황을 실시간으로 표시하고, 워드리스트 속 비밀번호들이 하나씩 대입됩니다. 올바른 비밀번호를 찾는 즉시 반복문이 중단되며, 해당 비밀번호가 화면에 출력됩니다.

파이썬(Python)으로 PDF 비밀번호 크랙하기: pikepdf 라이브러리 완벽 가이드

참고 사항

이 기법은 자신이 소유한 문서의 비밀번호를 분실했을 때 복구하는 등 합법적인 용도로만 사용해야 합니다. 타인의 문서를 무단으로 해독하는 행위는 법적인 처벌 대상이 될 수 있으므로 주의가 필요합니다. 또한 복잡하고 긴 비밀번호를 사용하는 PDF의 경우, 단순 워드리스트 방식으로는 해독에 실패할 수 있다는 점도 알아두세요.