AttackParameters.py 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from enum import Enum
  2. class Parameter(Enum):
  3. """
  4. Defines the shortname for attack parameters. The shortname may be used for attack parameter specification
  5. when calling ID2T via the command line.
  6. """
  7. # recommended type: IP address -------------------------------
  8. IP_SOURCE = 'ip.src' # source IP address
  9. IP_DESTINATION = 'ip.dst' # destination IP address
  10. IP_DNS = 'ip.dns' # IP address of DNS server
  11. # recommended type: MAC address ------------------------------
  12. MAC_SOURCE = 'mac.src' # MAC address of source
  13. MAC_DESTINATION = 'mac.dst' # MAC address of destination
  14. # recommended type: Port -------------------------------------
  15. PORT_OPEN = 'port.open' # open ports
  16. PORT_DESTINATION = 'port.dst' # destination ports
  17. PORT_SOURCE = 'port.src' # source ports
  18. # recommended type: Integer positive -------------------------
  19. PACKETS_LIMIT = 'packets.limit'
  20. NUMBER_ATTACKERS = 'attackers.count'
  21. ATTACK_DURATION = 'attack.duration' # in seconds
  22. VICTIM_BUFFER = 'victim.buffer' # in packets
  23. TARGET_URI = 'target.uri'
  24. NUMBER_INITIATOR_BOTS = 'bots.count'
  25. INTERVAL_SELECT_START = 'interval.selection.start'
  26. INTERVAL_SELECT_END = 'interval.selection.end'
  27. # recommended type: domain -----------------------------------
  28. TARGET_HOST = 'target.host'
  29. # recommended type: Float ------------------------------------
  30. PACKETS_PER_SECOND = 'packets.per-second' # packets per second
  31. INJECT_AT_TIMESTAMP = 'inject.at-timestamp' # unix epoch time (seconds.millis) where attack should be injected
  32. # recommended type: Packet Position ----------------------------------
  33. INJECT_AFTER_PACKET = 'inject.after-pkt' # packet after which attack should be injected
  34. # recommended type: boolean --------------------------------
  35. PORT_DEST_SHUFFLE = 'port.dst.shuffle' # shuffles the destination ports if a list of ports is given
  36. PORT_DEST_ORDER_DESC = 'port.dst.order-desc' # uses a descending port order instead of a ascending order
  37. IP_SOURCE_RANDOMIZE = 'ip.src.shuffle' # randomizes the sources IP address if a list of IP addresses is given
  38. PORT_SOURCE_RANDOMIZE = 'port.src.shuffle' # randomizes the source port if a list of sources ports is given
  39. NAT_PRESENT = 'nat.present' # if NAT is active, external computers cannot initiate a communication in MembersMgmtCommAttack
  40. TTL_FROM_CAIDA = 'ttl.from.caida' # if True, TTLs are assigned based on the TTL distributions from the CAIDA dataset
  41. # recommended type: Filepath ------------------------------------
  42. FILE_CSV = 'file.csv' # filepath to CSV containing a communication pattern
  43. FILE_XML = 'file.xml' # filepath to XML containing a communication pattern
  44. # recommended type: CommType ------------------------------------
  45. COMM_TYPE = "comm.type" # the locality of bots in botnet communication (e.g. local, external, mixed)
  46. # recommended type: Percentage (0.0-1.0) ------------------------------------
  47. IP_REUSE_TOTAL = 'ip.reuse.total' # percentage of IPs in original PCAP to be reused
  48. IP_REUSE_LOCAL = 'ip.reuse.local' # percentage of private IPs in original PCAP to be reused
  49. IP_REUSE_EXTERNAL = 'ip.reuse.external' # percentage of public IPs in original PCAP to be reused
  50. # recommended type: Positive Integer between 0 and 100 ------------------------------------
  51. PACKET_PADDING = 'packet.padding'
  52. # calculate the destination port based on the hostname (like some botnets do)
  53. # otherwise the destination port is a normal ephemeral port
  54. BOTNET_DST_PORT_CALCULATION = "botnet.dstportcalculation"
  55. #recommended type: interval selection strategy, i.e. 'random', 'optimal' or 'custom' ------------------------------------
  56. INTERVAL_SELECT_STRATEGY = 'interval.selection.strategy'
  57. class ParameterTypes(Enum):
  58. """
  59. Defines types for parameters. These types may be used in the specification of allowed parameters within the
  60. individual attack classes. The type is used to verify the validity of the given value.
  61. """
  62. TYPE_IP_ADDRESS = 0
  63. TYPE_MAC_ADDRESS = 1
  64. TYPE_PORT = 2
  65. TYPE_INTEGER_POSITIVE = 3
  66. TYPE_TIMESTAMP = 4
  67. TYPE_BOOLEAN = 5
  68. TYPE_FLOAT = 6
  69. TYPE_PACKET_POSITION = 7 # used to derive timestamp from parameter INJECT_AFTER_PACKET
  70. TYPE_DOMAIN = 8
  71. TYPE_FILEPATH = 9
  72. TYPE_COMM_TYPE = 10
  73. TYPE_PERCENTAGE = 11
  74. TYPE_PADDING = 12
  75. TYPE_INTERVAL_SELECT_STRAT = 13