网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

开发工具团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 工具 > 开发工具 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

Steganographer:隐写工具,基于Python编程语言开发,可帮助隐藏图片中的文件或数据

文章来源:重庆软件开发 发布时间:2020-08-11 13:26:19 围观次数:
分享到:

摘要:Steganographer是一个功能强大的隐写工具,它是基于Python编程语言开发的,可以帮助研究人员实现图片中数据或文件的隐写。

  Steganographer是一个功能强大的隐写工具,它是基于Python编程语言开发的,可以帮助研究人员实现图片中数据或文件的隐写。这个Python模块可以隐藏图片中的文件(当前版本仅支持PNG文件),并将包含隐写数据的文件导出到磁盘以进行存储。可隐写的最大文件,大小取决于图像的大小。 计算方法如下:

  max_file_size = ( height_of_image * width_of_image * 6 / 8 ) bytes

  例如,我们计划在名为“ original_image.png”的图像文件中隐藏文件“ 100k words.txt”,然后将修改后的图像导出为“ image_with_100k words.png”。导出完成后,可以查看修改前后两个图片之间的区别。当然,也可以使用Steganographer从“ image_with_100k words.png”中提取隐藏的“ 100k words.txt”文件。


工具下载与使用


  研究人员可以使用以下命令将项目的源代码克隆到本地:

  git clone https://github.com/priyansh-anand/steganographer.git

  下载完成后,我们将在项目目录中看到一些测试文件,图片和数据。我们可以直接在项目中调用Steganographer.py文件来使用Steganographer。


工具效果显示


  原始图片:

blob.png

 修改图片:

blob.png

  是的,我们的文件已成功隐藏在此图片中,您能看到区别吗?


工作机制


  该工具的实现原理非常简单。如果我们更改每个像素的LSB(最低有效位算法),则此修改更改不会在图片中产生很大差异,并且人眼无法检测到它。

  因此,Steganographer将从要隐藏的文件中提取2位数据,用这些2位数据替换像素的最后2位数据,然后继续操作下一个像素。像素的最大变化单位可以是4个单位,并且PNG图像中的值变化范围是(0,255),因此此变化在图片中并不重要。

  在PNG图像中,每个像素都有3个通道,即红色,绿色和蓝色。(某些PNG图像具有1或4通道,但是此程序会将它们转换为3通道)PNG图像中的典型像素结构如下:

  a_pixel = (17,32,11)     # (RED, GREEN, BLUE)

  因此,我们可以在一个像素中存储三个2位数据,即每个像素存储6位数据。这样,我们可以计算图像中可以隐藏的最大文件大小:

  max_file_size =(图像的高度*图像的宽度* 6/8)字节

  为了使每个人都更容易理解,我们举个例子。 例如,我们需要隐藏的数据如下:

  max_file_size = ( height_of_image * width_of_image * 6 / 8 ) bytes

  然后,我们获取数据的前两位并将其替换为图片像素“ a_pixel”的红色通道:

  a_pixel = (0b10001, 0b100000, 0b1011)   # binary representation of a_pixel values

  # Let's change a_pixel's RED Channel

  # 0b10001 -> 0b10010  ( First 2 bits are 10 )

  a_pixel = (0b10010, 0b100000, 0b1011)  # modified pixel

  接下来,从binary_data中提取两位数据,并将其替换为图片像素“ a_pixel”的绿色通道:

  a_pixel = (0b10010, 0b100000, 0b1011)

  # Let's change a_pixel's GREEN Channel

  # 0b100000 -> 0b100001  ( The 2 bits are 01 )

  a_pixel = (0b10010, 0b100001, 0b1011)  # modified pixel

  然后使用蓝色通道执行数据替换操作:

 a_pixel = (0b10010, 0b100001, 0b1011)

 # Let's change a_pixel's BLUE Channel

 # 0b1011 -> 0b1011  ( The 2 bits are 11 ) ; Notice that the value wasn't changed this time

 a_pixel = (0b10010, 0b100001, 0b1011)  # pixel wasn't modified this time

  这样,我们已经成功地在一个像素中隐藏了六位数据。 让我们看一下像素内的数据变化:

  a_pixel             = (0b10001, 0b100000, 0b1011) = (17, 32, 11)

  a_pixel_with_data   = (0b10010, 0b100001, 0b1011) = (18, 33, 11)


预防措施


  数据隐写操作完成后,导出图像的噪点会大大增加。 如果我们使用任何照片编辑软件并将其与原始图像进行比较,则会发现导出图像的噪点会比原始图像大得多。解决该问题的方法是永远不要将原始图像上传/共享到Internet!


本文由 重庆软件开发 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:Steganographer 隐写工具 Python 隐藏数据

上一篇:EvilDLL:用于DLL劫持的恶意DLL(反向Shell)生成器
下一篇:最后一页

热门资讯

鼠标向下滚动