woonadz :)

[suninatas] Game 18 문제 풀이_forensic_nabi 본문

IT/기타 워게임

[suninatas] Game 18 문제 풀이_forensic_nabi

Crain 2023. 1. 3. 18:41
반응형

Game 18 문제

포렌식으로 분류된 문제지만 사실상 암호학 문제이다.

 

먼저 해당 숫자들이 모두 십진수이다. 이 상태에서는 어떠한 암호가 사용되었는지 알 수 없기 때문에 아스키 문자로 변환하였다. (문제를 풀 때는 변환 사이트를 사용했지만, 풀이를 적을 때는 공부를 위해 파이썬 코드를 작성하겠다.)

 

아스키 변환 코드는 다음과 같다.

ten = [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]
asciii = []

for i in range(0,len(ten)):
    asciii.append(chr(ten[i]))

asci_i = ''.join(asciii)
print(asci_i)

처음에는 시저암호인지를 의심했고, 그 다음에는 전치암호인지를 의심했다. (이렇게 쉬운 난이도에서 자주 나오는 고대 암호들)

둘 다 아니었기 때문에 base64 디코딩을 진행했다.

최종 코드는 다음과 같다.

import base64

ten = [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]
asciii = []

for i in range(0,len(ten)):
    asciii.append(chr(ten[i]))

asci_i = ''.join(asciii)
print(asci_i)

base64decoding = base64.b64decode(asci_i)
key = base64decoding.decode('ascii')
print("answer : "+key)

다음과 같은 AuthKey 값을 얻을 수 있었다.

문제는 해당 평문을 base 64인코딩 후 10진수를 변환한 값이었다.

반응형