Skip to content

Lolka555/Malware_Scanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задача:

Требуется реализовать утилиту, работающую из командной строки и выполняющую сканирование файлов в заданной директории, с целью нахождения в ней “вредоносных” файлов. Размеры файлов могу превышать объем доступной оперативной памяти.

Функциональные требования

  • Путь к корневой директории для проверки передается на вход утилиты в качестве параметра
  • Проверка должна быть рекурсивной, с заходом во вложенные директории
  • “Вредоносность” файла определяется путем подсчета MD5-хеша от его содержимого и поиска этого хеша среди заданных

После завершения выполнения утилиты пользователю в консоль должен быть выведен отчет о сканировании, в котором присутствует следующая информация:

  • Общее количество обработанных файлов
  • Количество обнаруженных “вредоносных” файлов
  • Количество ошибок анализа файлов (например, не хватает прав на чтение файла);
  • Время выполнения утилиты

В процессе проверки утилита должна логгировать информацию об обнаруженных “вредоносных” файлах

Минимально логгируемая информация:

  • Путь к файлу
  • Хеш
  • Вердикт
  • В качестве лога использовать текстовый файл, путь к которому также передается на вход утилите

База вредоносных хэшей

Хеши “вредоносных” файлов и соответствующие им вердикты задаются в CSV-файле, путь к которому передается на вход утилите. CSV-файл – это текстовый файл, состоящий из строк. Каждая строка содержит хеш и имя вердикта, разделенные символом ';'.

Пример содержимого csv-файла (конкретные значения хешей и вердиктов можно вбить самостоятельно):

a9963513d093ffb2bc7ceb9807771ad4;Exploit ac6204ffeb36d2320e52f1d551cfa370;Dropper 8ee70903f43b227eeb971262268af5a8;Downloader

Пример запуска

scanner.exe --base base.cvs --log report.log --path c:\folder

Требования к реализации

  • Реализовать утилиту необходимо на языке C++ с использованием ООП, под Windows (возможна кросс-платформенная реализация)
  • Использовать CMake в качестве системы сборки
  • В процессе работы утилиты задействовать все доступные вычислительные ресурсы системы

Архитектурно утилита должна состоять из двух компонентов:

  • исполняемого файла, предоставляющего консольный интерфейс для ввода команды на сканирование и вывода финального отчета
  • DLL, в которой расположена основная логика задачи сканирования
  • Написать юнит тесты на основной функционал утилиты (в качестве тестового фреймворка использовать gtest).

About

Pet project as Malware scanner

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published