Как я могу ускорить атаку грубой силы? [закрыто]

avatar
MendozaXD
8 августа 2021 в 17:57
401
1
-4

Я хочу ускорить мой код грубой силы, чтобы ускорить процесс, так как он проверяет пароль за две секунды

import requests
import colorama
from colorama import Fore

colorama.init()
print(Fore.CYAN)
username = input("[/] Enter Username: ")
    
def login(pwd):
    r = requests.get("https://domain.test.com/login/actions.php?action=0000&login="+username+"&password="+pwd)
    if "INCORRECT PASS" in r.text:
        return True
    return False
    
i = 100
while i < 9999:
    pwd = "%04d"%i
    print(Fore.RED + "[-] Password invalid: %s"%pwd)
    try:
        if login(pwd):
            print(Fore.GREEN + "[+] PASSWORD CRACKED: %s"%pwd)
             break
    except:
        pass
    i+=1
Источник

Ответы (1)

avatar
Adam Smooch
8 августа 2021 в 18:21
2

Блокировщик №1: последовательные запросы

Итак, в вашей текущей настройке:

  • пароли отправляются на сервер по одному
  • вы ждете один ответ перед отправкой следующего

С помощью такого модуля, как time, вы можете увидеть, сколько времени процессора тратится на ожидание ответов сервера, по сравнению с другими вещами в каждом цикле, чтобы определить свой рабочий цикл (работа/время ожидания по циклу). Если ваш рабочий цикл составляет 20% (т.е. 1 мс работа, 4 мс ожидание), вы сможете легко выполнить 5 параллельных запросов.

Блокатор №2: работа с одним ядром

Если вы нагружаете свой ЦП[ядро] параллельным ожиданием нескольких запросов, и у вас многоядерный ЦП (скажем, 4 ядра или nc=4), вы сможете иметь 3x (nc-1 = 3) столько запросов параллельно. (См. мой другой пост здесь о том, почему вы не можете просто перейти на 1000 потоков и ожидать 1000-кратного увеличения производительности: https://coderhelper.com/a/68667749/10761353)

Блокировщик №3: мощность сервера

Ваш сервер сможет отвечать только на определенное количество запросов в секунду. Таким образом, даже если ваш компьютер (например, с 4 ядрами и, следовательно, 3 cores x 5 threads/core = 15 threads) выполняет много запросов параллельно, сервер может обрабатывать только (например) 10 запросов в секунду, и в этом случае вы, вероятно, будете:

  • использовать все доступные ресурсы ответа [сервера],
  • получать какую-то ошибку для (например) 5+ из каждых 15 запросов/сек,
  • поднять счет за пользование (вероятно),
  • запретить законным пользователям доступ к странице/сайту и
  • активировать защиту/мониторинг злоупотреблений, что подводит меня к последнему пункту

Блокатор №4: Меры/системы предотвращения злоупотреблений

Компаниям нравится обслуживать своих клиентов — обычно именно так они получают прибыль. Когда законные пользователи не могут войти в систему из-за атак типа «отказ в обслуживании» (DoS) (независимо от того, пытаются ли они подобрать/подобрать пароль или просто доставить неудобства), компании, естественно, не ценят этого и хотят остановить это (когда-либо слышали об этом). маленький стартап под названием Cloudflare?). Меры включают:

  • запрашивать капчу в дополнение к паролю, когда шаблоны трафика становятся подозрительными
  • замедление/отбрасывание запросов от IP-адресов, которые делают слишком много запросов
  • блокировка/запрет доступа с IP-адресов, которые сделали слишком много запросов в прошлом
  • блокировка учетных записей пользователей после слишком большого количества неудачных попыток входа
  • и многое, многое другое.

TL;DR

  • многопоточность может быть полезна для распараллеливания, когда ваши задачи требуют много времени ожидания или у вас многоядерный ЦП - большинство из них в настоящее время)
  • в 2021 году взлом веб-сервиса не очень практичен (и определенно непризнак хорошего пользователя сети)
  • подбор хэша пароля может быть значительно ускорен с помощью мощных графических процессоров, что эффективно выводит оперативную защиту сайта из цикла угадывания.