首页 > 解决方案 > 我怎样才能加快我的蛮力攻击?

问题描述

我想加快我的蛮力代码以加快进程,因为它会在两秒钟内检查密码

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

标签: pythonbrute-force

解决方案


拦截器 #1:顺序请求

因此,在您当前的设置中:

  • 一次将一个密码发送到服务器
  • 在发送下一个响应之前等待一个响应

使用像您这样的模块,time您可以查看等待服务器响应所花费的 CPU 时间,以及每个循环中的其他内容以确定您的占空比(工作/与等待时间,每个循环)。如果您的占空比为 20%(即 1 毫秒工作,4 毫秒等待),那么您应该能够轻松运行 5 个并行请求。

Blocker #2:单核操作

如果您通过并行等待多个请求使您的 CPU[核心] 饱和,并且您有一个多核 CPU(例如 4 个核心或nc=4),那么您应该能够nc-1 = 3并行处理 3 倍( )的请求。(请参阅我的另一篇文章,了解为什么您不能只使用 1000 个线程并期望性能提高 1000 倍:https ://stackoverflow.com/a/68667749/10761353 )

障碍#3:服务器容量

您的服务器每秒只能响应一定数量的请求。因此,即使您的 PC(例如,具有 4 个内核,因此3 cores x 5 threads/core = 15 threads)并行发出许多请求,服务器也可能只能处理(例如)10 个请求/秒,在这种情况下,您可能会:

  • 消耗所有可用的 [server] 响应资源,
  • 在每 15 个请求/秒中收到(例如)5 个以上的某种错误,
  • 提高他们的使用费用(可能),
  • 排除合法用户访问页面/站点,以及
  • 触发滥用保护/监控,这让我想到了最后一点

障碍#4:滥用预防措施/系统

公司喜欢为他们的客户服务——这通常是他们赚钱的方式。当合法用户由于拒绝服务 (DoS) 攻击(无论是尝试暴力破解/猜测密码,还是只是滋扰)而无法进入时,公司自然不会意识到这一点并想要阻止它(听说过名为 Cloudflare 的小初创公司?)。措施包括:

  • 当流量模式变得可疑时,除了密码之外还需要验证码
  • 来自发出过多请求的 IP 的请求减慢/丢弃
  • 阻止/禁止来自过去发出过多请求的 IP 的访问
  • 登录尝试失败次数过多后锁定用户帐户
  • 还有很多很多。

TL;博士

  • 当你的任务有很多等待时间,或者你有一个多核 CPU 时,多线程对于并行化很有用——现在大多数都是这样)
  • 在 2021 年,暴力破解基于 Web 的服务并不实用(而且绝对不是好网民的标志)
  • 使用强大的 GPU 可以大大加速密码哈希的暴力破解,从而有效地将站点的操作保护排除在猜测循环之外。

推荐阅读