Please check existing issues (both open and closed) before creating new ones. It will save me some time answering duplicated questions and right now time is the most critical resource. Regards.
- https://clearvpn.com/ with the promo code
SAVEUKRAINE
or just click https://my.clearvpn.com/promo/redeem?code=SAVEUKRAINE you would get 1 year of subscription - NordVPN: You need to fill out form https://nordvpn.org/emergency-vpn/
- https://windscribe.com/ with promo code
ПИЗДЕЦ
you would get 30gb - https://www.hotspotshield.com/blog/privacy-security-for-ukraine
- https://www.vpnunlimited.com/stop-russian-aggression
Найкраще - це на Росію. Але інші країни також підійдуть. Головне - не залишатись у кіберпросторі України!
- Качаємо свою платформу:
- Розпаковуємо архів
- Запускаємо файл всередині
- Готово!
Може бути застереження - “Компьютер не може підтвердити походження файлу”. Ігноруємо його, запускаємо все одно
docker run ghcr.io/arriven/db1000n
Вам потрібно лише тримати увімкненим VPN, свій ком’ютер і цю програму на ньому. Наші спеціалісти координують атаки без відволікання вас від справ.
Switch to Russia if possible. Don’t use Ukraine as a VPN location! But any other country or VPN location is okay. Stay safe!
- Download application for your platform:
- Unzip the archive
- Launch the file inside the archive
- Done!
You can get warnings from your computer about the file - ignore them. Our software is open source. It can be checked and compiled by you yourself.
docker run ghcr.io/arriven/db1000n
You need to keep your computer active, use VPN and make sure that the application is up and running. Our experts coordinate our attacks remotely without disturbing and interrupting you. Thanks for your help!
Developed by Arriven (https://github.com/Arriven)
This is a simple distributed load generation client written in go. It is able to fetch simple json config from a local or remote location. The config describes which load generation jobs should be launched in parallel. I do not intend to copy or replace it but rather provide a simple open source option. Feel free to use it in your load tests (wink-wink)
The software is provided as is under no guarantee. I will update both the repo and this readme as I go during following days (date of writing this is 26th of February 2022, third day into russian invasion into Ukraine)
Synflood implementation is taken from https://github.com/bilalcaliskan/syn-flood and slightly patched. I couldn't just import the package as all the functionality code was in an internal package preventing import into other modules. Will figure it out better later (sorry to the owner).
go to releases page and install latest version for your os
run command in your terminal
go install github.com/Arriven/db1000n@latest
~/go/bin/db1000n
how to install docker?
https://docs.docker.com/get-docker/
make sure you've set all available resources to docker
https://docs.docker.com/desktop/windows/#resources https://docs.docker.com/desktop/mac/#resources
if you don't want to use VPN from within docker container, set --env "VPN_ENABLED=
in run.sh
if you want to to use VPN from within docker container:
- place your
.ovpn
or.conf
files intoopenvpn/
directory - if there's more than one
.ovpn
or.conf
file, random configuration will be picked - set
--env "VPN_ENABLED=true
inrun.sh
- update
--env "OPENVPN_USERNAME="
and--env "OPENVPN_PASSWORD="
inrun.sh
with your credentials
./run.sh
if you want to use different VPN providers (meaning different OPENVPN_USERNAME
and OPENVPN_PASSWORD
credentials), do the following:
- set
--env "VPN_ENABLED=true
inrun.sh
- remove
--env "OPENVPN_USERNAME="
and--env "OPENVPN_PASSWORD="
fromrun.sh
- place your
openvpn-provider-1.conf
intoopenvpn/
directory - find the line in your
openvpn-provider-1.conf
where it saysauth-user-pass
and replace withauth-user-pass provider1.txt
- create a text file in
openvpn/provider1.txt
with two lines:
<your provider 1 username>
<your provider 1 password>
- repeat steps above for multiple providers
for experienced users, see instructions in helm/
run install script directly into the shell (useful for install through ssh)
curl https://raw.githubusercontent.com/Arriven/db1000n/main/install.sh | sh
the command above will detect the os and architecture, dowload the archive, validate it, and extract db1000n executable into the working directory. You can then run it via this command
./db1000n
Enter to k8s simple deployment directory
$ cd k8s-manifest/simple
Create deployment
$ kubectl create -f ./
Scale it, if you have resources
$ kubectl scale deployment/db1000n --replicas=10 -n db1000n
Get and label nodes where you need to run db1000n. It should be nodes at least with 2CPU and 2GB of RAM, CPU resources in priority for db1000n:
$ kubectl get nodes
Select nodes where you want to run db1000n from the output and label it:
$ kubectl label nodes ${YOUR_UNIQUE_NODE_NAME} db1000n=true
Enter to k8s advanced manifest directory
$ cd k8s-manifest/advanced
Create DaemonSet with db1000n:
$ kubectl create -f ./
How does it work? DaemonSet will create db1000n on each node which was labeled as db1000n=true, only one pod per node. Where it can be useful? In large cluster types what can be autoscaled horizontally, for example, GKE standard k8s cluster from the free tier purposes
Usage of /tmp/go-build781992389/b001/exe/main:
-b string
path to a backup config file in case primary one is unavailable (default "https://raw.githubusercontent.com/db1000n-coordinators/LoadTestConfig/main/config.json")
-c string
path to a config file, can be web endpoint (default "https://raw.githubusercontent.com/db1000n-coordinators/LoadTestConfig/main/config.json")
-h print help message and exit
-l int
logging level. 0 - Debug, 1 - Info, 2 - Warning, 3 - Error (default 1)
-m string
path where to dump usage metrics, can be URL or file, empty to disable
-r duration
refresh timeout for updating the config (default 1m0s)
The config is expected to be in json format and has following configuration values:
jobs
-[array]
array of attack job definitions to run, should be defined inside the root objectjobs[*]
-[object]
single job definition as json objectjobs[*].type
-[string]
type of the job (determines whhich attack function to launch). Can behttp
,tcp
,udp
,syn-flood
, orpacketgen
jobs[*].count
-[number]
the amount of instances of the job to be launched, automatically set to 1 if no or invalid value is specifiedjobs[*].args
-[object]
arguments to pass to the job. Depends onjobs[*].type
http
args:
method
-[string]
http method to use (passed directly to gohttp.NewRequest
)path
-[string]
url path to use (passed directly to gohttp.NewRequest
)body
-[object]
http payload to use (passed directly to gohttp.NewRequest
)headers
-[object]
key-value map of http headersclient
-[object]
http client config for the jobclient.tls_config
-[object]
tls config for transport (InsecureSkipVerify is true by default)client.proxy_urls
-[array]
string urls for proxies to use (chosen randomly for each request)client.timeout
-[time.Duration]
client.max_idle_connections
-[number]
tcp
and udp
shared args:
address
-[string]
network host to connect to, can be eitherhostname:port
orip:port
body
-[object]
json data to be repeatedly sent over the network
http
, tcp
, and udp
shared args:
interval_ms
-[number]
interval between requests in milliseconds. Defaults to 0 (Care, in case of udp job it might generate the data faster than your OS/network card can process it)count
-[number]
limit the amount of requests to send with this job invocation. Defaults to 0 (no limit). Note: if config is refreshed before this limit is reached the job will be restarted and the counter will be reset
syn-flood
args:
host
-[string]
host to attack, can be either DNS name or IPport
-[number]
port to attackpayload_length
-[number]
refer to original syn-flood package docsflood_type
-[string]
type of flood to send, can besyn
,ack
,synack
, andrandom
Warning: packetgen
requires root privilleges to run
packetgen
args:
host
-[string]
host to attack, can be either DNS name or IPport
-[string]
numerical value of port to attack (string to allow template generation)payload
-[string]
payload to include into packetsethernet
-[object]
ethernet layer configurationethernet.src_mac
-[string]
ethernet.dst_mac
-[string]
ip
-[object]
ip layer configurationip.src_ip
-[string]
ip.dst_ip
-[string]
udp
-[object]
udp layer configuration (disables tcp if present)udp.src_port
-[number]
udp.dst_port
-[number]
tcp
-[object]
tcp layer configuration (excluded if udp is present)tcp.src_port
-[number]
tcp.dst_port
-[number]
tcp.seq
-[number]
tcp.ack
-[number]
tcp.window
-[number]
tcp.urgent
-[number]
tcp.flags
-[object]
flags for tcp (every flag has it's respective name)
Warning: slow-loris
from testconfig.json is not yet finished and may overload the app due to not handling config refreshes
Almost every leaf [string]
or [object]
parameter can be templated with go template syntax. I've also added couple helper functions (list will be growing):
random_uuid
random_int
random_int_n
random_ip
random_payload
random_mac_addr
random_port
local_ip
local_mac_addr
base64_encode
base64_decode
Please refer to official go documentation and code for these for now