writeup/해킹캠프CTF 2014

2014 동계 해킹캠프 미니 CTF recovery 문제 풀이(python)

진모씨 2014. 2. 19. 15:02

그냥 역으로 테이블 하나 구성하면 된다.


#!/usr/bin/python

from struct import unpack,pack


table = [48, 27, 50, 8, 47, 73, 12, 4, 66, 0, 14, 77, 56, 26, 63, 67, 17, 11, 68, 22, 72, 69, 60, 64, 74, 58, 54, 42, 65, 32, 33, 40, 39, 37, 51, 59, 24, 35, 38, 61, 21, 31, 57, 20, 76, 13, 10, 43, 9, 78, 46, 44, 45, 49, 3, 75, 23, 2, 19, 25, 28, 41, 29, 6, 30, 53, 70, 7, 16, 18, 34, 1, 62, 52, 5, 55, 36, 79, 71, 15]

vtable = {}

for i in range(len(table)):

        vtable[table[i]] = i


lt = len(table)

f = open("./ENCRYPTED","r")

f2 = open("./ORIGINAL","w")

d = f.read()

f.close()

a = ""

result = ""

for i in range(0,len(d),lt):

        a = d[i:i+lt]

        for j in range(0,lt):

                result += a[vtable[j]]

f2.write(result)

f2.close()


빨간색이 수정한부분이다.

ENCRYPTED를 읽어서 ORIGINAL을 쓰는 형식으로 바꿨다.

mp3가 나오는데 제목이 키값이다.