今天做了一道01Game题目,在编程很菜的情况下,我能做出来全靠excel了,感慨一波excel的强大!
题目描述
题目给出了一个名为Oand.txt的文本文件,文本文件的内容是0和1组成的字符串。
题目解析
将文本内容复制到word中统计,发现一共有1369个0或1。因为1369不是7或8的倍数,所以很可能和ASCII编码没关。1369=37*37,而37*37符合二维码的尺寸要求,我们猜测这些0、1字符串可以组成一个正方形的二维码。(二维码生成原理参见链接:https://blog.csdn.net/ajianyingxiaoqinghan/article/details/78837864)
将文本内容复制到记事本中,调节记事本的大小,使得每行有37个数字。然后进行了文本替换(“1”替换为“_”),结果如下图(部分),果然是二维码(0表示黑色的部分,_表示空白的部分)。
但是...怎么把这个二维码画出来呢,上面的二维码是识别不出来的。
我的解决方案是使用强大的excel把二维码画出来,首先需要把所有的0或1单独放在一个单元格内(即一个单元格内只能有一个0或1,单元格的大小是37*37),这里我使用到了excel的“分列”方法,参见链接:https://wenda.so.com/q/1483642840728877。
然后将所有的数字1用“ ”替换,将所有的数字0所在的单元格填充为黑色,这里使用到了excel的“条件格式”功能,参见链接:https://wenda.so.com/q/1363644861061368。
通过以上两步得到了二维码,扫描二维码得到了一个新的0和1组成的字符串(长度为189,189/7=0,所以很有可能是ASCII编码),对新的字符串按照每7个一组进行ASCII编码,得到了flag。
其他方法
网上有人通过记事本调节出来了二维码,参见链接https://www.52pojie.cn/forum.php?mod=viewthread&tid=492725,我没有尝试成功