Стеганография на Python



Download 294,4 Kb.
Sana28.06.2022
Hajmi294,4 Kb.
#714596
TuriРешение
Bog'liq
Стеганография на Python



Стеганография на Python

Стеганография — это способ передачи или хранения информации с учётом сохранения в тайне самого факта такой передачи (хранения).
Иными словами, если криптография скрывает саму информацию, то стеганография скрывает факт ее передачи.

К сожалению, мы с командой не успели сделать это задание вовремя, и я решил выполнить его уже после мероприятия.

Самым очевидным решением на тот момент казалось:


  1. Перевести шифруемый текст в наборы битов.

  2. Сделать тоже самое с изображением.

  3. Поместить текст в случайное место изображения и сохранить как картинку.



Давайте попробуем зашифровать в эту картинку немного текста.

Картинка:





Немного текста:

Biz jamoamiz bilan 2005-yilda olamshumul voqea guvohi bo’lgandik. Bu sirni hech kimga aytganimiz yo’q




Подключим необходимые библиотеки.

from PIL import Image, ImageDraw
from random import randint

Затем объявим функцию и поместим в ней все объекты, которые нам пригодятся.

def stega_encrypt():
keys = []
img = Image.open(input("rasm nomini kiriting: "))
draw = ImageDraw.Draw(img)
width = img.size[0]
height = img.size[1]
pix = img.load()
f = open('kalit.txt','w')

Дальше — интереснее. Самая главная задача — придумать способ, по средством которого станет возможным шифровать сообщения. Мною был предложен такой способ:


  1. Берем символ, переводим его в число ASCII

  2. Создаём кортеж со случайными значениями координат

  3. Собираем зелёный и синий оттенки из пикселя по координатам

  4. Заменяем красный оттенок на номер символа по ASCII


for elem in ([ord(elem) for elem in input("matnni yozing : ")]):
key = (randint(1,width-10),randint(1,height-10))
g, b = pix[key][1:3]
draw.point(key, (elem,g , b))
f.write(str(key)+'\n')

Cохраняем ключи и изображение.

print('kalitlar bu yerda kalit.txt fayliga joylandi')


img.save("yangirasm.png", "PNG")
f.close()


Пробуем выполнить скрипт.

В результате мы получили тоже самое изображение, но в формате png и с несколькими изменёнными пикселями.



Теперь осталось всё это как-то расшифровать.

Пишем скрипт для расшифровки!

Подключаем всё, что нужно.

from PIL import Image
from re import findall

Объявляем функцию для расшифровки, а также несколько объектов.

def stega_decrypt():
a = []
keys = []
img = Image.open(input("rasm nomini kiriting: "))
pix = img.load()
f = open(input('kalit nomini kiriting : '),'r')
y = str([line.strip() for line in f])

Основной алгоритм расшифровки:

for i in range(len(findall(r'\((\d+)\,',y))):
keys.append((int(findall(r'\((\d+)\,',y)[i]),int(findall(r'\,\s(\d+)\)',y)[i])))
for key in keys:
a.append(pix[tuple(key)][0])
return ''.join([chr(elem) for elem in a])

Указанные регулярные выражения нужны для считывания кортежей из текстового файла.

Последнее действие — вывод на экран зашифрованного сообщения.

print("Sizning xabaringiz: ", stega_decrypt())




А теперь попробуем получить наше сообщение.



Что и требовалось доказать, всё работает!

Главный недостаток: видимость битых пикселей изображения в случае шифрования большого количества символов. Однако, этот недостаток отлично исправляется высоким разрешением.
Download 294,4 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish