维基百科: 隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术的英文叫做Steganography,来源于特里特米乌斯的一本讲述密码学与隐写术的著作Steganographia,该书书名源于希腊语,意为「隐秘书写」。
简易的文件隐写
我们可以使用Python的文件读写功能去实现最简单的文件隐写操作:
def concat(file1, file2, output):
with open(output, 'wb') as of:
with open(file1, 'rb') as rf:
of.write(rf.read())
with open(file2, 'rb') as rf:
of.write(rf.read())
if __name__ == "__main__":
import sys
file1 = sys.argv[1]
file2 = sys.argv[2]
output = sys.argv[3]
concat(file1, file2, output)
print(f'{file1} + {file2} -> {output}')
可以将上述代码保存到本地,这里假设保存为文件concat.py
。
下面我们准备一张图片run.jpg
和一个文本文件text.txt
来进行实验:
为了把text.txt
隐藏到run.jpg
中,我们需要对text.txt
进行打包,这里使用ZIP工具进行压缩打包得到text.zip
:
然后我们在命令行中运行如下代码实现隐写操作:
python3 concat.py run.jpg text.zip out.jpg
如图,我们得到了一个名为out.jpg
的图像文件,我们可以正常打开它;但是如果我们将其扩展名修改为.zip
时会发现我们可以将其作为压缩包打开: