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


    双色块

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

    虽然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)
  • 相关阅读:
    Oracle使用正则表达式拆分字段里多行分布式值
    Oracle--创建TRIGGER实现跟踪用户登录信息
    Oracle传输数据到Sqlserver
    Oracle---智斗ORA01427
    区别集合之间的不同
    maven
    集合与数组的区别
    调用系统命令实现删除文件的操作
    JAVA列出某文件夹下的所有文件
    JVM加载类的原理机制
  • 原文地址:https://www.cnblogs.com/xiao3c/p/9558789.html
Copyright © 2020-2023  润新知