Загрузка...

Создаем антивирус на Python

Тема в разделе Вирусология создана пользователем PersonOfInterest 22 ноя 2022. 4576 просмотров

  1. PersonOfInterest
    PersonOfInterest Автор темы 22 ноя 2022 Ever think you're being watched? 156 15 ноя 2022
    Вижу много тут 'черноты', решил пролить капельку света)
    *****
    О чем тема
    :
    - Создание
    сырого антивируса на 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 ) https://docs-python.ru/standart-library/modul-hashlib-python/
    - Сигнатуры ( взял у создателей другого антивирса на Python)) Тот антивирус работает гораздо лучше, да и с графикой. ) https://github.com/Len-Stevens/Python-Antivirus

    [ TeraBox ] Файл с сигнатурами, который будет работать в выше написанном коде:
    Ссылка начинается с настоящего домена ' terabox.com ', тип скачиваемого файла ' .txt ', думаю не надо ссылки проверки с VirusTotal))
    P.S. Забыл написать, в .txt файле хранится 124 661 хешов вирусов)
     
    22 ноя 2022 Изменено
  2. backdoor
    backdoor 22 ноя 2022 Заблокирован(а) 3365 28 дек 2021
    хааххахаха а ты вкурсе да что это будет работать только на чистые файлы? малейший подгрузчик и все(
     
    1. Посмотреть предыдущие комментарии (1)
    2. backdoor
      PersonOfInterest, ну я имею ввиду что это статическая проверка, добавить загрузчик к файлу, и твой ав уже ничего не сможет
    3. backdoor
      PersonOfInterest, а тот же статик редлайн палит каждый ав, вообще не понятно зачем он нужен, если не по приколу
    4. PersonOfInterest Автор темы
      backdoor, Как я знаю, загрузчик именно загружает файл, не исполняет его. После исполнения программы загрузчика можно проверить загрузившиеся файлы, нет? А если добавить хеш именно загрузчика вируса, загрузчик тоже будет удалятся)
  3. gcc_machine
    сыровато, проще уже тогда связать с Virus Total API
     
    1. PersonOfInterest Автор темы
      gcc_machine, VirusTotal проверяет файлы весом не больше 650 МБ) Да, антивирус сырой, но цель темы не была создания крутого антивируса.
  4. Moon_A_gel
    Moon_A_gel 5 янв 2024 1 5 янв 2024
    PersonOfInterest, у вас не работает фаил с сигнатурами который будет работать в коде( он не показывается в terabox) можете скинуть скачиваемый?
     
    5 янв 2024 Изменено
    1. PersonOfInterest Автор темы
    2. Moon_A_gel
      PersonOfInterest, спасибо большое^^ Скажу даже больше, не просто читают, а используют в проекте
  5. Moon_A_gel
    Moon_A_gel 5 янв 2024 1 5 янв 2024
    еще такой вопросик, библиотеки для импортирования надо как-то переименовывать и куда-то перемещать, или так можно просто скачать и все? А еще вопросик, если такая тема, то, что делать, я просто первый раз создаю, что[IMG]-то подобное, поэтому многовато вопросов
     
    1. PersonOfInterest Автор темы
      Moon_A_gel, может в лс форума или тг свяжемся, раз много вопросов?
    2. Moon_A_gel
      PersonOfInterest, можно в тг думаю там будет проще и сообщения видны (имя тг- Moon_A_gel )
      6 янв 2024 Изменено
  6. id703571544
    id703571544 29 апр 2024 0 29 апр 2024
    Автор, скажи пожалуйста: а почему ты пишешь функцию "while true"? Ибо не совсем понимаю, зачем она нужна и какую функцию она выполняет..
     
    1. PersonOfInterest Автор темы
      id703571544, уведомления не приходят с этой темы..
      Цикл while True был добавлен для постоянного запроса хеша файла. Если файлов для проверки много, их можно проверить подряд после каждой завершенной проверки. В ином случае для проверки слелующего файла пришлось бы запускать этот файл .py заного.
  7. id703571544
    id703571544 29 апр 2024 0 29 апр 2024
    Вернее зачем проводить бесконечную работу файла?
     
  8. id703571544
    id703571544 29 апр 2024 0 29 апр 2024
    Я просто новичок в питоне и думал, что можно без "бесконечной работы" обойтись
     
Загрузка...
Top