Я пытаюсь получить 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 в каждом байте, в любом случае, я не знаю, как я могу это сделать, и я не думаю, что это лучший способ (может быть, это даже не верно).
У меня есть .png
изображение 2944x1912, которое содержит информацию, скрытую в младших разрядах, первый код, который я помещаю, - это сценарий, который я разрабатываю, и пока чтоэто получить информацию о пикселеs красного канала в строке 310 и преобразуйте их в двоичный.
Второй код - это код для получения lsb байта, который мне нужно реализовать в первом коде, поэтому второй код должен как-тосгруппируйте все биты в 8 и выберите последний, который я сохраняю в переменной, в результате (2944/8 = 368 = 368 байт.)