Steganography,位操作实现图片隐藏
程序员文章站
2022-07-03 15:54:36
...
通过图片最后两位的提取和数学计算得到隐藏在其中的另一张图片
首先先将一张图的uint8数值变化到三以内,然后替换掉另一张图的最后两位,实现隐藏
from PIL import Image
import numpy as np
ori = np.asarray(Image.open('Steganography_original.png'))
ori=ori>>2
ori=ori<<2
print("ori:")
print(ori)
to_add = np.asarray(Image.open('Steganography_recovered.png').convert('RGB'))
print("to add:")
print(to_add)
to_add=to_add/85
print("to add /85:")
print(to_add)
result=np.bitwise_or(ori.astype(int), to_add.astype(int))
print("result:")
print(result)
im = Image.fromarray(np.uint8(result))
im.show()
im.save('Steganography_added.png')
逆操作就可以找到里面的猫from PIL import Image
import numpy as np
I=Image.open('Steganography_added.png')
stego = np.asarray(I)
extracted = stego & 0b00000011
extracted *= int(255 / 3)
print("what we get:")
print(extracted)
im = Image.fromarray(np.uint8(extracted))
im.show()
im.save('Steganography_get.png')
图片使用了经典猫和树
上一篇: ThreadLocal 的实现原理
下一篇: 冒个泡,排个序