说下网鼎杯第四场的双色块

双色块

直到刚才我还一直以为标题是双色球。看到萌新在手动搞这个,还搞不出来。

虽然2345一直毁誉参半,不过好压和这个看图还是挺有用的。gif本来就是多帧图像合起来的幻灯片,点击“保存所有帧”可以直接切分成单幅,共576张。

用下面的脚本生成一个列表,当然最后的输入可以优化一下,每24个输出一次。python输出列表有一个优势就是会自动添加逗号,这样就容易写成CSV文件,然后再Excel里使用条件格式将等于1或者等于0的涂黑。显然这并不是条形码。但发现每8个一组的情况下,第一位都是相同的。联想ASCII的二进制编码,如果是可显示字符的话,第一位就是0,那么就是绿色为0,紫色为1。改下输出,用chr(int('0???????',2))转化为字符,看着可能是base64或者DES。前者不对,如果是后者,密码在哪?

binwalk分析之后发现其实是双图拼接,后半段还有一个png,取出来就可以看到密码。

 1 """
 2 python3 code
 3 """
 4 
 5 #!/usr/bin/env python
 6 # -*- coding: utf-8 -*-
 7 # @Author  : B1u3Buf4(https://www.cnblogs.com/xiao3c/)
 8 
 9 
10 from PIL import Image
11 from pathlib import Path 
12 
13 
14 p = Path('.')
15 tmp = [0 for i in range(576)]
16 for i in p.iterdir():
17     if i.name[-3:] != '.py':
18         im = Image.open(i.name)
19         im = im.convert('RGBA')
20         cur = int(i.name[i.name.find('_')+1:i.name.find('.')]) - 1
21         #print(cur)
22         w, h = im.size
23         st = im.load()
24         flag = False
25         for x in range(w):
26             for y in range(h):
27                 if st[x,y][1] > 250 and (st[x,y][0] < 10 and st[x,y][2] < 10):
28                     if flag == False:
29                         flag=True
30                         tmp[cur] = 0
31                         continue
32                 if st[x,y][1] < 10 and (st[x,y][0] > 250 and st[x,y][2] > 250):
33                     if flag == False:
34                         flag=True
35                         tmp[cur] = 1
36                         continue
37 print(tmp)
原文地址:https://www.cnblogs.com/xiao3c/p/9558789.html