Reverseit Binary 100pts Seccon CTF

Reverseit

Di Challange Ini kita di berikan file binary , kalau di teliti file itu mengandung signature yang di kenal sebagai jpeg image

$ file Reverseit
Reverseit: data
$ hexdump -C Reverseit
00000000  9d ff 70 0d b6 da fc 93  72 63 28 22 22 bd d2 18  |..p.....rc(""...|
...
000013b0  02 02 02 02 02 02 02 02  02 02 02 02 02 02 02 02  |................|
*
00001ba0  02 02 02 02 02 02 02 02  02 02 02 02 02 e3 16 47  |...............G|
...
00001e00  84 00 84 00 10 10 10 00  64 94 64 a4 01 00 0e ff  |........d.d.....|
00001e10  8d ff       

Kita Gunakan script python untuk reverse keseluruhan dari file Reverseit

import sys
 
def swap_nibbles(byte):
  return ((byte<<4) | (byte>>4)) & 0xff
 
i=open(sys.argv[1], 'rb')
o=open(sys.argv[1] + '.rev', 'wb')
o.write(''.join(map(chr, map(swap_nibbles, map(ord, i.read()[::-1])))))
i.close()
o.close()
$ python rev_bytes.py Reverseit
$ file Reverseit.rev 
Reverseit.rev: JPEG image data, JFIF standard 1.01
$ hexdump -C Reverseit.rev
00000000  ff d8 ff e0 00 10 4a 46  49 46 00 01 01 01 00 48  |......JFIF.....H|
...

Hasilnya Reveseit.rev adalah JPEG Seperti Ini , Masih terbalik tulisannya

Reverseit.revAgar Normal mari kita code untuk meluruskannya :3

import sys
from PIL import Image
 
i = Image.open(sys.argv[1])
o = Image.new(i.mode, i.size)
idata, odata = i.load(), o.load()
 
for y in range(i.size[1]):
  for x in range(i.size[]):
    odata[x, y] = idata[i.size[]-x-1, y]
 
o.save(sys.argv[1] + '.jpg')
$ python revh_image.py Reverseit.rev

dan kita mendapatkan gambar yang normal bertulisan SECCON{6in_tex7}:

Reverseit.rev.jpg

dari coding ruby di atas , dengan command ini kamu juga bisa melakukan reverse :

$ hexdump -ve '1/1 "%.2x"' Reverseit | rev | xxd -r -p > Reverseit.rev
$ convert -flop Reverseit.rev Reverseit.rev.jpg