ctfshow-misc:交通繁忙

下载附件得到张gif图,呼应了题目是红绿灯的不断交换

ctf的gif题目,那么一般就是分析帧了

1000多帧的gif分离出来

我这里用的爱奇艺万能联播自带的看图功能(巨好用!)

分离之后会自动生成文件夹,里面的图片也会按帧顺序命名

可以看到有红绿黄三种颜色变化(废话...)和无颜色的,而且有规律的夹杂在有颜色的图之间

按我们对信号灯的认识,给我们传递信息的就是这三种颜色,那没颜色的图对我们就没意义了

可以用cmd命令在当前文件下打:

for /l %i in (2,2,1168) do del Traffic_Light_%i.jpeg

删除这些空帧后可以让我们更清楚分析这些图片

绿红红绿绿红红绿黄
绿红红绿红红绿绿黄

可以发现每8个就出一个黄,也就是说黄为分隔,每组8个数字,那么很容易就可以猜到是二进制

那么问题是红绿谁是0谁是1

而它俩是有高低之分的,那么对于二进制来说一般都是低位为0,高位为1(一本正经的瞎猜)

那么可以上代码了

思路是获取三个圆圈中的一点,分析rgb值,

不为172也就是灰色,则对应位置有颜色

from skimage import io,data
import os

img_lists = [i for i in os.listdir(".") if os.path.splitext(i)[1] == ".jpeg"]
bytes_=""

for i in range(1,len(img_lists)+1):
	img = io.imread("./Traffic_Light_{}.jpeg".format(i*2-1))
	R=int(img[38,113,0])
	Y=int(img[92,113,0])
	G=int(img[132,113,0])
	if R != 172:
		bytes_+= '1'
	if Y != 172:
		continue
	if G != 172:
		bytes_+= '0'
print(bytes_)

得到

接下来把它转成字符串

GET!!!

-----------------------------------------------------------------我是分割线--------------------------------------------------------------

 

看完了觉得不错就点个赞或者评论下吧,感谢!!!

如果本文哪里有误随时可以提出了,收到会尽快更正的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章