문제를 보면 카이사르 암호문이라는 걸 알 수 있다.
카이사르 암호는 각 문자를 일정한 숫자만큼 이동시켜 암호화하거나 복호화하는 방식으로,
별 다른 방식이 없다면 매우 약한 암호이다.
dec.py
def caesar_decrypt(ciphertext, shift):
decrypted_text = ""
for char in ciphertext:
if char.isalpha(): # 알파벳인지 확인
if char.islower(): # 소문자
decrypted_text += chr((ord(char) - ord('a') - shift) % 26 + ord('a'))
elif char.isupper(): # 대문자
decrypted_text += chr((ord(char) - ord('A') - shift) % 26 + ord('A'))
else:
decrypted_text += char # 알파벳이 아니면 그대로 유지
return decrypted_text
def try_all_shifts(ciphertext):
print("암호문:", ciphertext)
print("모든 경우의 수:")
for shift in range(1, 27): # 1부터 26까지 시도
print(f"Shift {shift}: {caesar_decrypt(ciphertext, shift)}")
# 테스트할 암호문
ciphertext = "EDVLF FUBSWR GUHDPKDFN"
try_all_shifts(ciphertext)
shift 값이 3인걸 확인할 수 있다.
플래그 값은 DH{BASIC_CRYPTO_DREAMHACK}이다
'CTF' 카테고리의 다른 글
드림핵 1534 STREAMer-Prototype (1) | 2024.11.28 |
---|---|
드림핵 1169 What is This??? (0) | 2024.11.27 |
드림핵 1257 Easy Linguistics (0) | 2024.11.27 |
드림핵 680 Robot Only (2) | 2024.11.26 |
드림핵 409 session-basic (0) | 2024.11.25 |