前言
最近,我注意到我论坛上的人们对图像,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之间的平衡值,这只是程序中最有趣的事情之一。文件data.txtthis is private message
余额是隐写术中涉及的低位位数。取值范围是1到4。因此,余额越大,则:- 更少的像素将参与编码
- 颜色通道的明显变化
由此可以得出结论,天平越小,隐写术的可靠性就越高,人眼将看不见它。另一个重要因素是,只有蓝色通道发生变化,其阴影在我们眼中最不明显。确定平衡之后,我们的脚本将创建两个其他文件:- out.png-带有编码文本的图像
- key.dat-具有解密所需密钥的文件
Key.dat文件1$960$gxvZH4Q8Gq2qLGeA1aSCXIPRljJlJbihsvSBdzx-wSM=

解码
在本例中,该命令的语法为:> python3 ./stegopy.py -d out.png
然后,系统将询问我们在编码时收到的密钥。解码后,解密后的文本将保存在out.txt文件中,
您可能已经注意到,输入图像为JPEG格式,输出为PNG。这是程序中的一个缺陷,很快就会得到解决,您将有机会选择输出格式。在输入图像上仅测试了JPEG和PNG,从理论上讲,它应可用于较少使用的图像,例如bmp等。顺便说一句,pylint将StegoPy评为10/10。当我计划开发该应用程序时,欢迎对代码和功能发表评论。→ 该项目在GitHub上可用