Python
Помогите написать антивирус на питоне.
Дайте совет или отправную точку по написанию простого антивируса на языке программирования Питон
пусть вытаскивает из exeшника исполняемый код (можно готовыми средствами для начала, скажем gnu toolchain aka MinGW) и сравнивает с тем который есть в базе данных.
а самое простое - это параноидальный недоантивирусник для android apk, вся его функция - получение списка разрешений из манифеста и ругань на "потенциально опасные", но можно и его сделать посложнее, чтобы анализировал код опять же, на предмет совпадений с БД
а самое простое - это параноидальный недоантивирусник для android apk, вся его функция - получение списка разрешений из манифеста и ругань на "потенциально опасные", но можно и его сделать посложнее, чтобы анализировал код опять же, на предмет совпадений с БД
1) Изучить питон
2) Изучить как работают антивирусники
3) Написать
2) Изучить как работают антивирусники
3) Написать
Вячеслав Шабанов
Питон то я изучил. Антивирусники как работаят знаю тоже. Но не могу понять как это сделать на питоне.
- Создание сырого антивируса на Python.
Почему именно сырого? Сейчас объясню)
У каждого файла есть своя хеш-сумма, она индивидуальная.
Пример:
файл.txt содержит слово " азбука " - хеш этого файла 8b2d6dbe2568236e1f18978c9747dd9067714f26c950027d055abdf0f96c4bd3
Уберем последнюю букву " а " - хеш файла поменялась, b9f6997fb6ae4051e76b7647ad531f0e0cc2b6746e86c9c069b6b7ee4d6f2a1d
( Если менять имя файла, хеш будет оставаться таким-же )
Антивирус будет работать на сравнении хеша с хешами вирусов хранящимися в .txt файле. Таким образом если в вирусе удалить или добавить 1 символ, антивирус не будет на него реагировать.
upd: Решил покрасить, чтобы было заметней)
Цель темы не создание бесплатного антивируса, который будет работать не хуже остальных. Тут мы познакомимся с созданием антивируса на Python и его работы.
*****
Чтобы не затягивать, код антивируса будет готовым ниже. Я только объясню его работу.
Код 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 )
надеюсь помог
Почему именно сырого? Сейчас объясню)
У каждого файла есть своя хеш-сумма, она индивидуальная.
Пример:
файл.txt содержит слово " азбука " - хеш этого файла 8b2d6dbe2568236e1f18978c9747dd9067714f26c950027d055abdf0f96c4bd3
Уберем последнюю букву " а " - хеш файла поменялась, b9f6997fb6ae4051e76b7647ad531f0e0cc2b6746e86c9c069b6b7ee4d6f2a1d
( Если менять имя файла, хеш будет оставаться таким-же )
Антивирус будет работать на сравнении хеша с хешами вирусов хранящимися в .txt файле. Таким образом если в вирусе удалить или добавить 1 символ, антивирус не будет на него реагировать.
upd: Решил покрасить, чтобы было заметней)
Цель темы не создание бесплатного антивируса, который будет работать не хуже остальных. Тут мы познакомимся с созданием антивируса на Python и его работы.
*****
Чтобы не затягивать, код антивируса будет готовым ниже. Я только объясню его работу.
Код 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 )
надеюсь помог
Похожие вопросы
- Помогите написать код на питоне
- Помогите написать код в питон
- Я в отчаяние ,буду очень благодарна,если сможете написать на языке питона ?
- нужно написать задачи на питоне
- Напишите программу на питоне
- Напиши программу по питону
- Пожалуйста напишите код на питоне для новичка, чтобы разобраться
- Напишите программу на питоне
- Напишите код в питоне
- Написать программы на питоне