BugkuCTF-MISC题1和0的故事
基礎(chǔ)知識(shí):
PIL
PIL是Python Imaging Library,它為python解釋器提供了圖像編輯功能。
PIL.Image.new()方法通過(guò)給定的模式和大小創(chuàng)建一個(gè)新圖像。尺寸以(width,height)-tuple,以像素為單位。對(duì)于單波段圖像,顏色作為單個(gè)值給出,對(duì)于多波段圖像,顏色作為一個(gè)元組給出(各波段一個(gè)值)。
我們還可以使用顏色名稱。如果省略了color參數(shù),則圖像將填充為零(通常對(duì)應(yīng)于黑色)。如果顏色為無(wú),則不初始圖像。如果您要在圖像里粘貼或繪制信息,這將很有用。
用法:
PIL.Image.new(mode, size)
PIL.Image.new(mode, size, color)
參數(shù):
mode:用于新圖像的模式。 (可能是RGB,RGBA)
size:包含(寬度,高度)以像素為單位的2元組。
color:圖像使用什么顏色。默認(rèn)為黑色。如果給出的話,對(duì)于單頻帶模式,它應(yīng)該是單個(gè)
整數(shù)或浮點(diǎn)值;對(duì)于多頻帶模式,它應(yīng)該是一個(gè)元組。
返回值:Image對(duì)象。
putpixel()
PIL是Python Imaging Library,它為python解釋器提供了圖像編輯功能。 PixelAccess類提供對(duì)PIL.Image數(shù)據(jù)的讀寫訪問(wèn)權(quán)限(像素級(jí))。訪問(wèn)單個(gè)像素相當(dāng)慢。如果要遍歷圖像里的所有像素,則可能會(huì)通過(guò)Pillow API的其他部分的方法更快。
putpixel()修改x,y處的像素。對(duì)于單波段圖像,顏色作為單個(gè)數(shù)值給出;對(duì)于multi-band圖像,顏色作為元組給出
用法: putpixel(self, xy, color)
參數(shù):
xy:像素坐標(biāo),表示為(x,y)
value:-像素值。
返回值:具有像素的圖像。
解題過(guò)程
下載文件得到一個(gè)txt文件,打開(kāi)查看全是0和1
1和0可聯(lián)想到黑和白兩顏色,嘗試轉(zhuǎn)成二維碼
python轉(zhuǎn)二維碼:
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") #由于直接預(yù)覽分辨率太低,所以保存下來(lái)觀看""" PIL.Image.new(模式, 大小, 顏色) """運(yùn)行代碼發(fā)現(xiàn)上述二維碼少了定位標(biāo)志
通過(guò)ps可以手動(dòng)補(bǔ)全
直接生成二維碼
掃描得到flag
flag{QR_c0de_1s_1nterest1n9}
總結(jié)
以上是生活随笔為你收集整理的BugkuCTF-MISC题1和0的故事的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: uiwebview 编辑html5,【i
- 下一篇: c语言100000阶乘,求10000的阶