Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Организация входных и выходных данныхСодержание книги Поиск на нашем сайте Входными данными разрабатываемого приложения будут текстовый файл и контейнер-изображение. Текстовые входные данные подвергаются сокрытию в контейнере-изображении. Контейнер-изображение подается на вход функции извлечения текста. Выходными данными при сокрытии будет создаваемый приложением контейнер-изображение формата BMP с сокрытым текстом. Выходными данными при извлечении будет текстовый создаваемой корневой папке приложения и текст данного файла, выведенный пользователю в окне приложения.
Выбор состава технических и программных средств Для написания разрабатываемого приложения был выбран язык программирования Python. Средой для разработки была выбрана среда для разработки ПО на языке Python - PyCharm Community Edition 2021.1.1. Для написания кода алгоритма были подключены следующие библиотеки: 1. Tkinter. Данный пакет включает в себя основные модули для работы с графическими интерфейсами на языке Python. Из Tkinter импортируются следующие компоненты: 1.1. Frame - вспомогательный виджет, создание которого происходит при помощи класса Frame(). 1.2. Tk - содержит компоненты графического пользовательского интерфейса. 1.3. Filedialog – диалоговые окна для открытия и выбора файлов для сохранения или записи. 1.4. Messagebox – стандартные диалоговые окна сообщений. 2. Модуль os предоставляет способы использования функциональных возможностей, зависящих от операционной системы. 3. Модуль sys обеспечивает доступ к некоторым переменным, используемым или поддерживаемым интерпретатором и к функциям, которые тесно связаны с интерпретатором.
РАЗРАБОТКА ПРИЛОЖЕНИЯ СОКРЫТИЯ ТЕКСТОВОЙ ИНФОРМАЦИИ В ИЗОБРАЖЕНИИ Конструкция оконного приложения
При запуске приложение появляется рабочее окно (см рисунки 3-5). Рисунок 3 – Оконное приложение.
Рисунок 4 – Команды: меню->Файл.
Рисунок 5 – Команды: меню->Функционал.
Таблица 3 Назначение компонентов оконного приложения
Структура приложения. Варианты использования приложения приведены в use case диаграмме, приведенной ниже (см. рисунок 1). Приложение состоит из двух файлов: form.py и stego_bmp.py. Файл form.py Файл form.py содержит в себе функции реализации создания и отображения интерфейса, а также функции вызова основных функций алгоритма. При работе приложения вызываются следующие функции: Таблица 3 Используемые функции главного файла приложения
Ниже предоставлен код функций класса Form: def __init__(self): super().__init__() # Конструктор виджет фрейма с родительским #MASTER. self.initUI() # Инициализация функции создания текстового блока self.show_menu() # Инициализация функции создания меню def initUI(self): self.master.title("Stego") # заголовок формы self.pack(fill=BOTH, expand=1) # Упакуйте виджет в родительский #виджет. self.txt = Text(self) # Атрибут экземпляра txt формы self.txt.pack(fill=BOTH, expand=1) def show_menu(self): menu_bar = Menu(self.master) # Создайте виджет меню с родительским #MASTER. self.master.config(menu=menu_bar) fileMenu = Menu(menu_bar, tearoff=0) # Создание менюбаров Work = Menu(menu_bar, tearoff=0) Help = Menu(menu_bar, tearoff=0) menu_bar.add_cascade(label="Файл", menu=fileMenu) #Добавление элемента иерархического меню “Файл”. fileMenu.add_command(label="Открыть текстовый файл", command=self.Open_file) # Добавление команды открытия текстового файла принадлежащему #элементу меню “Файл” fileMenu.add_command(label="Открыть изображение", command=self.new_window) # Добавление команды открытия файла изображения принадлежащему элементу меню “Файл” menu_bar.add_command(label="Help", command=self.Open_file) #Добавление команды Help menu_bar.add_cascade(label="Функционал", menu=Work) #Добавление элемента иерархического меню “Функционал”. Work.add_command(label="Сокрыть", command=self.ENCRIPT) #Добавление команды сокрытия принадлежащему элементу меню #“Функционал” Work.add_command(label="Извлеч", command=self.DECRIPT) #Добавление команды изображения принадлежащему элементу меню #“Функционал” def Open_file(self): ftypes = [('Текстовые файлы', '*.txt'), ('Все файлы', '*')] # кортеж отображаемых файлов dlg = filedialog.Open(self, filetypes=ftypes) #диалоговое окно выбора текстового файла fl = dlg.show() #запись имени выбранного файла if fl!= '': text = self.readFile(fl) # чтение файла self.txt.delete("1.0", "end") # очистка текстового блока self.txt.insert(END, text) # запись файла в текстовый блок def ENCRIPT(self): messagebox.askokcancel() # отображение сообщения о необходимости #выбора текстового файла для сокрытия ftypes = [('Текстовые файлы', '*.txt'), ('Все файлы', '*')] # кортеж #отображаемых файлов dlg = filedialog.Open(self, filetypes=ftypes) # диалоговое окно выбора #текстового файла fltxt = dlg.show() # запись имени выбранного файла messagebox.askokcancel() # отображение сообщения о необходимости #выбора контейнера изображения для сокрытия ftypes = [('Графический контейнер', '*.bmp'), ('Все файлы', '*')] #кортеж #отображаемых файлов dlg = filedialog.Open(self, filetypes=ftypes) # диалоговое окно выбора #файла контейнера flbmp = dlg.show() #запись имени выбранного файла messagebox.askokcancel() #отображение сообщения о необходимости #выбора контейнера изображения для сохранения нового контейнера flnewbmp = filedialog.asksaveasfilename() # запись имени файла нового #контейнера, полученного из диалогового окна сохранения файла encode_image(flbmp,flnewbmp,fltxt,1) # подача данных на вход #функции сокрытия (класс Stego) def DECRIPT(self): ftypes = [('Графический контейнер', '*.bmp'), ('Все файлы', '*')] #кортеж отображаемых файлов dlg = filedialog.Open(self, filetypes=ftypes) # диалоговое окно выбора #файла контейнера с сокрыты текстом flbmp = dlg.show() # запись имени выбранного файла decode_image(flbmp, "t.txt", 1) # подача данных на вход функции #извлечения (класс Stego) fl = "t.txt" # имя файла, созданного в ходе выполнения функции #извлечения text = self.readFile(fl) # прочтение созданного файла self.txt.delete("1.0", "end") # очистка текстового блока self.txt.insert(END, text) # заполнение текстового блока содержимым созданного файла 2.2.2 Файл stego_bmp.py. Файл stego_bmp.py содержит в себе класс, хранящий в себе функции сокрытия текстовой информации в изображении, извлечения текстовой информации из изображения, а также функцию создания битовых масок. Таблица 4 Функции файла stego _ bmp. py
Ниже предоставлен код функций файла stego_bmp.py
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-07-19; просмотров: 176; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.236 (0.006 с.) |