下載附件得到張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!!!
-----------------------------------------------------------------我是分割線--------------------------------------------------------------
看完了覺得不錯就點個贊或者評論下吧,感謝!!!
如果本文哪裏有誤隨時可以提出了,收到會盡快更正的