CTF

드림핵 517 Basic_Crypto1

hajin1209 2024. 11. 28. 00:29

문제를 보면 카이사르 암호문이라는 걸 알 수 있다.

 

카이사르 암호는 각 문자를 일정한 숫자만큼 이동시켜 암호화하거나 복호화하는 방식으로,

별 다른 방식이 없다면 매우 약한 암호이다.

 

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