728x90
이번 글에서는 파이썬을 사용하여 브루트포스 공격을 통해 가능한 모든 비밀번호 조합을 시도해서 암호화된 ZIP 파일을 푸는 코드를 구현해보겠습니다.
1. 브루트포스 공격이란?
브루트포스 공격은 가능한 모든 비밀번호 조합을 하나씩 시도하여 올바른 비밀번호를 찾아내는 방식입니다. 이 방법은 시간이 오래 걸릴 수 있지만, 확실한 방법입니다. 가능한 모든 조합을 시도하기 때문에 비밀번호가 길어질수록 시간이 많이 걸릴 수 있습니다. 아래에서 살펴 볼 코드의 경우, 최대 62개의 문자를 5자리까지 조합하기 때문에 최악의 경우 9억 번 정도의 시도를 해야 할 수 있습니다. 실제로 사용할 때는 가능한 비밀번호 길이나 문자 집합을 미리 알고 있는 경우 이 범위를 줄여서 빠르게 비밀번호를 찾아낼 수 있습니다.
2. 브루트포스 공격 구현 (Zip 압축파일 비밀번호 알아내는 코드)
'itertools.product'를 사용하여 가능한 모든 비밀번호 조합을 생성하고, 이를 이용해 ZIP 파일을 해제해 보겠습니다.
import zipfile
import itertools
import string
# ZIP 파일 경로
zip_file_path = 'protected.zip'
# 브루트포스 공격 설정
characters = string.ascii_lowercase + string.ascii_uppercase + string.digits # 소문자, 대문자, 숫자
min_length = 1
max_length = 5
def extract_zip(zip_file, password):
try:
zip_file.extractall(pwd=password.encode('utf-8'))
print(f"비밀번호를 찾았습니다: {password}")
return True
except:
return False
# ZIP 파일 열기
with zipfile.ZipFile(zip_file_path) as zf:
found = False
for length in range(min_length, max_length + 1):
for attempt in itertools.product(characters, repeat=length):
password = ''.join(attempt)
print(f"시도 중인 비밀번호: {password}")
if extract_zip(zf, password):
found = True
break
if found:
break
else:
print("비밀번호를 찾지 못했습니다.")
'Python > ETC' 카테고리의 다른 글
[Python] 파이썬 컴퓨터의 다양한 정보 확인하기 (psutil) (0) | 2024.08.12 |
---|---|
[Python] QR코드 생성기 만들기 (qrcode) (0) | 2024.08.11 |
[Python] 파이썬으로 텍스트를 음성으로 변환하기 (gTTS, playsound) (0) | 2024.08.10 |
[Python] 파이썬 외부 IP와 내부 IP 확인하기 (0) | 2024.08.06 |
댓글