亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 1788 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條評論
主站蜘蛛池模板: 欧美综合图区亚欧综合图区 | 国产福利精品在线 | 国产一区二区三区四区 | 婷婷亚洲综合五月天在线 | 国产一区二区三区在线观看视频 | 四虎免费网址 | 亚洲一区二区福利视频 | 69性影院在线观看国产精品87 | 免费区欧美一级毛片 | 香港三级做爰大爽视频 | 天海翼一区二区三区高清视频 | 国产欧洲亚洲 | 伊人久久亚洲综合 | 青青热在线精品视频免费 | 日本一级淫一片免费 | www日韩在线 | b毛片 | 最近中文字幕无吗免费视频 | 成人合集大片bd高清在线观看 | 91精品久久久久亚洲国产 | 婷婷色网| 够爱久久| 免费看又爽又黄禁片视频1000 | 激情五月社区 | 四虎免费网址 | 国产一区二区三区免费 | 牛牛影视成人午夜影视 | 天海翼一区二区在线观看 | 国产精品99久久免费观看 | 男女拍拍视频黄的全免费 | 中文国产欧美在线观看 | 日韩精品在线视频观看 | 亚洲在线观看一区二区 | 九九国产在线 | 欧美日韩在线观看区一二 | 一级a毛片免费 | 日日碰狠狠添天天爽爽爽 | 性视频一级 | 一本毛片 | 特级a毛片| 99在线热播 |