CTF | wargame

Hack The Vote 16 - topkek (Crypto, 2-10 진법)

nopdata 2016. 11. 12. 01:03

TOPKEK

그림입니다.

< 문제 화면 >


문제는 위처럼 되어 있고, KEK과 TOP이 나열되어 있는 텍스트 파일이 제공된다.


그림입니다.

< 문제 파일 >

KEK과 TOP이 반복적으로 나열되어 있어서 무슨 암호인지 알아채지 못했는데 알고 보니 KEK과 TOP 뒤에 붙어있는 느낌표를 가지고 판단을 하는 문제였다.

각각 KEK이 앞에 붙은경우 느낌표의 갯수대로 0을, TOP이 붙으면 1을 붙여서 출력을 해 주면 된다.


writeup을 보면 비슷하지만 다양한 방법으로 소스코드를 작성하는데 아래의 소스코드가 가장 간결했던것 같다.


import libnum

f=open('kek.43319559636b94db1c945834340b65d68f90b6ecbb70925f7b24f6efc5c2524e.txt','rb')

data=f.read()

f.close()


data_split = data.split()

decrypt = ''

for block in data_split:

        if block.startswith('KEK'):

                decrypt += '0' * block.count('!')

        else:

                decrypt += '1' * block.count('!')


decrypt = int(decrypt, 2)

print libnum.n2s(decrypt)


answer : flag{T0o0o0o0o0P______1m_h4V1nG_FuN_r1gHt_n0W_4R3_y0u_h4v1ng_fun______K3K!!!}


ref :

https://github.com/grocid/CTF/tree/master/Hack%20the%20vote/2016#topkek-50-p