3

信息嵌入技术【2】

 9 months ago
source link: https://www.guofei.site/2023/08/26/hide_info.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

信息嵌入技术【2】

2023年08月26日    Author:Guofei

文章归类: 0x58_密码学    文章编号: 59003

版权声明:本文作者是郭飞。转载随意,但需要标明原文链接,并通知本人
原文链接:https://www.guofei.site/2023/08/26/hide_info.html

仓库地址:https://github.com/guofei9987/HideInfo

Info Hiding Library
一些原理简洁的信息隐藏方法

算法 说明
幻影坦克 使图片在不同的背景下显示不同的图片
化物为图 把数据以图片形式存放
藏物于图 把数据藏在图片中
图种 把图片和文件黏在一起,并存为图片
EXIF 把一段信息放到图片的EXIF中
藏物于音 把数据隐藏在音频文件中
化物为音 把数据以音频的形式存放
藏物于文 把数据隐藏在文本中
pip install HideInfo

幻影坦克

功能:一个带透明通道的图片,使其在黑色背景下显示图片A,在白色背景下显示图片B

  • 一般情况下,手机/浏览器的预览和点击大图分别使黑色背景和白色背景,因此有”预览是一张图片,点开是另一张图片”的效果
  • 例子:example/example_mirage_tank.py
  • 对于每一个像素,符号表示如下:最终生成的图片像素值为 P,透明通道值为 a
  • 联立方程:
    • 白色背景下显示 A:aP + (1-a)白 = A
    • 黑色背景下显示 B:aP + (1-a)黑 = B
  • 其中 白色 = 255,黑色 = 0,代入方程,解得
    • a = 1 - (A - B)
    • P = B/a
  • 因为 a 个取值范围为 0-1,因此需要 B 图较暗,A 图较亮

彩色图片方案:

  • 对于1个像素点而言,RGB三通道得到 6 个方程,而只有 4 个未知数
  • 方程大概率是无解的
    • 方案1:用运筹学方法使 6 个方程尽可能的近似成立
    • 方案2:作为近似,计算 a 的时候,使用 A 和 B 对应的 grey 值,用得到的 a 计算 P

hide_as_img:化物为图

功能:把文件/文本/bytes 类数据,转换为图片
原理:图片 1 个像素的 1 个通道可以存放 0-255 的数字,也就是一个字节。因此可以用来存放数据。 使用场景: - 信息隐藏、隐蔽传输 - 在只能发送图片的场景下(例如社交软件),发送任意信息

  • RGB 3个通道都用来存放数据
  • 使用前4个字节记录数据的大小,因此要求总的数据量小于 4G

  • 代码:example_hide_as_img.py

hide_in_img:藏物于图

功能:文件/文本/bytes 类数据,藏进一个 PNG 图片中,并且用肉眼无法看出区别 原理:(LSB算法)根据信息的二进制形式,改变像素数据的最低位,肉眼是无法察觉 使用场景: - 信息隐藏、隐蔽传输 - 在只能发送图片的场景下(例如社交软件),发送任意信息 - 盲水印、图片溯源、版权保护

  • 使用 LSB 算法
  • 解原始数据时,无需原图参与,只看最低位
  • 使用前4个字节存放数据的大小
  • 使用位运算,提高一定的性能
  • LSB算法对压缩、转格式等攻击脆弱
  • 例子:example_hide_in_img.py

img_seed:图种

功能:把图片和文件连接起来,以图片的形式存下来(目前还不完善)

img_exif:把信息隐藏在图片的EXIF中

功能:把图片和文件连接起来,以图片的形式存下来(目前还不完善)

hide_in_music: 藏物于音

功能:把一段信息(文件/文本/bytes),藏进一个音乐文件中

hide_as_music:化物为音

功能:把一段信息(文件/文本/bytes),转为声音

  • 用 16 种音表示四进制。每个音持续 0.05 秒,因此每秒对应 10 字节。
  • 例子:hide_as_music.py

hide_in_text:藏物于文

功能:把一段信息(文件/文本/bytes),藏进一段文本中

  • 实测在苹果设备 Macbook、IOS 上,隐藏前后的文本看不出区别。但是 Windows 和某些安卓系统上,会有空格
  • 例子:hide_in_text.py

缩放藏图

效果:一张图片缩放后,变成另一张图片

  • 缩小图片时,如果使用近邻法,缩放过程就是把指定的像素提取,然后组成一个新图片。
  • 如果事先把这些像素找到,并替换成另一个图片,那么就能够得到“缩放前是图片A,缩放后是图片B”的效果了
  • 必须是 PNG,不能是JPG格式
  • 缩放后的大小是确定的,才能显示图片B
  • 缩放算法必须是近邻法
  • 操作系统自带的缩放算法未必和嵌入算法一致,因此最好用代码来统一(这样做这算法好像使用范围很窄了)
  • 可以做多层嵌套,效果是:缩小图片后得到图片B,再次缩小后得到图片C

代码示例:https://github.com/3150601355/SimpleScaleDown

您的支持将鼓励我继续创作!

qr.jpeg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK