Вижу много тут 'черноты', решил пролить капельку света) ***** О чем тема: - Создание сырого антивируса на Python. Почему именно сырого? Сейчас объясню) У каждого файла есть своя хеш-сумма, она индивидуальная. Пример: файл.txt содержит слово " азбука " - хеш этого файла 8b2d6dbe2568236e1f18978c9747dd9067714f26c950027d055abdf0f96c4bd3 Уберем последнюю букву " а " - хеш файла поменялась, b9f6997fb6ae4051e76b7647ad531f0e0cc2b6746e86c9c069b6b7ee4d6f2a1d ( Если менять имя файла, хеш будет оставаться таким-же ) Антивирус будет работать на сравнении хеша с хешами вирусов хранящимися в .txt файле. Таким образом если в вирусе удалить или добавить 1 символ, антивирус не будет на него реагировать. upd: Решил покрасить, чтобы было заметней) Цель темы не создание бесплатного антивируса, который будет работать не хуже остальных. Тут мы познакомимся с созданием антивируса на Python и его работы. ***** Чтобы не затягивать, код антивируса будет готовым ниже. Я только объясню его работу. import os import hashlib while True: file = input('Введите полный путь файла: ') with open(file, 'rb') as f: hsh = hashlib.sha256() while True: data = f.read() if not data: break hsh.update(data) result = hsh.hexdigest() print(result) with open('SHA256-signatures.txt', 'r') as r: signatures = r.readlines() if result in signatures: print('Найден вирус!') os.remove(file) print('Вирус был удален!') else: print('Вирус не обнаружен!') Python import os import hashlib while True: file = input('Введите полный путь файла: ') with open(file, 'rb') as f: hsh = hashlib.sha256() while True: data = f.read() if not data: break hsh.update(data) result = hsh.hexdigest() print(result) with open('SHA256-signatures.txt', 'r') as r: signatures = r.readlines() if result in signatures: print('Найден вирус!') os.remove(file) print('Вирус был удален!') else: print('Вирус не обнаружен!') Возможно вам не понравится код или/и то, что антивирус не графический, а работает в консоли. Мне все равно, главное что он работает)) ***** Импортируем библиотеки, " os " для удаление вируса в случае его обнаружения, " hashlib " для вычисления хеша файла. Вот тут аккуратно, если файл весит очень много. Я пробовал вычисление файла весом 4.18 ГБ, вычислил довольно быстро, но вот диспетчер задач показывал, что оперативная память а так же диск использовались на полную) Дальше в бесконечной работе мы спрашиваем полный путь к файлу и вычисляем его хеш, сохраняем сигнатуры ( хеши вирусов ) в переменную и проверяем, найдется ли наш хеш файла среди хешов вирусов. Если хеши совпадают, библиотекой os удаляем вирус, иначе пишем в консоль 'Вирус не обнаружен'. Именно вирус, так как ( по-моему мнению ) в .txt файле с сигнатурами находятся сигнатуры именно вирусов. Мы не проверяем файлы на наличие вредоносного кода ( как делают другие антивирусы вместе с сравнением сигнатур файлов ), а значит файлы не заражены, они и есть вирусы! ***** Вот так вот. Я постарался объяснить кратко, но понятно, работу слабого антивируса. + Антивирус проверяет именно файлы, когда понадобится, а не сидит в работе процессора постоянно сканируя всё возможное. Еще этот антивирус может быть даже не плохим, если вы найдете хеши миллиардов вирусов и их разновидностей. - Антивирус проверяет именно тогда, когда его попросят, еще он сильно ресурсозатратный. Он не поможет в серьезной атаке, а так же может пропустить вирус, если в нем изменен хотя-бы 1 символ) ***** Источники: - Хеширование файла ( hashlib ) https://docs-python.ru/standart-library/modul-hashlib-python/ - Сигнатуры ( взял у создателей другого антивирса на Python)) Тот антивирус работает гораздо лучше, да и с графикой. ) https://github.com/Len-Stevens/Python-Antivirus [ TeraBox ] Файл с сигнатурами, который будет работать в выше написанном коде: SHA256-signatures.txt https://terabox.com/s/1cLnEIPEWf6EELUQ1Gz8uqQ Ссылка начинается с настоящего домена ' terabox.com ', тип скачиваемого файла ' .txt ', думаю не надо ссылки проверки с VirusTotal)) P.S. Забыл написать, в .txt файле хранится 124 661 хешов вирусов)
PersonOfInterest, ну я имею ввиду что это статическая проверка, добавить загрузчик к файлу, и твой ав уже ничего не сможет
PersonOfInterest, а тот же статик редлайн палит каждый ав, вообще не понятно зачем он нужен, если не по приколу
backdoor, Как я знаю, загрузчик именно загружает файл, не исполняет его. После исполнения программы загрузчика можно проверить загрузившиеся файлы, нет? А если добавить хеш именно загрузчика вируса, загрузчик тоже будет удалятся)
gcc_machine, VirusTotal проверяет файлы весом не больше 650 МБ) Да, антивирус сырой, но цель темы не была создания крутого антивируса.
PersonOfInterest, у вас не работает фаил с сигнатурами который будет работать в коде( он не показывается в terabox) можете скинуть скачиваемый?
Moon_A_gel, Вау, это читают, спасибо) https://github.com/Len-Stevens/Python-Antivirus/tree/main/hard_signatures https://github.com/Len-Stevens/MD5-Malware-Hashes/blob/main/MD5 Hahses.zip Сигнатуры вы можете скачать здесь (это и есть "оригиналы").
еще такой вопросик, библиотеки для импортирования надо как-то переименовывать и куда-то перемещать, или так можно просто скачать и все? А еще вопросик, если такая тема, то, что делать, я просто первый раз создаю, что-то подобное, поэтому многовато вопросов
Автор, скажи пожалуйста: а почему ты пишешь функцию "while true"? Ибо не совсем понимаю, зачем она нужна и какую функцию она выполняет..
id703571544, уведомления не приходят с этой темы.. Цикл while True был добавлен для постоянного запроса хеша файла. Если файлов для проверки много, их можно проверить подряд после каждой завершенной проверки. В ином случае для проверки слелующего файла пришлось бы запускать этот файл .py заного.