< Lv 11 -> Lv 12 >
다음 단계로 넘어가려면 data.txt 파일을 확인해야 합니다.
lowercase(소문자, a-z)와 uppercase(대문자, A-Z)가 13 positions rotated 되었다고 쓰여있습니다.
이번 문제는 암호학에 관련된 문제로 보입니다.
암호학에 대해서는 해당 블로그 "현대 암호학 기초" 카테고리에서 간단히 정리해두었습니다.
아마도 시저 암호 ( 카이사르 암호; Caesar ) 키 13으로 암호화한 암호문같습니다.
위 사이트(더보기)에서 Caser 선택 후 암호문과 키를 입력합니다.
이후 Decrypt => Quick Answer를 눌러 복호화를 진행하면 아래와 같은 문장이 나옵니다.
시저 암호(카이사르 암호)라는 것은 확인했지만,
아쉽게도 해당 사이트에서는 복호화 시 모두 소문자로 출력하는 것 같습니다.
이전에 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 |