附件:

0000000001110010000000000
0000000000011110100000000
0000000001110001000000000
0000000010111100000000000
0000000010101010000000000
0000000001100010100000000
0000000010101010100000000
0000000001000001100000000
1100011101110110100011000
0001000010110010010010100
0100111101000011101110011
0011110100101011001001001
1000001001100001001101000
1111000111111011100101000
1011011111001101111110111
1000110110010010101101100
1000111100111111111110111
0000000010110001100010100
0000000010010100101010001
0000000010101010100011001
0000000000100111111110010
0000000000011001011110111
0000000001001100100100001
0000000011000011011011001
0000000011010000101110101

题目附件是一个txt,内容是一个25*25的01矩阵。用1表示黑色方块,0表示白色方块,猜测这是一个缺少定位符的二维码。

为了方便操作,先去掉换行符:

with open('1和0的故事.txt', 'r') as f1:with open('1.txt', 'w') as f2:for line in f1.readlines():f2.write(line.strip())

方法一(Excel)

import xlwt# 创建一个xls
book = xlwt.Workbook()
# 创建一个样式 (黑色填充,无边界)
Style = xlwt.easyxf('pattern: pattern solid, fore_colour black; font: height 250')
# 添加一个表单,允许覆盖
table = book.add_sheet('flag_code', cell_overwrite_ok=True)with open('1.txt', 'r') as f:s = f.read()MAX = 25 # 二维码边长,若大于256需要用xlsxwriter模块i = 0
for y in range(0, MAX):for x in range(0, MAX):table.col(x).width = 256*3 # 256为衡量单位,3表示3个字符宽度if(s[i] == '1'): # 如果是1则在Excel上涂黑table.write(y, x, '', style=Style)i += 1book.save('1和0的故事.xls')
# 7*7的二维码定位符
locator = [[1, 1, 1, 1, 1, 1, 1],[1, 0, 0, 0, 0, 0, 1],[1, 0, 1, 1, 1, 0, 1],[1, 0, 1, 1, 1, 0, 1],[1, 0, 1, 1, 1, 0, 1],[1, 0, 0, 0, 0, 0, 1],[1, 1, 1, 1, 1, 1, 1]
]def draw_locator(y, x):for i in range(7):for j in range(7):pos1 = locator[i][j]if pos1 == 1: # 如果是1则在Excel上涂黑table.write(y+i, x+j, '', style=Style)draw_locator(0, 0) # 左上角
draw_locator(0, 18) # 右上角
draw_locator(18, 0) # 左下角book.save('1和0的故事.xls')

方法二(PIL)

from PIL import Imagewith open('1.txt', 'r') as f:s = f.read()MAX = 25 # 二维码边长
pic = Image.new("RGB", (MAX, MAX))i = 0
for y in range(0, MAX):for x in range(0, MAX):if(s[i] == '1'):pic.putpixel([x, y], (0, 0, 0))else:pic.putpixel([x, y], (255, 255, 255))i += 1pic.show()
pic.save("1和0的故事.png")
# 7*7的二维码定位符
locator = [[1, 1, 1, 1, 1, 1, 1],[1, 0, 0, 0, 0, 0, 1],[1, 0, 1, 1, 1, 0, 1],[1, 0, 1, 1, 1, 0, 1],[1, 0, 1, 1, 1, 0, 1],[1, 0, 0, 0, 0, 0, 1],[1, 1, 1, 1, 1, 1, 1]
]def draw_locator(y, x):for i in range(7):for j in range(7):pos1 = locator[i][j]if(pos1 == 1):pic.putpixel([x+i, y+j], (0, 0, 0))else:pic.putpixel([x+i, y+j], (255, 255, 255))draw_locator(0, 0) # 左上角
draw_locator(0, 18) # 右上角
draw_locator(18, 0) # 左下角pic.show()
pic.save("1和0的故事.png")

flag{QR_c0de_1s_1nterest1n9}

BugKu:1和0的故事相关推荐

  1. MISC——bugku 1和0的故事

    1和0的故事 下载文件后发现是txt,打开查看全是0和1 想到非黑即白,于是转二维码,下面提供python转二维码 from PIL import Image MAX = 25 #二维码大小 pic ...

  2. bugku 1和0的故事

    题目: 本题为二进制转二维码 import PIL from PIL import Image MAX = 25 img = Image.new("RGB",(MAX,MAX)) ...

  3. ctf (bugku)(0和1的故事)

    身为小白的我,开始看见题目就头皮发麻,先是看评论,知道这个东西要搞成二维码,但问题来了,小白不会脚本,然后就老实的用excel做吧,再然后发现怎么也不能直接把数字直接粘贴到excel的每一个表格中,再 ...

  4. id3算法c语言实现,从ID3到C5.0的故事:算法详解及实践应用

    原标题:从ID3到C5.0的故事:算法详解及实践应用 在前面,我们分别概述性地介绍了决策树的基本知识: 1.算法概述 ID3(Iterative Dichotomiser3)算法可以说决策树算法中最著 ...

  5. 程序员的数学【结城浩】学习笔记(1-3章)0的故事,逻辑,余数

    一,0的故事     计算机为什么用2值表示?   开关链通和断开的状态     进制的转换: 将数字反复除以2,将每步所得的余数的 列逆序排列,得到二进制的表示 指数法则: 10的0次方,2的0次方 ...

  6. 讲讲“工业4.0”的故事

    先看三个概念: 工业1.0 机械化,以蒸汽机为标志,用蒸汽动力动力驱动机器取代人力,从此手工业从农业分离出来,正式进化为工业. 工业2.0 电气化,以电力的广泛应用为标志,用电力驱动机器取代蒸汽动力, ...

  7. BugkuCTF-MISC题1和0的故事

    基础知识: PIL PIL是Python Imaging Library,它为python解释器提供了图像编辑功能. PIL.Image.new()方法通过给定的模式和大小创建一个新图像.尺寸以(wi ...

  8. Web3.0这个故事,要从《大教堂与市集》讲起

    <The Cathedral and the Bazaar>(大教堂与市集)被誉为开源运动的「圣杯」,是作者 Eric Steven Raymond 所撰写的软件工程方法论,以 Linux ...

  9. .NET微服务迁移至.NET6.0的故事

    目录 为什么是.NET 历史原因 生产力和性能 法律风险 迁移过程 代码迁移 发布计划 迁移结果 关于性能的提升 更完善的观测指标 性能提升来自哪里? .NET Freamwork 到 .NET Co ...

最新文章

  1. (28)SpringBoot启动时的Banner设置【从零开始学Spring Boot】
  2. 2020中级财管(押题班)
  3. STL库容器vector at函数
  4. 使用 Wireshark 对本地 socket 通信进行数据抓包
  5. 数字ab写成c语言表达式,《C语言程序设计》复习题(21页)-原创力文档
  6. Apple发布watchOS 5 Beta 9
  7. python并行计算进程池通信_Python使用进程池管理进程和进程间通信
  8. PHP去除顽固空格和编码问题
  9. java经典编程练习题_java笔试经典练习题及答案
  10. 向量误差修正(VECM)模型案例分析
  11. linux终端怎么设置monaco,[Linux]Vim设置Monaco字体Vim颜色模板
  12. 【线性分类器】(一)线性判别
  13. Redis高级之——redis-trib.rb命令详解
  14. 福大软工 · 真 · 最终作业
  15. 传智杯第四届初赛 B小卡与质数2
  16. excel表格打印每页都有表头_excel单页表格打印带连续页码的多页
  17. 又一家美业SaaS+系统宣布停止服务,美业人你怎么看?
  18. 自学Linux 2—Linux 的系统架构之 Linux 内核的主要模块和 Linux 的文件结构
  19. springboot整合jsp模板
  20. JavaSE面向对象

热门文章

  1. Qt 图片压缩 指定文件大小和尺寸
  2. Pod状态:Evicted Message提示:The node was low on resource: ephemeral-storage
  3. js for循环执行顺序
  4. 临界区,互斥,竞争条件
  5. 2. LaTeX 数学公式与希腊字母
  6. Python语言整理
  7. 服务注册中心Eureka
  8. 亲爱的你是我今生等待的人
  9. 新版微信订阅号和服务号的区别
  10. [微语 20.11.12] 挣脱