excelpic-excel提取颜色rgb值-rgb画图

题目描述:
提供一个excelpic.zip文件包,hint:LSB低位隐写
1、解压后是xml文件,遇到这种情况可直接将压缩包的后缀改为xlsx,得到一个excel文件
image.png
2、看出每格是一个颜色考虑提取表格的rgb值并画图

  1. # -*- coding: utf-8 -*-
  2. # 提取excel中表格的rgb值
  3. import openpyxl
  4. wb = openpyxl.load_workbook('E:/资料/杂项汇总/练习题/隐写/excelpic.xlsx')
  5. sheet = wb.active
  6. ss=''
  7. arr = []
  8. for i in range(1,121):
  9. for j in range(1,86):
  10. #print(i,j)
  11. ss += sheet.cell(i, j).font.color.rgb[2:9]
  12. #print(ss) # 获取 表格内字体颜色
  13. def bytesToHexString(data):
  14. temp = []
  15. for i in data:
  16. v = '0x%02X' % i
  17. temp.append(int(v, 16))
  18. return temp
  19. arr= bytesToHexString(bytes.fromhex(ss))
  20. print(arr)
  21. #根据RGB画图
  22. from PIL import Image
  23. pic = Image.new("RGB",(85, 120))
  24. i=0
  25. for x in range (0,120):
  26. for y in range (0,85):
  27. pic.putpixel([y,x],(arr[i], arr[i+1], arr[i+2]))
  28. i=i+3
  29. pic.show()
  30. 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低位隐写即可查到隐藏信息,需要注意有时候是三个通道都要选中,本题是仅选一个通道
image.png