取证类样题一共两道题,题目如下:
1、从一个磁盘镜像(DD格式)中恢复一个有关火星登陆探索车的JPEG文件,并递交其MD5值。文件下载(200分)
2、图片里的奥秘。文件下载(200分)
本来对于取证是完全不会的,不过不得不说这两道题确实是太简单。
第一题是要从中找出JPEG,个人不知道怎么直接还原,但是观察会发现,里面的内容是没有压缩的,故可以直接从文件中找出JPEG的部分。
首先,找到JPEG的格式,可参见这里。前四个字节是0xffd8ffe0,第7-11个字节是0x4A46494600(JFIF),结束是0xffd9。
如果我们直接找到这个开头,然后找其后第一个结尾,部分图片是对的,但有部分确实错误的,因为在APPn段中,也可以存储一份微缩图像,微缩图像也是同样的开头和结尾。特殊判断处理一下即可:
import re fp = open('Image.raw', 'rb') content = fp.read() fp.close() cnt = 0 start = 0 while True: pic_start = content.find('xffxd8xffxe0', start) if pic_start == -1: break start = pic_start + 1 while True: first_start = content.find('xffxd8xffxe0', start) first_end = content.find('xffxd9', start) if first_start != -1 and first_start < first_end: start = first_end + 1 else: break pic_end = first_end cnt += 1 fp = open('%d.jpg' % cnt, 'wb') fp.write(content[pic_start:pic_end + 2]) fp.close() start = pic_end + 1
于是得到此图应该为题目中所需图片,计算MD5即可。
第二题就更水了,看起来似乎挺高端的样子,但其实,只要直接把文件当文本文件查看,便会发现其中直接写着flag,这种信息隐藏程度真是让人无话可说。
以下是xxd的部分结果:
0000140: 0000 0001 0000 0048 0000 0001 ffd8 ffe0 .......H........ 0000150: 0010 4a46 4946 0001 0200 0048 0048 0000 ..JFIF.....H.H.. 0000160: ffed 000c 4164 6f62 655f 434d 0001 ffee ....Adobe_CM.... 0000170: 000e 4164 6f62 6500 6480 0000 0001 ffdb ..Adobe.d....... 0000180: 0084 000c 0808 0809 080c 0909 0c11 0b0a ................ 0000190: 666c 6167 3d73 6563 2e68 6475 2e65 6475 flag=sec.hdu.edu 00001a0: 2e63 6e0c 0c0c 110c 0c0c 0c0c 0c0c 0c0c .cn.............
最后,今天把初赛做了,已经彻底和决赛说再见了,之前规则明明写着有25道题,结果突然变成了100道题,然后毫不知情的情况下就慢悠悠的做,到最后十来分钟,发现怎么还有第26题,还当系统出了问题,最后却发现外面规则写着有100道题,已经无话可说了,到最后也就做了30题左右的,这就是直接不看题蒙期望也是25分,这还怎么玩。太伤心了,本来还说决赛能好好玩玩的,没想到竟是这样收场,最近真是诸事不顺……
一个人跑去帮同学做了下初赛,竟然都把他们送进了决赛,对这比赛无语了……