혜랑's STORY

[WeChall] Training: Crypto - Caesar I 본문

2021 SISS 21기 활동/여름방학 CTF[연합]

[WeChall] Training: Crypto - Caesar I

hyerang0125 2021. 7. 22. 20:15

# 문제

'Caesar' 암호는 아래 그림과 같이 다른 문자가 n만큼 밀려 1대 1로 대응되는 암호 체계이다.

예를 들자면 다음과 같다.

위와 같이 대응하여 평문을 복호화 해보자.

  • 평문 : THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
  • 암호문 : QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD

따라서 시저 암호 알고리즘을 다음과 같이 나타낼 수 있고

이를 이용하여 파이썬 코드를 작성하여 문제를 해결해보자. 일단 얼마나 옆으로 shift할 것인지 알려주지 않았으므로 가능한 수를 모두 출력하는 방식으로 진행할 것이다.

ciphertext = "SGD PTHBJ AQNVM ENW ITLOR NUDQ SGD KZYX CNF NE BZDRZQ ZMC XNTQ TMHPTD RNKTSHNM HR BELEDLHEMACN"


for key in range(0,23):
    c = list(ciphertext)
    for i in range(len(c)):
        c[i] = chr((ord(c[i])-ord('A')+key)%26+ord('A'))
    plain = ''.join(c)
    print(plain)

코드를 실행시켜 다음과 같은 결과를 얻었다.

많은 문자들 중 뭔가 읽을 수 있을 법한 문장을 하나 찾았다.

THEUQUICKUBROWNUFOXUJUMPSUOVERUTHEULAZYUDOGUOFUCAESARUANDUYOURUUNIQUEUSOLUTIONUISUCFMFEMIFNBDO

위 문자에서 'U'가 공백을 의미한다고 치면

THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG OF CASESAR AND YOUR UNIQUE SOLUTION IS CFMFEMIFNBDO

라는 문장을 얻을 수 있다.

성공이다!

'2021 SISS 21기 활동 > 여름방학 CTF[연합]' 카테고리의 다른 글

[picoCTF] Mod 26 - Cryptography  (0) 2021.07.29
[WeChall] Training: ASCII  (0) 2021.07.22
[WeChall] Encodings - URL  (0) 2021.07.22
[WeChall] Training: Baconian  (0) 2021.07.22
[WeChall] Training: Stegano I  (0) 2021.07.22