ssoL2 TISTORY

[pythonchallenge] 1번 문제 What about making trans? 본문

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]로  검색했더니

다음 문제로 넘어간다. 야호

'challenge > 이외 CTF' 카테고리의 다른 글

[pythonchallenge] 0번 문제 warming up  (0) 2021.02.24
[suninatas] 30번 풀이  (0) 2021.02.14
[Timisoara CTF 2019] Tri-color QR 풀이  (0) 2021.02.05
[suninatas] 19번 풀이  (0) 2021.01.19
[suninatas] 18번 풀이  (0) 2021.01.18
Comments