题目给了个文件,拿去file查看类型,不是个什么特殊文件。
root@kali:/mnt/hgfs/共享文件夹# file Reverseit
Reverseit: data
使用binwalk查看一下,也没有什么隐藏文件。
root@kali:/mnt/hgfs/共享文件夹# binwalk Reverseit
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
这就有点奇怪了,这个题是要搞什么?
放到010editor里面看一下,也看不出什么文件头什么的,但是仔细看看,发现有点猫腻:
文件头的部分是9D FF,反过来就是FFD9,是jpg文件的文件尾啊。
再看看文件尾部

hex从后往前看是FF D8 FF,正好也是jpg的文件头啊,文件名是Reverse-it,看来我们需要对文件内容进行反转。
下面两个脚本都是拿大佬的,我怎么这么菜。。。。。。。
(python2运行)
首先是内容反转:
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()
拿到一个图片:

同样是个反着的图片,直接读看也能读出来,大佬这里也给了一个脚本:
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[0]):
odata[x, y] = idata[i.size[0]-x-1, y]
o.save(sys.argv[1] + '.jpg')
拿到图片:

以上是使用python脚本的解决方法,会写python脚本真的是强大,代码能力太重要了。
但是同时,一些好用的工具也能给我们提供很多的便利,下面给出本题的命令行工具解决方法:
xxd -p Reverseit | tr -d '\n' | rev | xxd -r -p > reversed //功能相当于第一个脚本,把文件内容进行反转,得到的图片也一样
convert -flop reversed reversed.jpg //功能相当于第二个脚本,对图片进行镜像反转
可见这些工具有多么强大,好好学习吧。

在seccon-ctf-2014的Misc类别中,一道名为'Reverse-it'的题目引起注意。通过file和binwalk检查文件未发现明显线索,但在010Editor中发现文件头9D FF反向即为FFD9,对应JPEG文件结束标识,而文件尾部的FF D8 FF是JPEG的开始标识。因此推测需要翻转文件内容来解密。通过Python脚本和命令行工具,可以实现文件内容反转,揭示隐藏的图片。这展示了代码能力和熟练掌握命令行工具的重要性。
6141

被折叠的 条评论
为什么被折叠?



