-
Реализованы основные функции для работы с базой данных: создание таблицы, ее вывод, добавление, редактирование, удаление строк таблицы;
-
Реализован графический интерфейс;
-
Реализован поиск "вирусных" файлов;
В качестве СУБД выбран 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".
Для этого нужно ввести расширение и "вирусную" строку файла.
Для примера по умолчанию написано расширение txt.
После ввода корректных данных и подтверждения добавления (кнопка "Add") будет выведено сообщение о успешном добавлении строки.
- Пустое поле ввода
- Попытка добавления уже имеющихся в таблице данных
Для выхода используется кнопка Menu.
Снизу полностью выводится таблица: номер записи, расширение, "вирусная" строка.
Сверху находится приглашение на ввод номера записи. И кнопки для редактирования и удаления записи.
Например, хотим удалить запись с номером 4.
Вводим номер и нажимаем кнопку "Delete".
Для редактирования нужно ввести номер записи и нажать кнопку "Edit".
После этого отобразятся поля ввода (заполненные данными по указанному номеру) для редактирования выбранной записи.
Редактируем и нажимаем "Accept".
- Ввод номера, не соответствующего числу записей в таблице.
- Нечисловой ввод.
- Пустое поле ввода при редактировании.
"Вирусным" считается файл определенного расширения, содержащий "вирусную" строку.
Информация о расширениях и их "вирусных" строках хранится в таблице.
Перед сканированием выполняется один запрос к базе данных и создается кэш. В качестве кэша используются префиксные деревья (модуль trie) для каждого расширения указанного в базе данных.
Необходимо ввести директорию для сканирования. Для вставки можно нажать "Paste".
Начать сканирование – "Start".
При сканировании проверяется каждый файл, найденный в директории и ее поддиректориях.
Если расширение файла есть в таблице, то файл открывается и проверяется на наличие в нем "вирусной" строки.
Для этого используется библиотека OS.
Выводится:
- общее количество обработанных файлов;
- количество "вирусных" файлов;
- количество ошибок анализа файлов (например, не хватает прав на чтение файла);
- время выполнения сканирования;
- информация о найденных "вирусных" файлах: название и путь.
После нажатия кнопки "Defuse" удаляются все "вирусные" файлы, результат сканирования обновляется.
- Ввод несуществующей директории