2019-12-14 21:08:14 +01:00
|
|
|
import sys
|
2020-05-17 16:15:16 +02:00
|
|
|
import pytest
|
2019-12-14 21:08:14 +01:00
|
|
|
# Include the root of the project
|
|
|
|
sys.path.append("..")
|
|
|
|
|
2020-05-17 16:15:16 +02:00
|
|
|
import actions.trace
|
2020-06-24 14:20:51 +02:00
|
|
|
import layers.packet
|
2020-05-17 16:15:16 +02:00
|
|
|
import actions.strategy
|
2019-12-14 21:08:14 +01:00
|
|
|
import actions.utils
|
2020-05-17 16:15:16 +02:00
|
|
|
import evolve
|
2019-12-14 21:08:14 +01:00
|
|
|
|
2020-05-17 16:15:16 +02:00
|
|
|
from scapy.all import IP, TCP
|
2019-12-14 21:08:14 +01:00
|
|
|
|
|
|
|
|
2020-05-17 16:15:16 +02:00
|
|
|
def test_trace(logger):
|
2019-12-14 21:08:14 +01:00
|
|
|
"""
|
2020-05-17 16:15:16 +02:00
|
|
|
Tests the trace action primitive.
|
2019-12-14 21:08:14 +01:00
|
|
|
"""
|
2020-05-17 16:15:16 +02:00
|
|
|
trace = actions.trace.TraceAction(start_ttl=1, end_ttl=3)
|
|
|
|
|
|
|
|
assert str(trace) == "trace{1:3}", "Trace returned incorrect string representation: %s" % str(trace)
|
2020-06-24 14:20:51 +02:00
|
|
|
packet = layers.packet.Packet(IP(src="127.0.0.1", dst="127.0.0.1")/TCP(sport=2222, dport=3333, seq=100, ack=100, flags="S"))
|
2020-05-17 16:15:16 +02:00
|
|
|
trace.run(packet, logger)
|
|
|
|
|
|
|
|
print("Testing that trace will not run twice:")
|
|
|
|
assert trace.run(packet, logger) == (None, None)
|
|
|
|
|
|
|
|
trace = actions.trace.TraceAction(start_ttl=1, end_ttl=3)
|
2020-06-24 14:20:51 +02:00
|
|
|
packet = layers.packet.Packet(TCP())
|
2020-05-17 16:15:16 +02:00
|
|
|
assert trace.run(packet, logger) == (packet, None)
|
|
|
|
|
|
|
|
s = "[TCP:flags:PA]-trace{1:3}-| \/ "
|
|
|
|
assert str(actions.utils.parse(s, logger)) == s
|
|
|
|
|
|
|
|
assert not trace.parse("10:4", logger)
|
|
|
|
assert not trace.parse("10:hi", logger)
|
|
|
|
assert not trace.parse("", logger)
|