f = open("ship.bmp", 'rb')
data =f.read()[14:]
f.close()
mask=0b00000011
for byte in data:
new_byte=mask&byte
到目前为止,这是我的代码。我试图从ship.bmp中提取隐藏的文本。我已经创建了一个字节数组,直到知道你可以看到,现在我想从每个字节中提取最后2位,并将两位片段重新组合成隐藏文本的字节并输出它。我通过屏蔽字节来尝试这个,但我想我做错了。如果有人可以帮助我,我将非常感激。我在这里发布了许多问题,对不起,但我真的想完成这个。
答案 0 :(得分:0)
我假设隐藏位对从高到低编码到图像数据中,即0b11100100
在第1个字节中11
,在第2个字节中10
,{第1个字节中的{1}},第4个字节中的01
。等
00
<强>输出强>
#! /usr/bin/env python
def packbits(t):
return (t[0]<<6) | (t[1]<<4) | (t[2]<<2) | t[3]
def decrypt(data):
bits = [c&3 for c in bytearray(data)]
blocks = zip(*[iter(bits)] * 4)
return str(bytearray([packbits(u) for u in blocks]))
data = 'Qlnd!rameno uf{t!bcwhng `r `!sugebooes`rijc abqd'
print `decrypt(data)`
在Python 2.6.6上测试
我很高兴向您展示代码,但我不会解释它是如何工作的:我不习惯在公共场合解释隐写算法......请不要让我们看到加密功能。