imalse / scenario / ddos_flooding / config.py

"""

This file is used to configure the botmaster, clients and server in the file
exfiltration scenario.

"""

from core.cmd.description import ServerDescription, ClientDescription 
from core.cmd.description import BotmasterDescription

class Botmaster(BotmasterDescription):
    
    """
    
    This class is the subclass of the default botmaster description. The
    default settings are:
    
    server_address = '127.0.0.1'
    server_port = 3333
    request_timeout = 10
    initial = 'waiting'
    start_action = 'request_connect'
    self.master_password = '1234'
    self.interval = 2 
    self.num_commands = 1
    self.command = None
    
    There are three types of flooding attacks:
    Ping flooding - PingFloodCmd
    Http get request flooding - HttpGetFloodCmd
    Tcp syn flooding - TcpSynFloodCmd
    
    """
    
    def __init__(self):
        """Initialize the botmaster description."""
        BotmasterDescription.__init__(self)
        self.command = TcpSynFloodCmd()

class Client(ClientDescription):
    
    """
    
    This class is the subclass of the default client description. The
    default settings are:
    
    server_address = '127.0.0.1'
    server_port = 3333
    request_timeout = 10
    initial = 'disconn'
    start_action = 'request_connect'
    
    """
    
    def __init__(self):
        """Initialize the client description."""
        ClientDescription.__init__(self)
        
class Server(ServerDescription):
    
    """
    
    This class is the subclass of the default client description. The
    default settings are:
    
    server_address = '127.0.0.1'
    server_port = 3333
    request_timeout = 10    
    initial = 'waiting'
    start_action = 'initialize'
    self.master_password = '1234'
    
    """
    
    def __init__(self):
        """Initialize the server description."""
        ServerDescription.__init__(self)
        
class PingFloodCmd(object):
   
    """
    
    This class specifies the ping command that is send to the bots connected
    to the server.
    
    """
    
    def __init__(self):
        """Specify the settings here."""
        self.event = 'forward_to_bots'
        self.bot_event = 'ping_flood'
        self.hostname = '192.168.1.1'       
        
        self.packet_size = 56  
        self.interval = 0.0001
        self.verbose = True
        
        #Used in netns and emulation mode
        self.num_packets = 100000 
        
        #Only used in emulation mode
        self.timeout = 1000
        
        #Only used in netns mode
        self.preload = 10       
        
class HttpGetFloodCmd(object):
    """
    
    This class specifies the http get flood command that is send to the 
    bots connected to the server.
    
    """
    
    def __init__(self):
        """Specify the settings here."""
        self.event = 'forward_to_bots'
        self.bot_event = 'get_request_flood'
        self.hostname = 'google.com'
        self.port = 80
        self.num_requests = 10000
        self.num_threads = 10
        self.speed = 1   
        
class TcpSynFloodCmd(object):
    """
    
    This class specifies the tcp syn flood command that is send to the 
    bots connected to the server.
    
    """
    def __init__(self):         
        """Specify the settings here."""
        self.event = 'forward_to_bots'
        self.bot_event = 'syn_flood'
        self.hostname = '192.168.1.1'        
        self.port = 3333
        self.num_packets = 10000
        self.num_threads = 10
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.