def create_session(packet_log): """ Helper function to create a client session from a PCAP log. Sets up the sequence numbers to match with the sequence numbers in the PCAP. """ listener = MockListener() syn = packet_log[0] listener.source_port = syn.sport - 1 conn = TCPSocket(listener) conn.connect(syn.payload.dst, syn.dport) # Change the sequence number so that we can test it conn.seq = syn.seq return listener, conn
def test_tiny_session_server(): """ Test the whole tiny session, from a server POV. """ packet_log = rdpcap("test/inputs/tiniest-session.pcap") syn, syn_ack = packet_log[:2] listener = MockListener() conn = TCPSocket(listener) conn.seq = syn_ack.seq conn.bind(syn.payload.dst, syn.dport) check_replay(listener, conn, packet_log)
def test_bind_handshake(): """ We can do a handshake when we're the server (someone else initiates the SYN). """ packet_log = rdpcap("test/inputs/tiniest-session.pcap") syn, syn_ack, ack, client_fin_ack, server_fin_ack, client_ack = packet_log listener = MockListener() conn = TCPSocket(listener) conn.seq = syn_ack.seq conn.bind(syn.payload.dst, syn.dport) listener.dispatch(syn) listener.dispatch(ack) assert len(listener.received_packets) == 1 assert conn.state == "ESTABLISHED" check_mostly_same(listener.received_packets[0], syn_ack)