Skip to content

Zhdanov0/CRUD_VIRUS_SCANNER_GUI

Repository files navigation

CRUD_VIRUS_SCANNER_GUI

  • Реализованы основные функции для работы с базой данных: создание таблицы, ее вывод, добавление, редактирование, удаление строк таблицы;

  • Реализован графический интерфейс;

  • Реализован поиск "вирусных" файлов;

СОЗДАНИЕ ТАБЛИЦЫ, ПОДГОТОВЛЕННЫЕ ЗАПРОСЫ, МЕНЮ

В качестве СУБД выбран PostgreSQL.

Сначала создается таблица, если такая не существует.

cur.execute('''CREATE TABLE IF NOT EXISTS viruses (
                extension VARCHAR(50) NOT NULL,
                line VARCHAR(50) NOT NULL);''')

Далее создаются подготовленные запросы с целью увеличения производительности и сокращения кода.

cur.execute('''CREATE TABLE IF NOT EXISTS viruses (
                extension VARCHAR(50) NOT NULL,
                line VARCHAR(50) NOT NULL);''')

cur.execute('''PREPARE select_all_order AS
               SELECT * FROM viruses ORDER BY extension;''')

cur.execute('''PREPARE select_all AS
               SELECT * FROM viruses;''')

cur.execute('''PREPARE select_all_where AS 
               SELECT extension, line FROM viruses WHERE extension = $1 AND line = $2;''')

cur.execute('''PREPARE insert AS 
               INSERT INTO viruses (extension, line) VALUES ($1, $2);''')

cur.execute('''PREPARE update AS 
               UPDATE viruses SET extension = $1, line = $2 WHERE extension = $3 AND line = $4;''')

cur.execute('''PREPARE delete AS
               DELETE FROM viruses WHERE extension = $1 and line = $2;''')

После запуска программы отображается меню. Для работы с базой данных можно выбрать:
"Add line", "Edit database", "Show database".

image

ДОБАВЛЕНИЕ ЗАПИСЕЙ

Для этого нужно ввести расширение и "вирусную" строку файла.
Для примера по умолчанию написано расширение txt.

image

После ввода корректных данных и подтверждения добавления (кнопка "Add") будет выведено сообщение о успешном добавлении строки.

image

ОШИБКИ

  1. Пустое поле ввода
  2. Попытка добавления уже имеющихся в таблице данных

image image

Для выхода используется кнопка Menu.

РЕДАКТИРОВАНИЕ И УДАЛЕНИЕ ЗАПИСЕЙ

Снизу полностью выводится таблица: номер записи, расширение, "вирусная" строка.
Сверху находится приглашение на ввод номера записи. И кнопки для редактирования и удаления записи.

image

УДАЛЕНИЕ ЗАПИСИ

Например, хотим удалить запись с номером 4.
Вводим номер и нажимаем кнопку "Delete".

image image

РЕДАКТИРОВАНИЕ ЗАПИСИ

Для редактирования нужно ввести номер записи и нажать кнопку "Edit".
После этого отобразятся поля ввода (заполненные данными по указанному номеру) для редактирования выбранной записи.
Редактируем и нажимаем "Accept".

image image

ОШИБКИ

  1. Ввод номера, не соответствующего числу записей в таблице.
  2. Нечисловой ввод.
  3. Пустое поле ввода при редактировании.

image image image

ВЫВОД ТАБЛИЦЫ

image

Сканирование

"Вирусным" считается файл определенного расширения, содержащий "вирусную" строку.
Информация о расширениях и их "вирусных" строках хранится в таблице.
Перед сканированием выполняется один запрос к базе данных и создается кэш. В качестве кэша используются префиксные деревья (модуль trie) для каждого расширения указанного в базе данных.

image

Необходимо ввести директорию для сканирования. Для вставки можно нажать "Paste".
Начать сканирование – "Start".
При сканировании проверяется каждый файл, найденный в директории и ее поддиректориях.
Если расширение файла есть в таблице, то файл открывается и проверяется на наличие в нем "вирусной" строки.
Для этого используется библиотека OS.

РЕЗУЛЬТАТ СКАНИРОВАНИЯ

image

Выводится:

  • общее количество обработанных файлов;
  • количество "вирусных" файлов;
  • количество ошибок анализа файлов (например, не хватает прав на чтение файла);
  • время выполнения сканирования;
  • информация о найденных "вирусных" файлах: название и путь.

После нажатия кнопки "Defuse" удаляются все "вирусные" файлы, результат сканирования обновляется.

image

ОШИБКИ

  • Ввод несуществующей директории

image

About

pet project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages