文件用linux的file指令看一下,是个7z格式的压缩包,解压得到myheart~,再用file指令看一下得到pcap-ng capture file - version 1.0,可知是个抓包文件,用wireshalk打开,选择file–>export objects–>HTTP,导出全部文件,修改第一个文件名为LoiRLUoq(0),得到23个文件,将文件命名为LoiRLUoq(0)~LoiRLUoq(22)

西普CTF-Broken Heart-以夕阳落款

其中的content-Range包括文件的字节位置。
linux中执行:strings myheart.pcap | grep 'Content-Range' | awk '{print NR,$3}' > myheart.txt

输出到文件myheart.txt,将txt和导出的23个文件放在一个文件夹下
编写代码,输出到文件,后来观察头包含HDR,前面缺少13个字节,猜测可能是个PNG图片,补充PNG头的前13个字节。打开图片。

f=open('myheart.txt','r')
x=list(f.readlines())
f.close()
listvalues=[]
indexlist=[]
for i in xrange(len(x)):
d=x[i].split()[1].split('/')[0].split('-') #提取前后两个数
flag=True
for kline in listvalues:
if (int(d[0])>=kline[0] and int(d[1])<=kline[1]):#若数在已存在的列表中,则取消存储
flag=False
break
if flag:
listvalues.append((int(d[0]),int(d[1])))#存储
indexlist.append(i) #存储原顺序,以得到文件名

sortedpos=sorted([xx[0] for xx in listvalues]) #排序

fresult=open('resultx.png','wb')
fresult.write('89504E470D0A1A0A0000000D49'.decode('hex')) #写入png头,共13个字节
for i in xrange(len(sortedpos)):
index=0
for searchnums in listvalues:
if(sortedpos[i]==searchnums[0]): #在存储的范围列表中找到位置序号
break
else:
index+=1
f=open('LoiRLUoq(%d)'%(indexlist[index]),'rb') #打开文件
if(i!=len(sortedpos)-1):
fresult.write(f.read()[:sortedpos[i+1]-sortedpos[i]])
else:
fresult.write(f.read()) 
f.close()
fresult.close()
print '执行完毕,请查看图片得到key'

 

Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Flag请点击这里查看索引

查看所有Flag文章需要输入密码,需要获取文章密码的童鞋请扫描下面微信或支付宝二维码捐助至少2元(老哥,捐多捐少是个缘分)之后发送支付凭证号联系我获取,Flag大全地址:Flag大全

新功能:捐款的小伙伴请联系我把自己的注册邮箱加入网站白名单,可以免回复看到本站所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜!

微信二维码:
支付宝二维码: