рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ, рдореЗрд░реЗ
рд╕реНрдХреВрд▓ рдореЗрдВ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рдпрд▓рдЯ
рд╣реИрдХрдереЙрди рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╖рдп рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред

рд╕рдмрд╕реЗ рд░рдВрдЧреАрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ TASK-10:
рд╕реНрдЯреЗрдЧреНрдиреЛрдЧреНрд░рд╛рдлрд╝реА рдереА ред
рд╣рдо рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗрддреЗ рд╣реИрдВред
рд╕реНрдЯреЗрдЧреНрдиреЛрдЧреНрд░рд╛рдлрд╝реА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг (рднрдВрдбрд╛рд░рдг) рдХреЗ рдмрд╣реБрдд рддрдереНрдп рдХреА рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрд╡рдпрдВ рдЫрд┐рдкрд╛рддреА рд╣реИ, рддреЛ рд╕реНрдЯреЗрдЧреНрдиреЛрдЧреНрд░рд╛рдлрд╝реА рдЗрд╕рдХреЗ рд╕рдВрдЪрд░рдг рдХреЗ рддрдереНрдп рдХреЛ рдЫрд┐рдкрд╛рддреА рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЯреАрдо рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд╕рдордп рдкрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛, рдФрд░ рдореИрдВрдиреЗ рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдЙрд╕ рд╕рдордп рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рд▓рдЧ рд░рд╣рд╛ рдерд╛:
- рдмрд┐рдЯ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдХрдиреНрд╡рд░реНрдЯред
- рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВред
- рдкрд╛рда рдХреЛ рдЫрд╡рд┐ рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд╛рди рдкрд░ рд░рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдЪрд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред
рдпрд╣рд╛рдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдмрд┐рдЯ рд╕реЗрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдереЛрдбрд╝рд╛ рдХреЛрдб рд╣реИред
def text_to_binary(event): return [int(format(ord(elem),'b')) for elem in event] def binary_to_text(event): return [chr(int(str(elem),2)) for elem in event]
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдореИрдЯрд░рд┐рдпрд▓ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЧрдпрд╛ред
рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╕реАрдзреЗ рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ bmp рдирд╣реАрдВ рд╣реИред
{% - рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдПрдирдХреЛрдбрд░%}
рд░рдВрдЧ рдореЙрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЖрд░рдЬреАрдмреА рдкреИрд▓реЗрдЯ рдореЗрдВ рдЦреБрдж рдкрд┐рдХреНрд╕рд▓ рдХреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЫрд╡рд┐ рдХреЗ рдЕрдкрдШрдЯрди рдХреЛ 1 рдФрд░ 0 рдкрд░ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрди рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд┐рд▓реЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЪреБрдирд╛, рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рд╣реИред
рддреЛ рд╣рдорд╛рд░реА рдПрдХ рдЫрд╡рд┐ рд╣реИред рдЫрд╡рд┐ рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИрдВред рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рд╛рдердорд┐рдХ рд░рдВрдЧреЛрдВ рд╕реЗ рдмрдирддреЗ рд╣реИрдВ - рд▓рд╛рд▓, рд╣рд░реЗ рдФрд░ рдиреАрд▓реЗред
рдкреНрд░рддреНрдпреЗрдХ рд░рдВрдЧ 0 рд╕реЗ 255 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдбреЗрдб рд╣реИред

рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ASCII рд╡рд░реНрдг рднреА рд╣реИрдВ рдЬреЛ рдХрд┐ рдХреВрдЯрдмрджреНрдз рднреА рд╣реИрдВред
рдЖрдЗрдП рдЗрд╕ рдЪрд┐рддреНрд░ рдореЗрдВ рдХреБрдЫ рдкрд╛рда рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдЪрд┐рддреНрд░:
рдереЛрдбрд╝рд╛ рд╕рд╛ рдкрд╛рда:рд╕реА рдЦреБрдж рдХреЛ рдкреИрд░ рдореЗрдВ рдЧреЛрд▓реА рдорд╛рд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ; C ++ рдЗрд╕реЗ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдкреВрд░реЗ рдкреИрд░ рдХреЛ рдЙрдбрд╝рд╛ рджреЗрддрд╛ рд╣реИ
рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
from PIL import Image, ImageDraw from random import randint
рдлрд┐рд░ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдЙрди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВред
def stega_encrypt(): keys = [] img = Image.open(input("path to image: ")) draw = ImageDraw.Draw(img) width = img.size[0] height = img.size[1] pix = img.load() f = open('keys.txt','w')
рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ
рдпрд╣ рд╡рд┐рдзрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА рд╣реИ:
- рдПрдХ рдкрд╛рддреНрд░ рд▓реЗрдВ, рдЗрд╕реЗ ASCII рдирдВрдмрд░ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ
- рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЯрдкрд▓ рдмрдирд╛рдПрдВ
- рд╣рдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рд╣рд░реЗ рдФрд░ рдиреАрд▓реЗ рд░рдВрдЧреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ
- ASCII рд╡рд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд▓рд╛рд▓ рд░рдВрдЧ рдмрджрд▓реЗрдВ
for elem in ([ord(elem) for elem in input("text here: ")]): 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')
рд╣рдо рдЪрд╛рдмрд┐рдпрд╛рдБ рдФрд░ рдЫрд╡рд┐ рдмрдЪрд╛рддреЗ рд╣реИрдВред
print('keys were written to the keys.txt file') img.save("newimage.png", "PNG") f.close()
рдХреЛрдбрд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдПрдХ рд╣реА рдЫрд╡рд┐ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди
рдкреАрдПрдирдЬреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдФрд░ рдХреБрдЫ рдмрджрд▓реЗ рд╣реБрдП рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рдеред

рдЕрдм рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдпрд╣ рд╕рдм рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рд╣рдо рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ!
рд╣рдо рд╣рд░ рдЙрд╕ рдЪреАрдЬ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред
from PIL import Image from re import findall
рд╣рдо рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
def stega_decrypt(): a = [] keys = [] img = Image.open(input("path to image: ")) pix = img.load() f = open(input('path to keys: '),'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("you message: ", stega_decrypt())
рдХреЛрдбрдЕрдм рд╣рдорд╛рд░реЗ рд╕рдВрджреЗрд╢ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдЬреИрд╕рд╛ рдХрд┐ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди: рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЫрд╡рд┐ рдореЗрдВ рдореГрдд рдкрд┐рдХреНрд╕рд▓ рдХреА рджреГрд╢реНрдпрддрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдЪреНрдЪ рд╕рдВрдХрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рджреЛрд╖ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн: