原标题:图像隐写技术(Image Steganography)
隐写术是一种将保密信息隐藏在公开信息中的技术,利用图像文件的特性,我们可以把一些想要刻意隐藏的信息或者证明身份、版权的信息隐藏在图像文件中。比如早期流行的将一些下载链接、种子文件隐藏在图片文件中进行传播,再比如某互联网公司内部论坛“月饼事件”中通过员工截图精准定位个人信息的技术,都可以归为图像隐写技术(Image Steganography)。本文主要介绍一些常见的图像隐写技术及 Python 实现方法。
元数据修改
图像是由像素组成的,但图像文件除了保存像素信息之外,还需要存储一些额外的描述信息。以常见的 JPEG 图像为例,文件格式规定了一些特定的字符用以标志特定的元数据起点位,如下图所示:
其中常用于存储拍摄设备信息的 EXIF 标记即存储在 APPn 标记位。以二进制格式读取一张 JPEG 图像,可以看到文件的起始(SOI)、终止(EOI)符号:
withopen( "input.jpg", "rb") asf:
f_bytes = f.read
print( f_bytes[: 2] )
print( f_bytes[ -2:] )
# OUTPUT
"""
b'xffxd8'
b'xffxd9'
"""
通过二进制格式,可以直接在图像文件后面追加信息:
txt = '你好 PyHub!'
# 编码