日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

攻防世界-glance-50-WriteUp附Python解題腳本

系統 1925 0

題目分析

拿到題目以后題目是一個長條狀gif

攻防世界-glance-50-WriteUp附Python解題腳本_第1張圖片
那么這個題大概率就是分離gif的每一幀然后拼接形成圖片得到flag

解題步驟

有了思路以后,步驟也很清晰。就是兩步。第一步,分離gif,第二步,拼接gif

  • 步驟

1.分離gif
好多方法都可以分離gif,這里使用python分離一下,上代碼:

            
              
                #分離gif.py
              
              
                from
              
               PIL 
              
                import
              
               Image

savepath 
              
                =
              
              
                "F:\ctf文件\\D-R0s1\\"
              
              
                #保存路徑
              
              

im 
              
                =
              
               Image
              
                .
              
              
                open
              
              
                (
              
              
                'F:\ctf文件\\1.gif'
              
              
                )
              
              
                #從文件加載圖像
              
              
                try
              
              
                :
              
              
    im
              
                .
              
              save
              
                (
              
              savepath
              
                +
              
              
                '{:d}.png'
              
              
                .
              
              
                format
              
              
                (
              
              im
              
                .
              
              tell
              
                (
              
              
                )
              
              
                )
              
              
                )
              
              
                #讀取每一幀
              
              
                while
              
              
                True
              
              
                :
              
              
        im
              
                .
              
              seek
              
                (
              
              im
              
                .
              
              tell
              
                (
              
              
                )
              
              
                +
              
              
                1
              
              
                )
              
              
                #在不同幀之間移動
              
              
        im
              
                .
              
              save
              
                (
              
              savepath
              
                +
              
              
                '{:d}.png'
              
              
                .
              
              
                format
              
              
                (
              
              im
              
                .
              
              tell
              
                (
              
              
                )
              
              
                )
              
              
                )
              
              
                #保存文件
              
              
                except
              
              
                :
              
              
                pass
              
            
          

分離出來發現有兩百多個圖像
攻防世界-glance-50-WriteUp附Python解題腳本_第2張圖片 2.使用python將這兩百多個圖像拼接起來,上代碼:

            
              
                #拼接圖像.py
              
              
                from
              
               PIL 
              
                import
              
               Image
path 
              
                =
              
              
                "F:\\ctf文件\\D-R0s1\\"
              
              
save_path 
              
                =
              
              
                'F:\\ctf文件\\'
              
              

im 
              
                =
              
               Image
              
                .
              
              new
              
                (
              
              
                'RGBA'
              
              
                ,
              
              
                (
              
              
                2
              
              
                *
              
              
                201
              
              
                ,
              
              
                600
              
              
                )
              
              
                )
              
              
                #創建新照片
              
              

    imagefile 
              
                =
              
              
                [
              
              
                ]
              
              
                #存儲所有的圖像的名稱
              
              
    width 
              
                =
              
              
                0
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                0
              
              
                ,
              
              
                201
              
              
                )
              
              
                :
              
              
        imagefile
              
                .
              
              append
              
                (
              
              Image
              
                .
              
              
                open
              
              
                (
              
              path
              
                +
              
              
                str
              
              
                (
              
              i
              
                )
              
              
                +
              
              
                '.png'
              
              
                )
              
              
                )
              
              
                #遍歷,將圖像名稱存入imagfile
              
              
                for
              
               image 
              
                in
              
               imagefile
              
                :
              
              
    im
              
                .
              
              paste
              
                (
              
              image
              
                ,
              
              
                (
              
              width
              
                ,
              
              
                0
              
              
                ,
              
              
                2
              
              
                +
              
              width
              
                ,
              
              
                600
              
              
                )
              
              
                )
              
              
                #將圖片張貼到另一張圖片上
              
              
    width 
              
                =
              
               width 
              
                +
              
              
                2
              
              
im
              
                .
              
              save
              
                (
              
              save_path
              
                +
              
              
                'D-R0s1.png'
              
              
                )
              
              
im
              
                .
              
              show
              
                (
              
              
                )
              
            
          

拼接后結果
攻防世界-glance-50-WriteUp附Python解題腳本_第3張圖片
得到flag

題目解題腳本分析

拼接圖像.py

  • 第一部分
            
              im 
              
                =
              
               Image
              
                .
              
              new
              
                (
              
              
                'RGBA'
              
              
                ,
              
              
                (
              
              
                2
              
              
                *
              
              
                201
              
              
                ,
              
              
                600
              
              
                )
              
              
                )
              
              
                #創建新照片
              
            
          

根據圖像原來的寬度高度創建一個新圖像
攻防世界-glance-50-WriteUp附Python解題腳本_第4張圖片

  • 第二部分
            
              imagefile 
              
                =
              
              
                [
              
              
                ]
              
              
                #存儲所有的圖像的名稱
              
              
width 
              
                =
              
              
                0
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                0
              
              
                ,
              
              
                201
              
              
                )
              
              
                :
              
              
    imagefile
              
                .
              
              append
              
                (
              
              Image
              
                .
              
              
                open
              
              
                (
              
              path
              
                +
              
              
                str
              
              
                (
              
              i
              
                )
              
              
                +
              
              
                '.png'
              
              
                )
              
              
                )
              
              
                #遍歷,將圖像名稱存入imagfile
              
            
          

在文件目錄下遍歷圖像并將圖像名稱存入inagefile中

  • 第三部分
            
              
                for
              
               image 
              
                in
              
               imagefile
              
                :
              
              
    im
              
                .
              
              paste
              
                (
              
              image
              
                ,
              
              
                (
              
              width
              
                ,
              
              
                0
              
              
                ,
              
              
                2
              
              
                +
              
              width
              
                ,
              
              
                600
              
              
                )
              
              
                )
              
              
                #將圖片張貼到另一張圖片上
              
              
    width 
              
                =
              
               width 
              
                +
              
              
                2
              
            
          

此處需要特別重要的是im.paste()中的值,(width,0,2+width,600)這是圖像的一組坐標值。相當于(x1,y1,x2,y2),對應坐標圖為:
攻防世界-glance-50-WriteUp附Python解題腳本_第5張圖片 這樣一來這個坐標值就很容易理解了(width,0,2+width,600)
寬度就是2每次加2這樣疊加起來,高度就是0-600。圖片原始屬性的高度。
這樣就實現了循環粘貼的目的。

總結

切實提高自己的編碼能力,讓程序代替搬磚。
關于python腳本處理圖片隱寫可以參考一下yanzm師傅在i春秋的文章。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 麦盖提县| 新津县| 甘孜县| 正宁县| 连平县| 延长县| 乌什县| 吐鲁番市| 宁城县| 土默特右旗| 永福县| 黄平县| 商水县| 黄浦区| 彭州市| 长寿区| 临清市| 聂拉木县| 安陆市| 焉耆| 逊克县| 腾冲县| 临汾市| 奉节县| 象州县| 当雄县| 弋阳县| 桂林市| 大姚县| 日土县| 翼城县| 随州市| 盐城市| 澜沧| 五常市| 图们市| 盘山县| 武胜县| 京山县| 东丽区| 荔波县|