[SuNiNaTaS/Forensic] 18번 풀이

2019. 8. 2. 18:37문제풀이/suninatas.com

써니나타스 포렌식은 아직 다 못풀었으니까 그냥 난이도 순으로 업로드...

이게 왜 Forensic인지는 모르겠는데,

일단 문제에서 Cipher라고 알려주었다.

 

그리고 숫자들을 보면 다 127 이하인걸로 봐서 아스키코드인게 눈에 띈다.

그럼 저 숫자를 모두 아스키코드 decode를 해주자.

또다시 파이썬 공부할겸 파이썬으로 코드를 짜봤다.

msg = "86 71 57 107 89 88 107 103 97 88 77 103 89 83 66 110 98 50 57 107 73 71 82 104 101 83 52 103 86 71 104 108 73 69 70 49 100 71 104 76 90 88 107 103 97 88 77 103 86 109 86 121 101 86 90 108 99 110 108 85 98 50 53 110 86 71 57 117 90 48 100 49 99 109 107 104"

msgList = msg.split()

result = []

for i in msgList:

    result.append(chr(int(i)))

print(''.join(result))

대충 코드를 설명하자면,

 

msg는 주어진 아스키코드 값이고 숫자를 하나하나 분리하기 위해 split()을 사용하였다.

split()은 안에 따로 구분자를 지정하지 않으면 띄어쓰기를 기준으로 구분!

그 후 result라는 값에 문자로 복호화한 값들을 넣어주고, 리스트 내의 값들을 join()을 통해 이어붙였다.

결과값 생긴걸로 봐서 base64라는걸 알수있다..

어떻게 아냐면... 그냥 대소문자 영어 + 숫자가 막 많이 섞여있으면 base64인 경우가 많더라 ㅋㅋㅜ

그리고 맨 뒤에 == 이거 붙으면 base64일 확률이 매우 높다.

 

google에서 base64 decoder로 검색하면 나오는 사이트를 이용하면 되지만,

파이썬 공부 한번만 더 해보기로 했다...

 

import base64

msg = "VG9kYXkgaXMgYSBnb29kIGRheS4gVGhlIEF1dGhLZXkgaXMgVmVyeVZlcnlUb25nVG9uZ0d1cmkh"

result = base64.b64decode(msg.encode('utf-8'))

print(result.decode('utf-8'))

인코딩하고싶으면 b64decode 부분을 b64encode로만 바꾸면 된다.

Authkey: VeryVeryTongTongGuri!

'문제풀이 > suninatas.com' 카테고리의 다른 글

[SuNiNaTaS/Forensic] 32번 풀이  (0) 2019.08.02
[SuNiNaTaS/Forensic] 19번 풀이  (0) 2019.08.02
[SuNiNaTaS/MISC] 17번 풀이  (0) 2019.08.01
[SuNiNaTaS/MISC] 13번 풀이  (0) 2019.08.01
[SuNiNaTaS/MISC] 12번 풀이  (0) 2019.08.01