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!!!

-----------------------------------------------------------------我是分割線--------------------------------------------------------------

 

看完了覺得不錯就點個贊或者評論下吧,感謝!!!

如果本文哪裏有誤隨時可以提出了,收到會盡快更正的

 

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