Misc
两极反转
题目所给的二维码是一个29x29的二维码,与正常的二维码比较发现,题目所给的二维码定位符有问题,再结合题目描述中的
两极反转,黑白不分 奇变偶不变,横变竖不变
可以推出从第9行开始,奇数行所有黑白反转,偶数行不变,直到倒数第九行
先写脚本将01数据拿出来写脚本
from PIL import Image
# 读取二维码图像
image = Image.open('qr.png')
# 将图像调整为 29x29 尺寸
image = image.resize((29, 29))
# 将图像转换为黑白模式(二值化)
bw_image = image.convert('1')
# 获取图像的像素数据
pixels = list(bw_image.getdata())
# 将黑色方块转换为 1,白色方块转换为 0,并一行一行输出
for i in range(29):
print(''.join(['1' if pixels[i*29+j] == 0 else '0' for j in range(29)]))
得到
11111110111100001010001111111
10000010001101000110001000001
10111010001110111001001011101
10111010111010000010101011101
10111010000011010011101011101
10000010000000011101001000001
11111110101010101010101111111
00000000001001011110000000000
11010001001110110101001110110
01101101011010011011001101011
11100000100100100111110111000
00011100100111001001111101011
11011001100011001110110000100
01000100101011101000101000100
00110100010111000001110011000
11001100111110010011100110001
10000000011001001011110011101
00011001111101100000101001011
01100100111000000001110101000
01010000110001001101001001011
01001001010111111100000000100
00000000110111100001100011000
11111110010110011001101011111
10000010101000110010100010000
10111010101100110000111110011
10111010000111011101100011000
10111010110100000001111111101
10000010001100101000100011010
11111110000111110111110111011
从第九行开始翻转
def swap_zeros_and_ones(binary_str):
result = ''
for bit in binary_str:
if bit == '0':
result += '1'
else:
result += '0'
return result
data = [
"11010001001110110101001110110",
"01101101011010011011001101011",
"11100000100100100111110111000",
"00011100100111001001111101011",
"11011001100011001110110000100",
"01000100101011101000101000100",
"00110100010111000001110011000",
"11001100111110010011100110001",
"10000000011001001011110011101",
"00011001111101100000101001011",
"01100100111000000001110101000",
"01010000110001001101001001011",
"01001001010111111100000000100"
]
# 对每行进行处理
for index, line in enumerate(data):
if index % 2 == 0: # 奇数行
print(swap_zeros_and_ones(line))
else: # 偶数行
print(line)
翻转后得到
00101110110001001010110001001
01101101011010011011001101011
00011111011011011000001000111
00011100100111001001111101011
00100110011100110001001111011
01000100101011101000101000100
11001011101000111110001100111
11001100111110010011100110001
01111111100110110100001100010
00011001111101100000101001011
10011011000111111110001010111
01010000110001001101001001011
10110110101000000011111111011
最终的二维码数据是
11111110111100001010001111111
10000010001101000110001000001
10111010001110111001001011101
10111010111010000010101011101
10111010000011010011101011101
10000010000000011101001000001
11111110101010101010101111111
00000000001001011110000000000
00101110110001001010110001001
01101101011010011011001101011
00011111011011011000001000111
00011100100111001001111101011
00100110011100110001001111011
01000100101011101000101000100
11001011101000111110001100111
11001100111110010011100110001
01111111100110110100001100010
00011001111101100000101001011
10011011000111111110001010111
01010000110001001101001001011
10110110101000000011111111011
00000000110111100001100011000
11111110010110011001101011111
10000010101000110010100010000
10111010101100110000111110011
10111010000111011101100011000
10111010110100000001111111101
10000010001100101000100011010
11111110000111110111110111011
转换为二维码可得到:https://bahamas10.github.io/binary-to-qrcode/
扫码得到flag:https://cli.im/deqr/other
Flag:flag{R3Ver5e_P014r17y}
真假补丁
根据上传的%E8%A1%A5%E4%B8%81.exe运行可以得到两个exe文件分别是补丁检测.exe和补丁修复.exe,其中有很多重要的信息可以推出是aes加密
再加上tcp追踪到的第二个流可以得到加密数据
先追踪tcp第一个流,可以发现上传了一个exe
导出对象中找到上传的%E8%A1%A5%E4%B8%81.exe
这是一个自解压的程序,点击运行之后会得到两个exe
查壳会发现修复的exe是一个python3.8的库,检测的exe也是一个python3.8的库
不知道怎么查看这两个exe,运行不了,就直接010editor搜索了,在修复.exe末尾发现aes加密