BugkuCTF-MISC题1和0的故事
基礎知識:
PIL
PIL是Python Imaging Library,它為python解釋器提供了圖像編輯功能。
PIL.Image.new()方法通過給定的模式和大小創建一個新圖像。尺寸以(width,height)-tuple,以像素為單位。對于單波段圖像,顏色作為單個值給出,對于多波段圖像,顏色作為一個元組給出(各波段一個值)。
我們還可以使用顏色名稱。如果省略了color參數,則圖像將填充為零(通常對應于黑色)。如果顏色為無,則不初始圖像。如果您要在圖像里粘貼或繪制信息,這將很有用。
用法:
PIL.Image.new(mode, size)
PIL.Image.new(mode, size, color)
參數:
mode:用于新圖像的模式。 (可能是RGB,RGBA)
size:包含(寬度,高度)以像素為單位的2元組。
color:圖像使用什么顏色。默認為黑色。如果給出的話,對于單頻帶模式,它應該是單個
整數或浮點值;對于多頻帶模式,它應該是一個元組。
返回值:Image對象。
putpixel()
PIL是Python Imaging Library,它為python解釋器提供了圖像編輯功能。 PixelAccess類提供對PIL.Image數據的讀寫訪問權限(像素級)。訪問單個像素相當慢。如果要遍歷圖像里的所有像素,則可能會通過Pillow API的其他部分的方法更快。
putpixel()修改x,y處的像素。對于單波段圖像,顏色作為單個數值給出;對于multi-band圖像,顏色作為元組給出
用法: putpixel(self, xy, color)
參數:
xy:像素坐標,表示為(x,y)
value:-像素值。
返回值:具有像素的圖像。
解題過程
下載文件得到一個txt文件,打開查看全是0和1
1和0可聯想到黑和白兩顏色,嘗試轉成二維碼
python轉二維碼:
from PIL import Image MAX = 25 #二維碼大小 pic = Image.new("RGB",(MAX, MAX)) #str = """1111111001110010001111111100000100001111010100000110111010011100010010111011011101010111100001011101101110101010101000101110110000010011000101010000011111111010101010101111111000000000100000110000000011000111011101101000110000001000010110010010010100010011110100001110111001100111101001010110010010011000001001100001001101000111100011111101110010100010110111110011011111101111000110110010010101101100100011110011111111111011100000000101100011000101001111111010010100101010001100000101010101010001100110111010001001111111100101011101000011001011110111101110100100110010010000110000010110000110110110011111111011010000101110101 #"""#修改后的二維碼 str="""0000000001110010000000000000000000001111010000000000000000011100010000000000000000010111100000000000000000001010101000000000000000000011000101000000000000000010101010100000000000000000100000110000000011000111011101101000110000001000010110010010010100010011110100001110111001100111101001010110010010011000001001100001001101000111100011111101110010100010110111110011011111101111000110110010010101101100100011110011111111111011100000000101100011000101000000000010010100101010001000000001010101010001100100000000001001111111100100000000000011001011110111000000000100110010010000100000000110000110110110010000000011010000101110101 """#原二維碼 # str為獲取的01片段 i=0 for y in range (0,MAX):for x in range (0,MAX):if(str[i] == '1'):pic.putpixel([x,y],(0, 0, 0))else:pic.putpixel([x,y],(255,255,255))i = i+1 pic.show() pic.save("5.png") #由于直接預覽分辨率太低,所以保存下來觀看""" PIL.Image.new(模式, 大小, 顏色) """運行代碼發現上述二維碼少了定位標志
通過ps可以手動補全
直接生成二維碼
掃描得到flag
flag{QR_c0de_1s_1nterest1n9}
總結
以上是生活随笔為你收集整理的BugkuCTF-MISC题1和0的故事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uiwebview 编辑html5,【i
- 下一篇: c语言100000阶乘,求10000的阶