리눅스 워게임

OverTheWire_Level 11 -> Level 12

ITsubin 2023. 1. 14. 23:40

< Lv 11 -> Lv 12 >

다음 단계로 넘어가려면 data.txt 파일을 확인해야 합니다.

lowercase(소문자, a-z)와 uppercase(대문자, A-Z)가 13 positions rotated 되었다고 쓰여있습니다.

이번 문제는 암호학에 관련된 문제로 보입니다.

암호학에 대해서는 해당 블로그 "현대 암호학 기초" 카테고리에서 간단히 정리해두었습니다.

 

 

아마도 시저 암호 ( 카이사르 암호; Caesar ) 키 13으로 암호화한 암호문같습니다.

 

위 사이트(더보기)에서 Caser 선택 후 암호문과 키를 입력합니다.

 

 

이후 Decrypt => Quick Answer를 눌러 복호화를 진행하면 아래와 같은 문장이 나옵니다.

 

( the password is jvnbbfsmzwkkop0xbfxoow8chdz5yvrv )

 

시저 암호(카이사르 암호)라는 것은 확인했지만,

아쉽게도 해당 사이트에서는 복호화 시 모두 소문자로 출력하는 것 같습니다.

 

이전에 Python을 공부할 때 연습삼아 만들었던 코드를 조금 수정하여

문자열과 키를 입력받아 대문자 및 소문자 모두 복호화하여 반환하는 코드를 작성했습니다.

 

{ 코드 }
ciphertext = str(input("암호문 입력 >> "))
shift = int(input("쉬프트 수(키) 입력 >> "))

plaintext = ""

for i in ciphertext:

    if i.isalpha():

        if i.islower():
            asc_code = ord('a')
        else:
            asc_code = ord('A')

        result = chr((ord(i) - asc_code - shift) % 26 + asc_code)

    else:
        result = i
    plaintext += result

print(plaintext)
{ 결과 }
암호문 입력 >> Gur cnffjbeq vf WIAOOSFzMjXXBC0KoSKBbJ8puQm5lIEi
쉬프트 수(키) 입력 >> 13
The password is JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv

 

정상적으로 출력되는 것을 확인했으니, bandit12로 접속하겠습니다.

 

'리눅스 워게임' 카테고리의 다른 글

OverTheWire_Level 13 -> Level 14  (0) 2023.01.16
OverTheWire_Level 12 -> Level 13  (0) 2023.01.15
OverTheWire_Level 10 -> Level 11  (0) 2023.01.13
OverTheWire_Level 9 -> Level 10  (0) 2023.01.12
OverTheWire_Level 8 -> Level 9  (0) 2023.01.11