seccon-ctf-2014-Misc-reverse-it(强大的命令行工具)

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

题目给了个文件,拿去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     //功能相当于第二个脚本,对图片进行镜像反转

可见这些工具有多么强大,好好学习吧。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值