2

I've written the code in Python, but the built-in Windows Defender antivirus detects the .exe file that I compile my code into as a virus. I believe this might be attributed to the use of keyboard.press_and_release, keyboard.write, and os.startfile.

Could you provide guidance on how to bypass this issue?

The code itself:

import pyttsx3
import speech_recognition as sr
import keyboard
import time
import os
import sys

def get_username():
    return os.getlogin()

def open_ragemp():
    ragemp_path = "D:/RAGEMP/updater.exe"
    try:
        os.startfile(ragemp_path)
        return True, "RAGEMP"
    except Exception as e:
        return False, str(e)

def open_yandex_music():
    try:
        keyboard.press_and_release("win+s")
        time.sleep(1)
        keyboard.write("Яндекс.Музыка")
        keyboard.press_and_release("enter")
        return True, "Яндекс.Музыка"
    except Exception as e:
        return False, str(e)

def respond(text):
    print("Бот:", text)
    engine.say(text)
    engine.runAndWait()

def greet(username):
    respond(f"Здравствуйте, {username}! Как я могу помочь вам сегодня?")

def close_program():
    respond("До свидания! Спасибо за использование помощника.")
    sys.exit()

def main():
    global engine
    engine = pyttsx3.init()
    recognizer = sr.Recognizer()

    username = get_username()
    greet(username)

    with sr.Microphone() as source:
        respond(f"{username}, как бы вы хотели вводить команды? Голосом или текстом?")
        audio = recognizer.listen(source)

    try:
        user_input = recognizer.recognize_google(audio, language="ru-RU").lower()
        print(f"{username} сказал:", user_input)
    except sr.UnknownValueError:
        user_input = input("Не удалось распознать. Введите 'голос' или 'текст': ")

    if "голос" in user_input:
        respond("Хорошо, буду ждать команды голосом.")
        while True:
            with sr.Microphone() as source:
                print(f"{username}, скажите ваш запрос:")
                audio = recognizer.listen(source)

            try:
                user_input = recognizer.recognize_google(audio, language="ru-RU").lower()
                print(f"{username} сказал:", user_input)
            except sr.UnknownValueError:
                print(f"{username}, не удалось распознать команду.")
                continue

            if "кто твой разработчик" in user_input:
                respond("Меня разработал tareqq. Его Discord и Telegram выведены в консоль.")
                print('Discord: mewqq. \n Telegram: https://t.me/chvaNNoy')
            
            elif "кто тебя разработал" in user_input:
                respond("Меня разработал tareqq. Его Discord и Telegram выведены в консоль.")
                print('Discord: mewqq. \n Telegram: https://t.me/chvaNNoy')
            
            elif "кто такой джаспер" in user_input:
                respond("Джаспер - это нефор, бывший руководитель Fours Project.")
            
            elif "как дела" in user_input:
                respond(f"У меня всё отлично, спасибо! Как у вас, {username}?")
            
            elif "новости" in user_input:
                respond("Дайте мне немного времени, и я найду для вас актуальные новости.")
            
            elif "анекдот" in user_input:
                respond("Почему программисты так не любят пляж? Потому что они боятся волны!")
            
            elif "способности" in user_input:
                respond("Я могу отвечать на вопросы, рассказывать шутки, предоставлять информацию и многое другое. Что вас интересует?")
            
            elif "игры" in user_input:
                respond("Я, к сожалению, не умею играть в видеоигры, но могу вам помочь найти информацию о них!")
            
            elif "открой рейдж мп" in user_input:
                success, app_name = open_ragemp()
                if success:
                    respond(f"Программа {app_name} успешно запущена.")
                else:
                    respond(f"Программа {app_name} не запустилась. Причина: {app_name}")
            
            elif "открой яндекс музыку" in user_input:
                success, app_name = open_yandex_music()
                if success:
                    respond(f"Программа {app_name} успешно запущена.")
                else:
                    respond(f"Программа {app_name} не запустилась. Причина: {app_name}")
            
            elif "пока" in user_input:
                close_program()
            
            else:
                respond("Извините, я не понял ваш запрос. Пожалуйста, переформулируйте его.")

    elif "текст" in user_input:
        respond("Хорошо, буду ждать команды в текстовом виде.")
        while True:
            user_input = input("Введите команду: ")

            if "кто твой разработчик" in user_input:
                respond("Меня разработал tareqq. Его Discord и Telegram выведены в консоль.")
                print('Discord: mewqq. \n Telegram: https://t.me/chvaNNoy')
            
            elif "кто тебя разработал" in user_input:
                respond("Меня разработал tareqq. Его Discord и Telegram выведены в консоль.")
                print('Discord: mewqq. \n Telegram: https://t.me/chvaNNoy')
            
            elif "кто такой джаспер" in user_input:
                respond("Джаспер - это нефор, бывший руководитель Fours Project.")

            elif "выключи компьютер" in user_input:
                os.system("shutdown /s /t 1")  # Выключение через 1 секунду

            elif "как дела" in user_input:
                respond(f"У меня всё отлично, спасибо! Как у вас, {username}?")
            
            elif "новости" in user_input:
                respond("Дайте мне немного времени, и я найду для вас актуальные новости.")
            
            elif "анекдот" in user_input:
                respond("Почему программисты так не любят пляж? Потому что они боятся волны!")
            
            elif "способности" in user_input:
                respond("Я могу отвечать на вопросы, рассказывать шутки, предоставлять информацию и многое другое. Что вас интересует?")
            
            elif "игры" in user_input:
                respond("Я, к сожалению, не умею играть в видеоигры, но могу вам помочь найти информацию о них!")
            
            elif "открой рейдж мп" in user_input:
                success, app_name = open_ragemp()
                if success:
                    respond(f"Программа {app_name} успешно запущена.")
                else:
                    respond(f"Программа {app_name} не запустилась. Причина: {app_name}")
            
            elif "открой яндекс музыку" in user_input:
                success, app_name = open_yandex_music()
                if success:
                    respond(f"Программа {app_name} успешно запущена.")
                else:
                    respond(f"Программа {app_name} не запустилась. Причина: {app_name}")
            
            elif "пока" in user_input:
                close_program()
            
            else:
                respond("Извините, я не понял ваш запрос. Пожалуйста, переформулируйте его.")

    else:
        respond("Извините, не удалось понять ваш выбор.")
        engine.runAndWait()

    while True:
        user_input = input("\nВведите команду: ")

        if user_input.lower() == "голос":
            # Ввод команд голосом
            pass
        elif user_input.lower() == "текст":
            # Ввод команд текстом
            pass
        elif user_input.lower() == "закрыть":
            close_program()
        else:
            print("\nНеверная команда. Пожалуйста, выберите действие из списка.")

if __name__ == "__main__":
    main()

The .exe file that I'm compiling is detected as a virus by the Windows Defender antivirus.

tareqq
  • 21
  • 1

1 Answers1

0

You can submit your executable to Microsoft to be evaluated:

https://www.microsoft.com/en-us/wdsi/filesubmission

Software companies build up reputation over time by submitting digitally signed software to various antivirus companies. You would need a certificate with a brand name and then sign the executable with that and submit your program to as many antivirus companies as possible. It does not mean, that your file will not be detected as a potential harmful executable, but after getting approval, for instance with Microsoft Defender, it will no longer be detected by that antivirus software.

Please note: every time you change your code and build an executable, you must resubmit your program.

If you want a quick fix, you could add an exclusion on your system:

https://support.microsoft.com/en-us/windows/add-an-exclusion-to-windows-security-811816c0-4dfd-af4a-47e4-c301afe13b26

Cow
  • 2,543
  • 4
  • 13
  • 25