BugKu:0和1的故事(writeup)

题目附件包含一个文本文件,内容是一个25x25的01矩阵,在文末给出。从评论区的wiki词条可以知道25x25为版本2的二维码尺寸,找一个已有的版本2二维码对比即可得到定位标志的实际图样,将其加到三个角上即可得到一个有效的二维码,如图右。

缺少定位标志 添加定位标志
BugKu:0和1的故事(writeup) BugKu:0和1的故事(writeup)

扫描添加定位标志后的二维码即可得到flag为flag{QR_c0de_1s_1nterest1n9},也可以使用一些在线识别二维码的网站,如草料二维码。原始附件转二维码的Python脚本如下:

from PIL import Image  with open("1和0的故事.txt", "r") as f:     data = [list(i.strip()) for i in f.readlines()]  # 7*7的定位标志 flag = [     [1, 1, 1, 1, 1, 1, 1],     [1, 0, 0, 0, 0, 0, 1],     [1, 0, 1, 1, 1, 0, 1],     [1, 0, 1, 1, 1, 0, 1],     [1, 0, 1, 1, 1, 0, 1],     [1, 0, 0, 0, 0, 0, 1],     [1, 1, 1, 1, 1, 1, 1] ]  img = Image.new("1", (25, 25)) for i in range(len(data)):     for j in range(len(data[1])):         # 左上角定位标志         if i < 7 and j < 7:             img.putpixel((i, j), flag[i][j] ^ 1)         # 左下角定位标志         elif i > 17 and j < 7:             img.putpixel((i, j), flag[i-18][j] ^ 1)         # 右上角定位标志         elif i < 7 and j > 17:             img.putpixel((i, j), flag[i][j-18] ^ 1)         else:             img.putpixel((i, j), int(data[i][j]) ^ 1)  img.resize((500, 500)).show() 

附件内容:

0000000001110010000000000 0000000000011110100000000 0000000001110001000000000 0000000010111100000000000 0000000010101010000000000 0000000001100010100000000 0000000010101010100000000 0000000001000001100000000 1100011101110110100011000 0001000010110010010010100 0100111101000011101110011 0011110100101011001001001 1000001001100001001101000 1111000111111011100101000 1011011111001101111110111 1000110110010010101101100 1000111100111111111110111 0000000010110001100010100 0000000010010100101010001 0000000010101010100011001 0000000000100111111110010 0000000000011001011110111 0000000001001100100100001 0000000011000011011011001 0000000011010000101110101 

版权声明:玥玥 发表于 2021-07-27 0:01:39。
转载请注明:BugKu:0和1的故事(writeup) | 女黑客导航