python破解网站密码

注意:此脚本可能会违反网站的使用条款和法律法规。在使用此脚本之前,请确保您有权进行此类攻击,并且仅攻击您有权攻击的目标。 主要思路如下: build_wordlist 函数:从给定的单词列表文件中构建单词队列。如果指定了恢复点,则从该点开始构建队列。 dir_bruter 函数:

注意:此脚本可能会违反网站的使用条款和法律法规。在使用此脚本之前,请确保您有权进行此类攻击,并且仅攻击您有权攻击的目标。

主要思路如下:

  • build_wordlist

    函数:从给定的单词列表文件中构建单词队列。如果指定了恢复点,则从该点开始构建队列。
  • dir_bruter

    函数:尝试使用给定的单词列表中的每个单词进行目录爆破。如果指定了扩展名,则还会尝试使用每个单词加上扩展名进行目录爆破。如果找到了有效的URL,则会打印出来。
  • 主函数:从用户输入中获取目标URL和单词列表文件路径。然后使用build_wordlist函数构建单词队列,并使用多线程启动dir_bruter函数进行目录爆破。

实际参考如下:

# 导入必要的库
from turtle import done
import urllib.request
import urllib.error
import urllib.parse
import threading
import queue

# 设置常量
threads       = 50  # 线程数
target        = input("\nInsira URL:")  # 目标URL
wordlist      = "D:\Meu jogos Meus documentos\ProgetoNovo\small.txt"  # 字典文件路径
resume        = None  # 恢复点
user_agent    = "Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0"  # 用户代理

# 输出提示信息
print("\033[31m\n\t******* WEBSITE BRUTE FORCE ATTACK *******\033[m\n\n")

# 定义函数:读取字典文件
def build_wordlist(wordlist):
    # 打开字典文件
    fd = open(wordlist,"r")
    # 读取文件内容
    raw_words = [line.rstrip('\n') for line in fd]
    # 关闭文件
    fd.close()
    # 初始化变量
    word = raw_words
    found_resume = False
    words        = queue.Queue()
    # 遍历字典文件中的每个单词
    for word in raw_words:
        # 如果有恢复点,则从恢复点开始
        if resume:
            if found_resume:
                words.put(word)
            else:
                if word == resume:
                    found_resume = True 
                    print("Resuming wordlist from: %s" % (resume))
        else:
            words.put(word)
    return words

def dir_bruter(extensions=None):
    # 定义一个目录爆破函数,用于尝试每个目录
    while not word_queue.empty():
        # 当单词队列不为空时,获取队列中的下一个单词
        attempt = word_queue.get()
        attempt_list = []        


       # 如果单词中没有".",则将其添加到目录列表中
        if "." not in attempt:
            attempt_list.append("/%s/" % (attempt))
        else:
            attempt_list.append("/%s" % (attempt))


      # 如果有扩展名,则将其添加到目录列表中 
        if extensions:
            for extension in extensions:
                attempt_list.append("/%s%s" % (attempt, extension))
        # 尝试每个目录
        for brute in attempt_list:

            url = "%s%s" % (target, urllib.parse.quote(brute))

            try:

                # 构建请求头并发送请求
                header = {"User-Agent": user_agent}
                request = urllib.request.Request(url, headers=header)  

                response = urllib.request.urlopen(request)

                # 如果响应的长度大于0,则表示目录存在

                if len(response.read()):
                    print("\033[32m[%d] => %s" % (response.code, url))

            except urllib.error.HTTPError as e:      

                # 如果响应代码不是404,则表示目录存在         
                if e.code != 404:
                    print("\033[31m !!! %d => %s" % (e.code, url))
                pass
            except urllib.error.URLError:
                pass


word_queue = build_wordlist(wordlist)
extensions = [".php",".bak",".orig",".inc"]
print("[*] Iniciando o Brute com Wordlist\n")

temp = 0
for i in range(threads):
    temp = temp + 1;
    t = threading.Thread(target=dir_bruter,args=(extensions,))
    t.start() 
# 如果线程数达到49,输出攻击结束的提示信息
if temp == 49:             
    print("************ ATAQUE DE FORÇA BRUTA TERMINADO ************")

有不同的方式可以加q讨论:99270043

再次提示注意:此脚本可能会违反网站的使用条款和法律法规。在使用此脚本之前,请确保您有权进行此类攻击,并且仅攻击您有权攻击的目标。

知秋君
上一篇 2024-08-13 15:12
下一篇 2024-08-13 14:48

相关推荐