【CTF】用python PIL将RGB值转化为图片
来源:互联网 发布:男朋友只有11厘米知乎 编辑:程序博客网 时间:2024/05/21 14:05
1. 题目介绍
题目的名称叫:神奇的二维码
flag格式为:flag{}
给出了一个flag.txt文件
链接:http://pan.baidu.com/s/1kUBHZBD 密码:zzxo
2. 思路分析
打开后发现是(255, 255, 255)和(0, 0, 0),这不是R.G.B嘛,(255, 255, 255)代表白色,(0, 0, 0)代表黑色。结合题目是二维码,想考差的就很明显了,那就是将这些RGB转换成像素输出成图片。
python里有个PIL库就是处理图片信息的,python3中已经换成了Pillow
flag.txt一共有78400行(最后一行是空行不计算在内),78400分解成2×2×2×2×2×2×5×5×7×7,组合了半天想起来二维码一般都是正方形的,正好78400是280的平方。
这里放出将RGB转换为像素的代码,本人菜狗子一个,如果有错误或者不足之处还望大佬们指出。
from PIL import Imagex = 280 #x坐标 通过对txt里的行数进行整数分解y = 280 #y坐标 x * y = 行数im = Image.new("RGB", (x, y)) #创建图片file = open('flag.txt') #打开rbg值的文件#通过每个rgb点生成图片for i in range(0, x): for j in range(0, y): line = file.readline() #获取一行的rgb值 rgb = line.split(", ") #分离rgb,文本中逗号后面有空格 im.putpixel((i, j), (int(rgb[0]), int(rgb[1]), int(rgb[2]))) #将rgb转化为像素im.show() #也可用im.save('flag.jpg')保存下来
这里需要注意的是文本中rbg值是用()括起来的,所以还要想办法把()解决掉才能运行。
运行后得到图片
扫码后得到一串字符:ONYXE6LSIVXF6ZTUOZTXWRRRIRPWCZLWORIGCLJQG56Q====
base32解码后得到
发现位置是混乱的,想到了凯撒加密,但是凯撒解密出来都不对,想起来格式是flag,那么位置也被移位了,所以先用栅栏密码解码
发现第1栏前面是4位,这时我们再拿去做凯撒解密
3. 相关文档
Pillow库介绍:
原文档:http://pillow.readthedocs.io/en/latest/
翻译文档:http://www.cnblogs.com/apexchu/p/4231041.html
关于base64 32 16介绍:
http://xiaoqin00.blog.51cto.com/10468367/1718416
栅栏密码介绍:
百度百科:https://baike.baidu.com/item/%E6%A0%85%E6%A0%8F%E5%AF%86%E7%A0%81/228209?fr=aladdin
凯撒密码介绍:
百度百科:https://baike.baidu.com/item/%E6%81%BA%E6%92%92%E5%AF%86%E7%A0%81?fromtitle=%E5%87%AF%E6%92%92%E5%AF%86%E7%A0%81&fromid=1336345
- 【CTF】用python PIL将RGB值转化为图片
- python使用opencv将灰度图人脸图片转化为RGB
- 用 python 将图片转化为字符串
- js 将color值rgb转化为16进制
- img rgb图片转化为灰度图片
- python中利用PIL(Python Image Library) 将矩阵转换为图片
- Python 利用PIL将图片转为字符
- 利用Python PIL、cPickle将图片读取和保存为pkl格式文件
- 将普通图片转化为字符画(Python)
- 使用Python将MNIST数据集转化为图片
- 将非RGB图片转换为RGB图片
- 将PDF转化为图片
- 将图片转化为字符串
- 将颜色转化为图片
- 将图片转化为PDF
- 将Markdown转化为图片
- 将canvas转化为图片
- 将rgb值还原成图片(python)
- 1.1程序设计的基本元素
- Reactor模式详解
- 11.1-五个Qs
- Winedit 10的使用方法,网上修改注册表的已经不管用了。
- 击中与击不中变换
- 【CTF】用python PIL将RGB值转化为图片
- 重定位和链接
- 欢迎使用CSDN-markdown编辑器
- 安卓接口回调
- mac系统中mysql登录报错:Access denied for user 'root'@'localhost' (using password: NO)
- Postman的使用介绍
- shell 函数 入参说明
- 常用SQL的优化
- hihocoder #1620 : 股票价格3