excelpic-excel提取颜色rgb值-rgb画图
题目描述:
提供一个excelpic.zip文件包,hint:LSB低位隐写
1、解压后是xml文件,遇到这种情况可直接将压缩包的后缀改为xlsx,得到一个excel文件
2、看出每格是一个颜色考虑提取表格的rgb值并画图
# -*- coding: utf-8 -*-# 提取excel中表格的rgb值import openpyxlwb = openpyxl.load_workbook('E:/资料/杂项汇总/练习题/隐写/excelpic.xlsx')sheet = wb.activess=''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' % itemp.append(int(v, 16))return temparr= bytesToHexString(bytes.fromhex(ss))print(arr)#根据RGB画图from PIL import Imagepic = Image.new("RGB",(85, 120))i=0for 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+3pic.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低位隐写即可查到隐藏信息,需要注意有时候是三个通道都要选中,本题是仅选一个通道
