excelpic-excel提取颜色rgb值-rgb画图
题目描述:
提供一个excelpic.zip文件包,hint:LSB低位隐写
1、解压后是xml文件,遇到这种情况可直接将压缩包的后缀改为xlsx,得到一个excel文件
2、看出每格是一个颜色考虑提取表格的rgb值并画图
# -*- coding: utf-8 -*-
# 提取excel中表格的rgb值
import openpyxl
wb = openpyxl.load_workbook('E:/资料/杂项汇总/练习题/隐写/excelpic.xlsx')
sheet = wb.active
ss=''
arr = []
for i in range(1,121):
for j in range(1,86):
#print(i,j)
ss += sheet.cell(i, j).font.color.rgb[2:9]
#print(ss) # 获取 表格内字体颜色
def bytesToHexString(data):
temp = []
for i in data:
v = '0x%02X' % i
temp.append(int(v, 16))
return temp
arr= bytesToHexString(bytes.fromhex(ss))
print(arr)
#根据RGB画图
from PIL import Image
pic = Image.new("RGB",(85, 120))
i=0
for x in range (0,120):
for y in range (0,85):
pic.putpixel([y,x],(arr[i], arr[i+1], arr[i+2]))
i=i+3
pic.show()
pic.save("E:/资料/杂项汇总/练习题/隐写/flag2.png")
脚本2
# 从excel中读取单元格的颜色rgb值
# coding=utf-8
import openpyxl
from PIL import Image
filedir = 'E:/资料/杂项汇总/练习题/隐写/excelpic.xlsx'
wb = openpyxl.load_workbook(filedir)
worksheet = wb.active
rows,cols=worksheet.max_row,worksheet.max_column
im = Image.new("RGB", (cols, rows)) #创建图片
for i in range(1,rows + 1):
for j in range(1,cols + 1):
# print(j)
ce=worksheet.cell(row=i,column=j)
fill = ce.fill
rgb = fill.start_color.rgb # fill.fgColor.rgb 功能相同
x = int('0x'+rgb[2:4], 16)
y = int('0x'+rgb[4:6], 16)
z = int('0x'+rgb[6:9], 16)
if(x > 255 or y > 255 or z > 255):
print(i, j, x, y, z)
im.putpixel((j - 1, i - 1), (x, y, z)) # 将rgb转化为像素
im.show()
im.save("E:/资料/杂项汇总/练习题/隐写/flag2.png") #保存为jpg图片
3、最后LSB低位隐写即可查到隐藏信息,需要注意有时候是三个通道都要选中,本题是仅选一个通道