gif

gif (来源:攻防世界)

1.关卡描述


2.解题步骤


分析:

题目说是动态图,实际上却是一大堆分离出来的图片:

103张黑白图片(实际是104张,没有计算0张图片),猜测会不会是白对应1,黑对应0,或者白0黑1,猜测为二进制:

简单的试了一部分,发现不对,(笔记:简易以后要么测试8位,或者是16位等,不要只测某个部分的)

那么观察16进制:

黑色有这些字符特征

白色:

没有任何的头绪:

看看其他writeup是如何做的:

=============================

自己出现的问题,为什么想到了思路,却没有做出来,是因为测试的方法不对,没有添加空格,

下面的这个工具就不用考虑空格,他会自动处理

===========

看了writeup知道了错在哪里,我们知道了白色代表0,黑色代表1,手动搞的话,这里就不说了,我们使用脚本进行:

脚本一:

通过 黑白图片的md5不一样,写python脚本提取

(笔记:libnum库是一个关于各种数学运算的函数库,它包含common maths、modular、modular squre roots、primes、factorization、ECC、converting、stuff等方面的函数)

#coding:utf-8
import libnum
import hashlib
#主要通过 md5判断0或者1
#白代表0,黑代表1
#n0
with open("0.jpg","rb") as f:
    md5i=hashlib.md5()
    md5i.update(f.read())
    n0=md5i.hexdigest()
    print n0
#n1
with open("1.jpg","rb") as f1:
    md5i=hashlib.md5()
    md5i.update(f1.read())
    n1=md5i.hexdigest()
    print n1

flag=""
for i in range(0,104):
   with open(str(i)+".jpg","rb") as f2:
        md5i = hashlib.md5()
        md5i.update(f2.read())
        n3 = md5i.hexdigest()
        if n3==n0:
            flag+="0"
        if n3==n1:
            flag+="1"
print flag
print libnum.n2s(int(flag,2))

脚本二:

发现黑色图片RGB色码为(12, 12, 0),白色图片为(255, 255, 255),使用python脚本读取图片 像素值,以255和12为阈值判断,生成二进制字符,转换ASCII即可。(笔记这种像素值利用QQ截图就能看到RGB

#!/usr/bin/env python
# ‐*‐ coding: utf‐8 ‐*‐
# @Date : 2020‐03‐17 10:51:22
# @Author : windy
# @Version : v1.0
from PIL import Image
import libnum
text=''
for i in range(104):
   pic_name='%d.jpg' %(i)
   im=Image.open(pic_name,'r')
   pic_color=(im.getpixel((10,10)))[0] #这里改为(im.getpixel((0,0)))[0] 结果是一样的
   if pic_color==255:
      text+='0'
   elif pic_color==12:
      text+='1'
print(text)
print(libnum.n2s(int(text,2)))

与其类似的:

脚本三:

利用f.read()方式区分黑白图

利用rgb颜色的方式区分黑白图

==============

比较好的思路:

================

总结像这种还有一种的可能是莫斯密码,还需要多家细心与学习

要对数据敏感一点

flag{FuN_giF}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值