Anevicon is a high-performant traffic generator, designed to be as convenient and reliable as it is possible.
It sends numerous UDP packets to a server, thereby simulating an activity that can be produced by your end users or a group of hackers.
This tool can be also used as a bot to build a botnet for simulating UDP flood attacks (but only for educational and pentesting purposes).
This is achieved by the Anevicon Core Library with which this program depends on.
- Written in Rust. How you can see, Anevicon is completely written in Rust, which means that it leverages high-level safeness and bare-metal performance, achieved by zero-cost abstractions.
- Linux acceleration. Anevicon is developed for Linux-based operating systems not just like that. It interacts with the kernel using the sendmmsg system call, transmitting multiple messages at once.
- Functionality. I’ve tried to implement as many things to make a multi-functional tool and stay simple at the same time. Such features as multiple tests, verbosity levels, IP spoofing and many more are supported.
Currently, this project requires unstable standard library features, so this is why you must switch to the nightly channel to avoid compilation errors:
$ rustup override set nightly
Building from crates.io
$ cargo install anevicon
Building from sources
$ git clone https://github.com/Gymmasssorla/anevicon.git $ cd anevicon $ cargo build –release
The easiest way to run Anevicon on your system is to download the pre-compiled binaries from the existing releases, which doesn’t require any external software (unlike the two previous approaches).
Temirkhan Myrzamadi firstname.lastname@example.org
An UDP-based server stress-testing tool, written in Rust.
anevicon [FLAGS] [OPTIONS] –receiver …
-b, –allow-broadcast Allow sockets to send packets to a broadcast
-h, –help Prints help information
-V, –version Prints version information
A format for displaying local date and time in log messages. Type
man strftime to see the format specification
Specifying a different format with days of weeks might be helpful
when you want to test a server more than one day. [default: %X]
Repeatedly send a random-generated packet with a specified bytes
length. The default is 32768
A count of packets for sending. When this limit is reached, then the
program will exit [default: 18446744073709551615]
A count of packets which the program will send using only one
syscall. After the operation completed, a test summary will have
It is not recommended to set this option to a low value for some
performance reasons. [default: 600]
-r, –receiver …
A receiver of generated traffic, specified as an IP-address and a
port number, separated by a colon.
This option can be specified several times to test multiple
receivers in parallel mode.
All receivers will be tested identically. Run multiple instances of
this program to describe specific characteristics for each receiver.
Interpret the specified file content as a single packet and
repeatedly send it to each receiver
Interpret the specified UTF-8 encoded text message as a single
packet and repeatedly send it to each receiver
A time interval between sendmmsg syscalls. This option can be used
to decrease test intensity [default: 0secs]
A timeout of sending every single packet. If a timeout is reached,
then a packet will be sent later. [default: 10secs]
A sender of generated traffic, specified as an IP-address and a port
number, separated by a colon [default: 0.0.0.0:0]
A whole test duration. When this limit is reached, then the program
Exit might occur a few seconds later because of long sendmmsg
syscalls. For more precision, decrease the
value. [default: 64years 64hours 64secs]
Enable one of the possible verbosity levels. The zero level doesn’t
print anything, and the last level prints everything [default: 3]
[ possible values: 0, 1, 2, 3, 4, 5 ]
A waiting time span before a test execution used to prevent a launch
of an erroneous (unwanted) test [default: 5secs]
For more information see https://github.com/Gymmasssorla/anevicon.
Also Read – Most Popular Hacking Tools in 2018
Using as a program
All you need is to provide the testing server address, which consists of an IP address and a port number, separated by the colon character. By default, all sending sockets will have your local address:
# Test the 80 port of the example.com site using your local address $ anevicon –receiver 220.127.116.11:80
Anevicon also has the functionality to test multiple receivers in
parallel mode, thereby distributing the load on your processor cores. To
do so, just specify the
--receiver option several times.
# Test the 80 port of example.com and the 13 port of google.com in parallel $ anevicon –receiver 18.104.22.168:80 –receiver 22.214.171.124:13
Using the IP spoofing technique, hackers can protect their bandwidth
from server response messages and hide their real IP address. You can
imitate it via the
--sender command-line option, as described below:
# Test the 80 port of the example.com site using its own IP address $ anevicon –receiver 126.96.36.199:80 –sender 188.8.131.52:80
Note that the command above might not work on your system due to the
security reasons. To make your test deterministic, there are two end
--packets-count (a test duration and a packets count, respectively):
# Test the 80 port of the example.com site with the two limit options $ anevicon –receiver 184.108.40.206:80 –test-duration 3min –packets-count 7000
Note that the test below will end when, and only when one of two specified end conditions become true. And what is more, you can specify a global packet length in bytes:
# Test the 80 port of example.com with the packet length of 4092 bytes $ anevicon –receiver 220.127.116.11:80 –packet-length 4092
By default, Anevicon will generate a random packet with a specified
size. In some kinds of UDP-based tests, packet content makes sense, and
this is how you can specify it using the
# Test the 80 port of example.com with the custom file ‘message.txt’ $ anevicon –receiver 18.104.22.168:80 –send-file message.txt
# Test the 80 port of example.com with the custom text message $ anevicon –receiver 22.214.171.124:80 –send-message “How do you do?”
In some situations, you don’t need to transmit the maximum possible
amount of packets, you might want to decrease the intensity of packets
sending. To do so, there is one more straightforward option called
# Test the example.com waiting for 270 microseconds after each sendmmsg syscall $ anevicon –receiver 126.96.36.199:80 –send-periodicity 270us
Anevicon supports a few verbosity levels from zero to five inclusively. Zero level prints nothing, first level prints only errors, second level adds warnings, third adds notifications, fourth adds debugs, and fifth – traces.
# Test the 80 port of example.com using the fourth verbosity level $ anevicon –receiver 188.8.131.52:80 –verbosity 4
You can explicitly specify your custom date-time format that is used for displaying every log message. Setting a format with days and weeks might be helpful if you want to test something more than one day:
# Test with the format displaying months, days, years, hours, minutes, and seconds $ anevicon –receiver 184.108.40.206:80 –date-time-format “%D %X”
Packets per one syscall
For performance reasons, Anevicon uses the sendmmsg syscall by default, reducing CPU usage significantly. Specifying a number of packets being sent per a syscall is also supported.
# Test the 80 port of the example.com site with 1200 packets per one syscall $ anevicon –receiver 220.127.116.11:80 –packets-per-syscall 1200
Network operations sometimes are not performed momentarily. This is why, the program supports the
--send-timeout option which represents a duration, after which an error will be printed if a packet isn’t sent.
# Test the 80 port of the example.com site using the timeout of 200 milliseconds $ anevicon –receiver 18.104.22.168:80 –send-timeout 200ms
Waiting before a test
The most vulnerable element of a system is an object sitting between a
computer and a chair. So to prevent executing an erroneous test, there
--wait option which waits five seconds by default:
# Test the example.com site waiting 30 seconds before the execution $ anevicon –receiver 22.214.171.124:80 –wait 30seconds
Credit: Temirkhan Myrzamadi