Skip to content

Commit

Permalink
feat(#2947): add numbered messages feature to syslog simulator
Browse files Browse the repository at this point in the history
  • Loading branch information
jmv74211 committed Sep 28, 2022
1 parent 96449db commit 6d3965a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
27 changes: 18 additions & 9 deletions deps/wazuh_testing/wazuh_testing/scripts/syslog_simulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@

TCP = 'tcp'
UDP = 'udp'
DEFAULT_MESSAGE = 'Login failed: admin, test'
DEFAULT_MESSAGE = 'Login failed: admin, test\n'
DEFAULT_MESSAGE_SIZE = len(DEFAULT_MESSAGE.encode('utf-8'))
LOGGER = logging.getLogger('syslog_simulator')
TCP_LIMIT = 1000
TCP_LIMIT = 5000
UDP_LIMIT = 200


Expand All @@ -25,11 +26,11 @@ def validate_parameters(parameters):

if parameters.messages_number <= 0:
LOGGER.error(f"The number of messages parameter has to be greater than 0")
return sys.exit(1)
sys.exit(1)

if parameters.eps > 0 and parameters.eps > protocol_limit:
LOGGER.error(f"You can't select eps greather than {protocol_limit}")
return sys.exit(1)
sys.exit(1)


def get_parameters():
Expand All @@ -55,6 +56,10 @@ def get_parameters():
help='Sender protocol', required=False, default='tcp', choices=['tcp', 'udp'],
dest='protocol')

arg_parser.add_argument('--numbered-messages', metavar='<numbered_messages>', required=False, type=int,
help='Add number of message at the end of its content starting with the indicated number '
'and increasing by 1 for each of them', dest='numbered_messages', default=-1)

arg_parser.add_argument('-e', '--eps', metavar='<eps>', type=int,
help='Event per second', required=False, default=-1, dest='eps')

Expand All @@ -63,7 +68,7 @@ def get_parameters():
return arg_parser.parse_args()


def send_messages(message, num_messages, eps, address='locahost', port=514, protocol=TCP):
def send_messages(message, num_messages, eps, numbered_messages=-1, address='locahost', port=514, protocol=TCP):
sent_messages = 0
custom_message = f"{message}\n" if message[-1] != '\n' not in message else message
protocol_limit = TCP_LIMIT if protocol == TCP else UDP_LIMIT
Expand All @@ -83,10 +88,14 @@ def send_messages(message, num_messages, eps, address='locahost', port=514, prot

# Send the specified number messages
while sent_messages < num_messages:
# Update the message according to the parameters
final_message = f"{custom_message[:-1]} - {sent_messages + numbered_messages}\n" \
if numbered_messages != -1 else custom_message

if protocol == TCP:
sock.send(custom_message.encode())
sock.send(final_message.encode())
else:
sock.sendto(custom_message.encode(), (address, port))
sock.sendto(final_message.encode(), (address, port))
sent_messages += 1

# Wait until next batch
Expand All @@ -104,8 +113,8 @@ def main():
set_logging(parameters.debug)
validate_parameters(parameters)

send_messages(parameters.message, parameters.messages_number, parameters.eps, parameters.address, parameters.port,
parameters.protocol)
send_messages(parameters.message, parameters.messages_number, parameters.eps, parameters.numbered_messages,
parameters.address, parameters.port, parameters.protocol)


if __name__ == "__main__":
Expand Down
4 changes: 3 additions & 1 deletion deps/wazuh_testing/wazuh_testing/tools/run_simulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@ def syslog_simulator(parameters):
run_parameters += f"-e {parameters['eps']} " if 'eps' in parameters else ''
run_parameters += f"--protocol {parameters['protocol']} " if 'protocol' in parameters else ''
run_parameters += f"-n {parameters['messages_number']} " if 'messages_number' in parameters else ''
run_parameters += f"-m {parameters['message']} " if 'message' in parameters else ''
run_parameters += f"-m '{parameters['message']}' " if 'message' in parameters else ''
run_parameters += f"--numbered-messages {parameters['numbered_messages']} " if 'numbered_messages' in parameters \
else ''
run_parameters = run_parameters.strip()

# Run the syslog simulator tool with custom parameters
Expand Down

0 comments on commit 6d3965a

Please sign in to comment.