본문 바로가기
코딩/PythonChallenge

[PythonChallenge] Level 1 풀이

by zz! 2024. 5. 6.
728x90

.

http://www.pythonchallenge.com/

 

The Python Challenge

What people have said about us: "These sorts of things are in my opinion the best way to learn a language.", brberg at Media Cloisters "It's the best web site of the year so far.", Andy Todd at halfcooked "Addictive way to learn the ins and outs of Python.

www.pythonchallenge.com

 

[PythonChallenge] Level 1 풀이

더보기

사진을 통해 ROT2 암호로 접근을 시도를 하면 됩니다. 

everybody thinks twice before solving this.

위에 문구를 번역을 해보니까, "모두가 이 문제를 해결하기 전에 두 번 생각합니다." 라는 번역의 결과가 나옵니다.

그래서 아래의 암호를 파이썬 코드로 짜서 풀면 되는 문제입니다.

g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.

(처음에 K, O, E만 사진처럼 바꿨었는데, 그 과정은 생략하겠습니다.)

string = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."

my_list = list(string)
for i in my_list:
    if 'a' <= i <= 'x':
        print(chr(ord(i) + 2), end="")
    elif i == 'y':
        print("a", end="")
    elif i == 'z':
        print("b", end="")
    else:
        print(end=" ")

아스키 코드를 이용하여 소스코드를 작성한 다음 문제를 풀었습니다.

여기서 'y' 와 'z' 를 따로 한 이유는 복호화를 할 때 'y' 와 'z'는 +2를 해서 'y'는'[' 을 출력하고, 'z' 는 '\' 를 출력해서 따로 저렇게 해주었습니다. 

결과 : i hope you didnt translate it by hand  thats what computers are for  doing it in by hand is inefficient and that s why this text is so long  using string maketrans   is recom in by hand is inefficient and that s why this text is so long  using string 
maketrans   is recommended  now apply on the url

라는 것이 출력이 되고, 여기서 번역을 해보면

나는 당신이 그것을 손으로 번역하지 않았기를 바랍니다 그것은 컴퓨터가 손으로 그것을하는 것이 비효율적이기 때문에이 텍스트가 문자열을 사용하여 너무 긴 이유입니다. 문자열을 사용하여이 텍스트가 너무 긴 이유는 비효율적입니다. 
이제 URL에 메이크트랜스를 적용하는 것이 좋습니다.

라는 결과가 나옵니다. (여기서 손으로도 풀 수 있는 문제이지만, 문자가 더 길면, 손으로 하기엔 비효율적입니다.)

URL에 적용을 해보면, ocr이라는 것이 나옵니다. 

 

ROT2 암호를 간단히 알아보겠습니다.

ROT 암호의 한 종류로, 알파벳을 2자리씩 오른쪽으로 이동시켜 암호화하는 방식입니다.

ex) A -> C 가 되고, Y -> A 가 되고, Z -> B가 되는 방식입니다.

간단한 암호화 방식이지만 보안성이 낮아서 현대에는 잘 사용하지 않습니다.

 

728x90