Ddosify is a High-performance load testing tool
Features
ddosify
is available via Docker, Homebrew Tap, and downloadable pre-compiled binaries from the releases page for macOS, Linux and Windows.
docker run -it –rm ddosify/ddosify
Homebrew Tap (macOS and Linux)
brew install ddosify/tap/ddosify
apk, deb, rpm, Arch Linux packages
ddosify_amd64
to ddosify_arm64
or ddosify_armv6
.For Redhat based (Fedora, CentOS, RHEL, etc.)
rpm -i https://github.com/ddosify/ddosify/releases/latest/download/ddosify_amd64.rpm
For Debian based (Ubuntu, Linux Mint, etc.)
wget https://github.com/ddosify/ddosify/releases/latest/download/ddosify_amd64.deb
dpkg -i ddosify_amd64.deb
For Alpine
wget https://github.com/ddosify/ddosify/releases/latest/download/ddosify_amd64.apk
apk add –allow-untrusted ddosify_amd64.apk
For Arch Linux
git clone https://aur.archlinux.org/ddosify.git
cd ddosify
makepkg -sri
Using the convenience script (macOS and Linux)
/usr/local/bin
.ddosify
.curl
and sudo
curl -sSfL https://raw.githubusercontent.com/ddosify/ddosify/master/scripts/install.sh | sh
Go install from source (macOS, Linux, Windows)
go install -v go.ddosify.com/ddosify@latest
Easy Start
This section aims to show you how to use Ddosify without deep dive into its details easily.
ddosify -t target_site.com
The above command runs a load test with the default value that is 100 requests in 10 seconds.
Using some of the features
ddosify -t target_site.com -n 1000 -d 20 -p HTTPS -m PUT -T 7 -P http://proxy_server.com:80
Ddosify sends a total of 1000 PUT requests to https://target_site.com over proxy http://proxy_server.com:80 in 20 seconds with a timeout of 7 seconds per request.
Scenario based load test
ddosify -config config_examples/config.json
You can configure your load test by the CLI options or a config file. Config file supports more features than the CLI. For example, you can’t create a scenario-based load test with CLI options.
ddosify [FLAG]
Flag | Description | Type | Default | Required? |
---|---|---|---|---|
-t | Target website URL. Example: https://ddosify.com | string | – | Yes |
-n | Total request count | int | 100 | No |
-d | Test duration in seconds. | int | 10 | No |
-p | Protocol of the request. Supported protocols are HTTP, HTTPS. HTTP/2 support is only available by using a config file as described. More protocols will be added. | string | HTTPS | No |
-m | Request method. Available methods for HTTP(s) are GET, POST, PUT, DELETE, UPDATE, PATCH | string | GET | No |
-b | The payload of the network packet. AKA body for the HTTP. | string | – | No |
-a | Basic authentication. Usage: -a username:password | string | – | No |
-h | Headers of the request. You can provide multiple headers with multiple -h flag. | string | – | No |
-T | Timeout of the request in seconds. | int | 5 | No |
-P | Proxy address as host:port. -P http://user:pass@proxy_host.com:port' | string | – | No |
-o | Test result output destination. Other output types will be added. | string | stdout | No |
-l | Type of the load test. Ddosify supports 3 load types. | string | linear | No |
-config | Config File of the load test. | string | – | No |
-version | Prints version, git commit, built date (utc), go information and quit | – | – | No |
Load Types
ddosify -t target_site.com -l linear
Result:
Waved
ddosify –t target_site.com -l waved
Result:
Config File
Config file lets you use all capabilities of Ddosify.
The features you can use by config file;
Usage;
ddosify -config
There is an example config file at config_examples/config.json. This file contains all of the parameters you can use. Details of each parameter;
request_count
optionalThis is the equivalent of the -n
flag. The difference is that if you have multiple steps in your scenario, this value represents the iteration count of the steps.load_type
optionalThis is the equivalent of the -l
flag.duration
optionalThis is the equivalent of the -d
flag.manual_load
optionalIf you are looking for creating your own custom load type, you can use this feature. The example below says that Ddosify will run the scenario 5 times, 10 times, and 20 times, respectively along with the provided durations. request_count
and duration
will be auto-filled by Ddosify according to manual_load
configuration. In this example, request_count
will be 35 and the duration
will be 18 seconds. Also manual_load
overrides load_type
if you provide both of them. As a result, you don’t need to provide these 3 parameters when using manual_load
.“manual_load”: [
{“duration”: 5, “count”: 5},
{“duration”: 6, “count”: 10},
{“duration”: 7, “count”: 20}
]
proxy
optionalThis is the equivalent of the -P
flag.output
optionalThis is the equivalent of the -o
flag.steps
mandatoryThis parameter lets you create your scenario. Ddosify runs the provided steps, respectively. For the given example file step id: 2 will be executed immediately after the response of step id: 1 is received. The order of the execution is the same as the order of the steps in the config file.Details of each parameter for a step;id
mandatoryEach step must have a unique integer id.url
mandatoryThis is the equivalent of the -t
flag.protocol
optionalThis is the equivalent of the -p
flag.method
optionalThis is the equivalent of the -m
flag.headers
optionalList of headers with key:value format.payload
optionalThis is the equivalent of the -b
flag.payload_file
optionalIf you need a long payload, we suggest using this parameter instead of payload
.auth
optionalBasic authentication.“auth”: {
“username”: “test_user”,
“password”: “12345”
}
others
optional
This parameter accepts dynamic key: value pairs to configure connection details of the protocol in use.
“others”: {
“keep-alive”: true, // Default false
“disable-compression”: false, // Default true
“h2”: true, // Enables HTTP/2. Default false.
“disable-redirect”: true // Default false
}
Common Issues
“ddosify” can’t be opened because Apple cannot check it for malicious software.
/usr/local/bin
ddosify
and select Openbomber is an application that scans SBOMs for security vulnerabilities. So you've asked a vendor…
Embed a payload within a PNG file by splitting the payload across multiple IDAT sections.…
Exploit-Street, where we dive into the ever-evolving world of cybersecurity with a focus on Local…
Shadow Dumper is a powerful tool used to dump LSASS (Local Security Authority Subsystem Service)…
shadow-rs is a Windows kernel rootkit written in Rust, demonstrating advanced techniques for kernel manipulation…
Extract and execute a PE embedded within a PNG file using an LNK file. The…