분석하면 key를 순환하면서 file을 읽어들여 xor한다.
readme.txt에서 file은 .exe라고 했으니 .exe 포멧임과 exe파일의 널바이트 공간을 참고해서 키를 게싱했다.
encoding decoding에서 고생했다.ㅠ
from codecs import * import binascii f=open('./file','rb') f2=open('./decfile','wb') #cont=f.read() key='93 9A 8B 8C 8F 93 9E 86 9C 97 9A 8C 8C 93 9A 8B 8C 8F 93 9E 86 9C 97 9A 8C 8C'.split(' ') i=0 keylen=len(key) for i in range(21780): a=f.read(1) a=int(binascii.hexlify(a).decode(),16) k=int(key[i%keylen],16) d=a^k print('{} ^ {} = {}'.format(hex(a),hex(k),hex(d))) f2.write(bytes.fromhex(hex(d)[2:].rjust(2,'0'))) f2.close()
'war game > reversing.kr' 카테고리의 다른 글
[reversing.kr]windows kernel (0) | 2017.03.17 |
---|---|
[reversing.kr]crc1 (0) | 2017.03.16 |
[reversing.kr]twist1 (0) | 2017.03.09 |
[reversing.kr]position (0) | 2017.03.09 |