从bmp图像中提取隐藏文本

时间:2015-01-30 10:21:55

标签: python python-3.x

f = open("ship.bmp", 'rb')
data =f.read()[14:]
f.close()
mask=0b00000011

for byte in data:
    new_byte=mask&byte

到目前为止,这是我的代码。我试图从ship.bmp中提取隐藏的文本。我已经创建了一个字节数组,直到知道你可以看到,现在我想从每个字节中提取最后2位,并将两位片段重新组合成隐藏文本的字节并输出它。我通过屏蔽字节来尝试这个,但我想我做错了。如果有人可以帮助我,我将非常感激。我在这里发布了许多问题,对不起,但我真的想完成这个。

1 个答案:

答案 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上测试

我很高兴向您展示代码,但我不会解释它是如何工作的:我不习惯在公共场合解释隐写算法......请不要让我们看到加密功能。