题目分析

题目是由1369个01组成的01串<
正确思路:
0和1的数量很关键,首先统计0和1的数量:
1369.0/7 = 195.57142857142858
1369.0/8 = 171.125
1369.0 ** 0.5 = 37.0
1369不是7和8的倍数,说明很可能和ASCII没关系。1369 是 37 的平方,说明可以由0和1正好组成一个正方形(二维码,QR code)。
可以使用Python、MATLAB 等编程生成图片。扫描得到 另一个01字符串。
统计字符串长度,可以当作 ASCII 编程解出 flag

解题过程

先说一下错误的解题过程吧

简单明了的说,是应为对二维码的生成的错误理解,还有对题目的曲解

  • 首先下载下来txt文件之后,看到python生成二维码,立刻想到python里面的qrcode二维码生成库。
  • import qrcode qr = qrcode.QRCode( version=7, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4, ) path="C:\\Users\\hp\\Desktop\\aa.png" files = open("C:\\Users\\hp\\Desktop\\0and1.txt","r") data = files.readline() print(data); qr.add_data(data) qr.make(fit=True) img = qr.make_image() img.show()
  • 二维码生成是获取里面的内容,怎么想也没想明白,怎么没有的到想要的结果,01的输出也不是按照37*37的过程输出的。
  • 睡觉…

正确解法

  • 今天早晨醒来,重新梳理了一下思路,既然01能组成正方形了,换了一个想法,就是把这个01换成二维码的形式,然后又百度了二维码的内在含义。
  • 二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息
    i=0; for c in data: i=i+1 if c=='0': print('██',end="") else: print(' ',end="") if i % 37 == 0: print()

这儿刚开始二维码比较大,只能不断的缩小字体大小才先显示出来哦~~终于扫出来了一个新的01字符串Another 01Game

  • 根据题目提示,然后使用ASCII码进行解题,得到flag.
data = '110011011011001100001110011111110111111001011000010101011011111100101110011101001111101011110111111100001110001001100001110101111010010111111110001101001010000110110000110010001100111111101'
i=0;
s='0'
for c in data:
    s=s+''+c;
    i=i+1
    if i % 7 == 0:
        a = int(s,2)
        print(chr(a),end="")
        s='0'

相关文章:

  • 2021-12-11
  • 2021-05-16
  • 2022-12-23
  • 2022-12-23
  • 2021-06-07
  • 2021-07-11
  • 2021-12-04
  • 2021-12-20
猜你喜欢
  • 2021-08-17
  • 2022-12-23
  • 2022-12-23
  • 2021-08-16
  • 2021-05-19
  • 2022-12-23
  • 2021-07-28
相关资源
相似解决方案