gif
题目分析
打开gif文件夹,有很多张黑白图片
用winhex查看这些图片,没有发现可利用信息,于是想到黑白可能代表二进制零和一。我们将白色视为0黑色视为1或者反过来尝试一遍。一共有104张图片正好是8的倍数,可以转为8个一对二进制,再转化为ASCII码。由于图片较多,我们写一个python脚本。这里使用Python图像库PIL(Python Image Library),是python的第三方图像处理库。
from PIL import Image
result = ""
for i in range(104):
img = Image.open(f"C:\\Users\\Doby\\Desktop\\dbbc971bf4da461fb8939ed8fc9c4c9d\\gif\\{i}.jpg")
im_RGB = img.convert("RGB") # 将图片转换为RGB模式
r,g,b =im_RGB.getpixel((1,1)) #获得x,y坐标的rgb值
print(r,g,b)# 这题中白色图片rgb值:255,255,255 黑色图片rgb值:12,12,0
if r !=255: #255是白色
result +="1"
else:
result +="0"
#将二进制转换为ascii码
for i in range(0,len(result),8):
byte = result[i:i+8]
print(chr(int(byte,2)),end="")
"""
运行结果:
flag{FuN_giF}
"""
总结
看到很多黑白图片,想到他们对应着二进制的0和1,二进制可以使用ASCII码转换为字符,图片很多,写脚本可以提高我们的效率。