我试着从图像的线条中得到lsb,我设法做到了:
from PIL import Image
import sys
challengeImg = Image.open('image.png')
pixels = challengeImg.load()
for x in range(2944):
red = (pixels[x,310][0])
bred = format(red,"b")
#print(green)
#print(bred)
green = (pixels[x,310][1])
bgreen = format(green,"b")
#print(bgreen)
#print(green)
好吧,在那之前我很好,但现在我的问题是,我成功地创建了以下代码:
num = 10100001
n = 0
lsb = num >> n &1
print(lsb)
它工作,但只有一个字节,我想,与for我可以实现一些东西,但我是非常初学者,我还没有设法使它工作,我怎么做,以提取lsb的每一个字节的像素行的红色通道(或绿色,我猜这是相同的程序)?
我突然想到,我可以使用字典来分组字节位(1:10011001,2:01100110…),然后使用循环在每个字节中应用lsb代码,无论如何,我不知道我怎么能做到这一点,我不认为这是最好的方法(也许它甚至是无效的)。你知道吗
我有一个2944x1912的.png
图像,其中包含隐藏在最低有效位中的信息,我输入的第一个代码是我正在开发的脚本,到目前为止,它所做的是获取第310行中红色通道像素的信息,并将其转换为二进制。你知道吗
第二个代码是获取我需要在第一个代码中实现的一个字节的lsb的代码,因此第二个代码应该以某种方式将所有位组合在8中,并选择最后一个位,以便我保存在一个变量中,从而得到(2944/8=368=368字节)
我想到的解决方案可能不是最理想的。如果还不够,我会寻找更好的解决方案,但同时:
它工作,这就是代码
谢谢!你知道吗
相关问题 更多 >
编程相关推荐