# Ddosify | High Performance ddos Attack Tool

**URL:** <https://onehack.st/t/ddosify-high-performance-ddos-attack-tool/212003>\
**Category:** Tools & Scripts\
**Tags:** learning, tools\
**Created:** [January 12, 2022, 8:04pm UTC](https://onehack.st/t/ddosify-high-performance-ddos-attack-tool/212003 "2022-01-12T20:04:00Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![TheStrength](https://onehack.st/user_avatar/onehack.st/thestrength/32/46753_2.png) [@TheStrength](https://onehack.st/u/TheStrength)\
**Post date:** [January 12, 2022, 8:04pm UTC](https://onehack.st/t/ddosify-high-performance-ddos-attack-tool/212003/1 "2022-01-12T20:04:00Z")

</div>

# [![Ddosify logo](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/ddosify-logo.svg)](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/ddosify-logo.svg)

Ddosify - High-performance load testing tool

[![ddosify latest version](https://camo.githubusercontent.com/138de14bdb165b2e4a8994067c9e050b4367c3a8c9ec181f13dfda94f8d22f0e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f64646f736966792f64646f736966793f7374796c653d666f722d7468652d6261646765266c6f676f3d67697468756226636f6c6f723d6f72616e6765)](https://github.com/ddosify/ddosify/releases) [![ddosify build result](https://camo.githubusercontent.com/b2715571b6f0f99fe4f081f5d616a00db28835e1568e114aae4c943326705f8e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f64646f736966792f64646f736966792f546573743f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562)](https://github.com/ddosify/ddosify/actions/workflows/test.yml) [![golang version](https://camo.githubusercontent.com/e742a3e5e86bba9b26cac3b21b0c71f8493fa962a538ed22465958c58fffeeec/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f676f2d6d6f642f676f2d76657273696f6e2f64646f736966792f64646f736966793f7374796c653d666f722d7468652d6261646765266c6f676f3d676f)](https://pkg.go.dev/go.ddosify.com/ddosify) [![go coverage](https://camo.githubusercontent.com/0aa571ce2c686160c5709091aceb93b71ceaf7fd6c24183635237a61cb69e88a/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f64646f736966792f64646f736966793f7374796c653d666f722d7468652d6261646765266c6f676f3d636f6465636f76)](https://app.codecov.io/gh/ddosify/ddosify) [![go report](https://camo.githubusercontent.com/f71e5db06753d8481b5da9a262ab3ec80beba29f5da080ea04ed09f3d402b058/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f64646f736966792f64646f736966793f7374796c653d666f722d7468652d6261646765266c6f676f3d676f)](https://goreportcard.com/report/github.com/ddosify/ddosify) [![ddosify license](https://camo.githubusercontent.com/a02117779f729175ddbc2d588783ec49045aafc3d96b3039bdf9db0636c65bbf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c4943454e53452d4147504c2d2d332e302d6f72616e67653f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6f6e65)](https://github.com/ddosify/ddosify/blob/master/LICENSE) [![ddosify discord server](https://camo.githubusercontent.com/0c310765cb58075a1dd860aab33eea6c463a83095241f051c66f4f3b279f42ae/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3839383532333134313738383238373031373f7374796c653d666f722d7468652d6261646765266c6f676f3d646973636f7264266c6162656c3d444953434f5244)](https://discord.gg/9KdnrSUZQg) [![ddosify docker image](https://camo.githubusercontent.com/82f3e089d403cfb100fdfb3501fcba92bd0bed40851c1f38ecfb6c6bc58a4acf/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f762f64646f736966792f64646f736966793f7374796c653d666f722d7468652d626164676526636f6c6f723d6f72616e6765266c6f676f3d646f636b6572266c6162656c3d646f636b6572)](https://hub.docker.com/r/ddosify/ddosify)

[![Ddosify - High-performance load testing tool quick start](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/ddosify-quick-start.gif)](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/ddosify-quick-start.gif)

## Features

✔ Protocol Agnostic - Currently supporting _HTTP, HTTPS, HTTP/2_. Other protocols are on the way.

✔ Scenario-Based - Create your flow in a JSON file. Without a line of code!

✔ Different Load Types - Test your system’s limits across different load types.

## Installation

`ddosify` is available via [Docker](https://hub.docker.com/r/ddosify/ddosify), [Homebrew Tap](https://github.com/ddosify/ddosify#homebrew-tap-macos-and-linux), and downloadable pre-compiled binaries from the [releases page](https://github.com/ddosify/ddosify/releases/latest) for macOS, Linux and Windows.

### Docker

docker run -it --rm ddosify/ddosify

### Homebrew Tap (macOS and Linux)

brew install ddosify/tap/ddosify

### apk, deb, rpm, Arch Linux packages

- For arm architectures change `ddosify_amd64` to `ddosify_arm64` or `ddosify_armv6`.
- Superuser privilege is required.

# For Redhat based (Fedora, CentOS, RHEL, etc.) rpm -i [https://github.com/ddosify/ddosify/releases/latest/download/ddosify\_amd64.rpm](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](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](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](https://aur.archlinux.org/ddosify.git) cd ddosify makepkg -sri

### Using the convenience script (macOS and Linux)

- The script requires root or sudo privileges to move ddosify binary to `/usr/local/bin`.
- The script attempts to detect your operating system (macOS or Linux) and architecture (arm64, x86, amd64) to download the appropriate binary from the [releases page](https://github.com/ddosify/ddosify/releases/latest).
- By default, the script installs the latest version of `ddosify`.
- If you have problems, check [common issues](https://github.com/ddosify/ddosify#common-issues)
- Required packages: `curl` and `sudo`

curl -sSfL [https://raw.githubusercontent.com/ddosify/ddosify/master/scripts/install.sh](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](http://go.ddosify.com/ddosify@latest)

## Easy Start

This section aims to show you how to use Ddosify without deep dive into its details easily.

1. 
### Simple load test

```auto
 ddosify -t target_site.com

```

The above command runs a load test with the default value that is 100 requests in 10 seconds.  
2. ### Using some of the features

```auto
 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.  
3. ### Usage for CI/CD pipelines (JSON output)

```auto
 ddosify -t target_site.com -o stdout-json | jq .avg_duration

```

Ddosify outputs the result in JSON format. Then `jq` (or any other command-line JSON processor) fetches the `avg_duration`. The rest depends on your CI/CD flow logic.  
4. ### Scenario based load test

```auto
 ddosify -config config_examples/config.json

```

Ddosify first sends _HTTP/2 POST_ request to _https://test\_site1.com/endpoint\_1_ using basic auth credentials _test\_user:12345_ over proxy _http://proxy\_host.com:proxy\_port_ and with a timeout of _3_ seconds. Once the response is received, HTTPS GET request will be sent to _https://test\_site1.com/endpoint\_2_ along with the payload included in _config\_examples/payload.txt_ file with a timeout of 2 seconds. This flow will be repeated _20_ times in _5_ seconds and response will be written to _stdout_.

## Details

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.

### CLI Flags

ddosify [FLAG]

| Flag | Description | Type | Default | Required? |
| --- | --- | --- | --- | --- |
| `-t` | Target website URL. Example: [https://ddosify.com](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. Supported outputs are [_stdout, stdout-json_] Other output types will be added. | `string` | `stdout` | No |
| `-l` | [Type](https://github.com/ddosify/ddosify#load-types) of the load test. Ddosify supports 3 load types. | `string` | `linear` | No |
| `-config` | [Config File](https://github.com/ddosify/ddosify#config-file) of the load test. | `string` | - | No |
| `-version` | Prints version, git commit, built date (utc), go information and quit | - | - | No |

### Load Types

#### Linear

ddosify -t target\_site.com -l linear

Result:

[![linear load](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/linear.gif)](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/linear.gif)

_Note:_ If the request count is too low for the given duration, the test might be finished earlier than you expect.

#### Incremental

ddosify -t target\_site.com -l incremental

Result:

[![incremental load](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/incremental.gif)](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/incremental.gif)

#### Waved

ddosify -t target\_site.com -l waved

Result:

[![waved load](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/waved.gif)](https://raw.githubusercontent.com/ddosify/ddosify/master/assets/waved.gif)

### Config File

Config file lets you use all capabilities of Ddosify.

The features you can use by config file;

- Scenario creation
- Custom load type creation
- Payload from a file
- Multipart/form-data payload
- Extra connection configuration, like _keep-alive_ enable/disable logic
- HTTP2 support

Usage;

```auto
ddosify -config <json_config_path>

```

There is an example config file at [config\_examples/config.json](https://github.com/ddosify/ddosify/blob/master/config_examples/config.json). This file contains all of the parameters you can use. Details of each parameter;

- `request_count` _optional_This 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` _optional_This is the equivalent of the `-l` flag.
- `duration` _optional_This is the equivalent of the `-d` flag.
- `manual_load` _optional_If 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` _optional_This is the equivalent of the `-P` flag.
- `output` _optional_This is the equivalent of the `-o` flag.
- `steps` _mandatory_This 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` _mandatory_Each step must have a unique integer id.
  - `url` _mandatory_This is the equivalent of the `-t` flag.
  - `name` _optional_ Name of the step.
  - `protocol` _optional_This is the equivalent of the `-p` flag.
  - `method` _optional_This is the equivalent of the `-m` flag.
  - `headers` _optional_List of headers with key:value format.
  - `payload` _optional_This is the equivalent of the `-b` flag.
  - `payload_file` _optional_If you need a long payload, we suggest using this parameter instead of `payload`.
  - `payload_multipart` _optional_ Use this for `multipart/form-data` Content-Type.Accepts list of `form-field` objects, structured as below;

{ “name”: [field-name], “value”: [field-value|file-path|url], “type”: \<text|file\>, // Default “text” “src”: \<local|remote\> // Default “local” }

**Example:** Sending form name-value pairs;

“payload\_multipart”: [{ “name”: “[field-name]”, “value”: “[field-value]” } ]

**Example:** Sending form name-value pairs and a local file;

“payload\_multipart”: [{ “name”: “[field-name]”, “value”: “[field-value]”, }, { “name”: “[field-name]”, “value”: “./test.png”, “type”: “file” } ]

**Example:** Sending form name-value pairs and a local file and a remote file;

“payload\_multipart”: [{ “name”: “[field-name]”, “value”: “[field-value]”, }, { “name”: “[field-name]”, “value”: “./test.png”, “type”: “file” }, { “name”: “[field-name]”, “value”: “[http://test.com/test.png](http://test.com/test.png)”, “type”: “file”, “src”: “remote” } ]

_Note:_ Ddosify adds `Content-Type: multipart/form-data; boundary=[generated-boundary-value]` header to the request when using `payload_multipart`.

- `timeout` _optional_This is the equivalent of the `-T` flag.
- `sleep` _optional_ Sleep duration(ms) before executing the next step. Can be an exact duration or a range. **Example:** Sleep 1000ms after step-1;

“steps”: [{ “id”: 1, “url”: “[target.com/endpoint1](http://target.com/endpoint1)”, “sleep”: “1000” }, { “id”: 2, “url”: “[target.com/endpoint2](http://target.com/endpoint2)”, } ]

**Example:** Sleep between 300ms-500ms after step-1;

“steps”: [{ “id”: 1, “url”: “[target.com/endpoint1](http://target.com/endpoint1)”, “sleep”: “300-500” }, { “id”: 2, “url”: “[target.com/endpoint2](http://target.com/endpoint2)”, } ]

- `auth` _optional_Basic 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

### macOS Security Issue

```auto
"ddosify" can’t be opened because Apple cannot check it for malicious software.

```

- Open `/usr/local/bin`
- Right click `ddosify` and select Open
- Select Open
- Close the opened terminal

## Communication

You can join our [Discord Server](https://discord.gg/9KdnrSUZQg) for issues, feature requests, feedbacks or anything else.

## More

This repository includes the single-node version of the Ddosify Loader. Ddosify Cloud will be available soon. It will support multi-location based distributed load testing and more features.

Join the waitlist: [https://ddosify.com](https://ddosify.com/)

## License

Licensed under the AGPLv3: [https://www.gnu.org/licenses/agpl-3.0.html](https://www.gnu.org/licenses/agpl-3.0.html)

## GitHub:

[https://github.com/ddosify/ddosify](https://github.com/ddosify/ddosify)
