StegoPy-Python中的LSB隐写工具

前言


最近,我注意到我论坛上的人们对图像,mp3文件和视频中的各种文字的隐写术感兴趣。然后我想到了编写自己的脚本来对图像中的文字进行隐写术的想法。我不得不说,在此之前,我从未遇到过为隐写术编写类似工具的经历。

在熟悉LSB隐写术之前,我考虑过其他方法,或者更确切地说,提出了自己的方法。但是我没有能力提出自己的建议,因此我决定使用Google搜索:

LSB是一种隐写方法,其中将像素中RGB颜色之一的低位更改为编码文本的位。

然后我结识了Pillow库,以处理图像和密码学。在我的情况下,第二个步骤需要创建DES加密,然后将其比特编码到映像中。

编码


我将自己的想法发布在GitHub上,因此,要与StegoPy进行进一步合作,我们只需要使用GitHub克隆项目即可:

> git clone https://github.com/eBind/StegoPy
> cd StegoPy
> pip3 install -r requirements.txt
> python3 stegopy.py

安装

但是,安装方面一切正常。现在,让我们看一下启动命令的语法。

> python3 stegopy.py -e in.jpg data.txt

使用此命令,我们会将data.txt文件中的文本编码in.jpg图像
但在编码之前,将要求我们提供一个介于1到4之间的平衡值,这只是程序中最有趣的事情之一。

档案in.jpg


文件data.txt
this is private message

余额是隐写术中涉及的低位位数。取值范围是1到4。

因此,余额越大,则:

  1. 更少的像素将参与编码
  2. 颜色通道的明显变化

由此可以得出结论,天平越小,隐写术的可靠性就越高,人眼将看不见它。

另一个重要因素是,只有蓝色通道发生变化,其阴影在我们眼中最不明显。

确定平衡之后,我们的脚本将创建两个其他文件:

  • out.png-带有编码文本的图像
  • key.dat-具有解密所需密钥的文件

档案out.png


Key.dat文件
1$960$gxvZH4Q8Gq2qLGeA1aSCXIPRljJlJbihsvSBdzx-wSM=

编码

解码


在本例中,该命令的语法为:

> python3 ./stegopy.py -d out.png

然后,系统将询问我们在编码时收到的密钥。解码后,解密后的文本将保存在out.txt文件中,

解码

您可能已经注意到,输入图像为JPEG格式,输出为PNG。这是程序中的一个缺陷,很快就会得到解决,您将有机会选择输出格式。

在输入图像上仅测试了JPEG和PNG,从理论上讲,它应可用于较少使用的图像,例如bmp等。

顺便说一句,pylint将StegoPy评为10/10。当我计划开发该应用程序时,欢迎对代码和功能发表评论。

该项目在GitHub上可用

All Articles