Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 113; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.6.75 (0.01 с.) |