challenge/이외 CTF
[pythonchallenge] 1번 문제 What about making trans?
ssoL2
2021. 2. 24. 03:03
치환암호를 푸는 문제인 것 같다. 코딩짜러 가자..
처음에 이딴 식으로 짰다.. 굉장히 똥손이죠 ^^;;
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k',
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z']
string = input()
result_string = list()
for i in string :
try :
index = alphabet.index(i)
if index >= len(alphabet) - 2 :
result_string.append(alphabet[index-len(alphabet)+2])
else :
result_string.append(alphabet[index+2])
except ValueError :
result_string.append(i)
dash = ''
result = dash.join(result_string)
print(result)
정상적인 영어가 출력된다. 손으로 해결하지는 않았지만 굉장히 더러워 보이는 내 코드..
string.maketrans()를 추천해준다. 다시 짜보자.
바로 그냥 3줄로 끝낼 수 있는 굉장한 녀석 등장 ^^
maketrans(old, new)함수로 old->new로 치환해주는 테이블(dict)를 만들고,
바꿀 string에 translate 함수를 불러 인자로 치환 테이블을 넣어주면 된다.
string = input()
transtab = str.maketrans('abcdefghijklmnopqrstuvwxyz','cdefghijklmnopqrstuvwxyzab')
print(string.translate(transtab))
똑같은 결과 ^^ 코드의 간결화 굿
이제 "now apply on the url" 처럼 url에도 적용해봅시다. 그러면 ocr.jvon이 나오고 map.html 대신 넣어보자
[www.pythonchallenge.com/pc/def/ocr.jvon] 을 웹 브라우저에 치면 [ocr.jvon] 파일이 다운로드 된다.
순간 풀렸나 하고 기대했지만, HxD로 열어본 결과 "너 jvon 파일 들어는 봤냐~~~?"라는 문장이 들어있다.
곰곰이 생각해보다가 jvon만 바꿔서 해보면 될라나 해서 [www.pythonchallenge.com/pc/def/ocr.html]로 검색했더니
다음 문제로 넘어간다. 야호