Skip to content
Snippets Groups Projects
Commit 836390ee authored by Jan Sebechlebsky's avatar Jan Sebechlebsky
Browse files

Add PPTP related tests

parent 5c4c4175
No related branches found
No related tags found
No related merge requests found
##############################
% PPTP Related regression tests
##############################
+ GRE Tests
= Test IP/GRE v0 decoding
~ gre ip
data='45c00064000f0000ff2f1647c0a80c01c0a8170300000800'.decode('hex')
pkt = IP(data)
assert GRE in pkt
gre = pkt[GRE]
assert gre.chksum_present == 0
assert gre.routing_present == 0
assert gre.key_present == 0
assert gre.seqnum_present == 0
assert gre.strict_route_source == 0
assert gre.recursion_control == 0
assert gre.flags == 0
assert gre.version == 0
assert gre.proto == 0x800
= Test IP/GRE v1 decoding with PPP LCP
~ gre ip pptp ppp lcp
data='4500003c18324000402f0e5a0a0000020a0000063001880b001c9bf500000000ff03'\
'c021010100180206000000000304c2270506fbb8831007020802'.decode('hex')
pkt = IP(data)
assert GRE_PPTP in pkt
gre_pptp = pkt[GRE_PPTP]
assert gre_pptp.chksum_present == 0
assert gre_pptp.routing_present == 0
assert gre_pptp.key_present == 1
assert gre_pptp.seqnum_present == 1
assert gre_pptp.strict_route_source == 0
assert gre_pptp.recursion_control == 0
assert gre_pptp.acknum_present == 0
assert gre_pptp.flags == 0
assert gre_pptp.version == 1
assert gre_pptp.proto == 0x880b
assert gre_pptp.payload_len == 28
assert gre_pptp.call_id == 39925
assert gre_pptp.seqence_number == 0x0
assert HDLC in pkt
assert PPP in pkt
assert PPP_LCP_Configure in pkt
= Test IP/GRE v1 encoding/decoding with PPP LCP Echo
~ gre ip pptp ppp hdlc lcp lcp_echo
pkt = IP(src='192.168.0.1', dst='192.168.0.2') /\
GRE_PPTP(seqnum_present=1, acknum_present=1, seqence_number=47, ack_number=42) /\
HDLC() / PPP() / PPP_LCP_Echo(id=42, magic_number=4242, data='abcdef')
pkt_data = str(pkt)
pkt_data_ref = '4500003600010000402ff944c0a80001c0a800023081880b001200000000002f000000'\
'2aff03c021092a000e00001092616263646566'.decode('hex')
assert (pkt_data == pkt_data_ref)
pkt_decoded = IP(pkt_data_ref)
assert IP in pkt
assert GRE_PPTP in pkt
assert HDLC in pkt
assert PPP in pkt
assert PPP_LCP_Echo in pkt
assert pkt[IP].proto == 47
assert pkt[GRE_PPTP].chksum_present == 0
assert pkt[GRE_PPTP].routing_present == 0
assert pkt[GRE_PPTP].key_present == 1
assert pkt[GRE_PPTP].seqnum_present == 1
assert pkt[GRE_PPTP].acknum_present == 1
assert pkt[GRE_PPTP].seqence_number == 47
assert pkt[GRE_PPTP].ack_number == 42
assert pkt[PPP].proto == 0xc021
assert pkt[PPP_LCP_Echo].code == 9
assert pkt[PPP_LCP_Echo].id == 42
assert pkt[PPP_LCP_Echo].magic_number == 4242
assert pkt[PPP_LCP_Echo].data == 'abcdef'
+ PPP LCP Tests
= Test LCP Echo Request / Reply
~ ppp lcp lcp_echo
lcp_echo_request_data = 'c021090700080000002a'.decode('hex')
lcp_echo_reply_data = str(PPP()/PPP_LCP_Echo(code=10, id=7, magic_number=77, data='defgh'))
lcp_echo_request_pkt = PPP(lcp_echo_request_data)
lcp_echo_reply_pkt = PPP(lcp_echo_reply_data)
assert lcp_echo_reply_pkt.answers(lcp_echo_request_pkt)
assert not lcp_echo_request_pkt.answers(lcp_echo_reply_pkt)
lcp_echo_non_reply_data = str(PPP()/PPP_LCP_Echo(code=10, id=3, magic_number=77))
lcp_echo_non_reply_pkt = PPP(lcp_echo_non_reply_data)
assert not lcp_echo_non_reply_pkt.answers(lcp_echo_request_pkt)
lcp_echo_non_reply_data = str(PPP()/PPP_LCP_Echo(id=7, magic_number=42))
lcp_echo_non_reply_pkt = PPP(lcp_echo_non_reply_data)
assert not lcp_echo_non_reply_pkt.answers(lcp_echo_request_pkt)
= Test LCP Configure Request
~ ppp lcp lcp_configure magic_number
conf_req = PPP() / PPP_LCP_Configure(id=42, options=[PPP_LCP_Magic_Number_Option(magic_number=4242)])
conf_req_ref_data = 'c021012a000a050600001092'.decode('hex')
assert str(conf_req) == conf_req_ref_data
conf_req_pkt = PPP(conf_req_ref_data)
assert PPP_LCP_Configure in conf_req_pkt
assert conf_req_pkt[PPP_LCP_Configure].code == 1
assert conf_req_pkt[PPP_LCP_Configure].id == 42
assert len(conf_req_pkt[PPP_LCP_Configure].options) == 1
assert isinstance(conf_req_pkt[PPP_LCP_Configure].options[0], PPP_LCP_Magic_Number_Option)
assert conf_req_pkt[PPP_LCP_Configure].options[0].magic_number == 4242
= Test LCP Configure Ack
~ ppp lcp lcp_configure lcp_configure_ack
conf_ack = PPP() / PPP_LCP_Configure(code='Configure-Ack', id=42,
options=[PPP_LCP_Magic_Number_Option(magic_number=4242)])
conf_ack_ref_data = 'c021022a000a050600001092'.decode('hex')
assert (str(conf_ack) == conf_ack_ref_data)
conf_ack_pkt = PPP(conf_ack_ref_data)
assert PPP_LCP_Configure in conf_ack_pkt
assert conf_ack_pkt[PPP_LCP_Configure].code == 2
assert conf_ack_pkt[PPP_LCP_Configure].id == 42
assert len(conf_ack_pkt[PPP_LCP_Configure].options) == 1
assert isinstance(conf_ack_pkt[PPP_LCP_Configure].options[0], PPP_LCP_Magic_Number_Option)
assert conf_ack_pkt[PPP_LCP_Configure].options[0].magic_number == 4242
conf_req_pkt = PPP('c021012a000a050600001092'.decode('hex'))
assert conf_ack_pkt.answers(conf_req_pkt)
assert not conf_req_pkt.answers(conf_ack_pkt)
= Test LCP Configure Nak
~ ppp lcp lcp_configure lcp_configure_nak lcp_mru_option lcp_accm_option
conf_nak = PPP() / PPP_LCP_Configure(code='Configure-Nak', id=42,
options=[PPP_LCP_MRU_Option(), PPP_LCP_ACCM_Option(accm=0xffff0000)])
conf_nak_ref_data = 'c021032a000e010405dc0206ffff0000'.decode('hex')
assert(str(conf_nak) == conf_nak_ref_data)
conf_nak_pkt = PPP(conf_nak_ref_data)
assert PPP_LCP_Configure in conf_nak_pkt
assert conf_nak_pkt[PPP_LCP_Configure].code == 3
assert conf_nak_pkt[PPP_LCP_Configure].id == 42
assert len(conf_nak_pkt[PPP_LCP_Configure].options) == 2
assert isinstance(conf_nak_pkt[PPP_LCP_Configure].options[0], PPP_LCP_MRU_Option)
assert conf_nak_pkt[PPP_LCP_Configure].options[0].max_recv_unit == 1500
assert isinstance(conf_nak_pkt[PPP_LCP_Configure].options[1], PPP_LCP_ACCM_Option)
assert conf_nak_pkt[PPP_LCP_Configure].options[1].accm == 0xffff0000
conf_req_pkt = PPP('c021012a000e010405dc0206ffff0000'.decode('hex'))
assert conf_nak_pkt.answers(conf_req_pkt)
assert not conf_req_pkt.answers(conf_nak_pkt)
= Test LCP Configure Reject
~ ppp lcp lcp_configure lcp_configure_reject
conf_reject = PPP() / PPP_LCP_Configure(code='Configure-Reject', id=42,
options=[PPP_LCP_Callback_Option(operation='Location identifier',
message='test')])
conf_reject_ref_data = 'c021042a000b0d070274657374'.decode('hex')
assert(str(conf_reject) == conf_reject_ref_data)
conf_reject_pkt = PPP(conf_reject_ref_data)
assert PPP_LCP_Configure in conf_reject_pkt
assert conf_reject_pkt[PPP_LCP_Configure].code == 4
assert conf_reject_pkt[PPP_LCP_Configure].id == 42
assert len(conf_reject_pkt[PPP_LCP_Configure].options) == 1
assert isinstance(conf_reject_pkt[PPP_LCP_Configure].options[0], PPP_LCP_Callback_Option)
assert conf_reject_pkt[PPP_LCP_Configure].options[0].operation == 2
assert conf_reject_pkt[PPP_LCP_Configure].options[0].message == 'test'
conf_req_pkt = PPP('c021012a000b0d070274657374'.decode('hex'))
assert conf_reject_pkt.answers(conf_req_pkt)
assert not conf_req_pkt.answers(conf_reject_pkt)
= Test LCP Configure options
~ ppp lcp lcp_configure
conf_req = PPP() / PPP_LCP_Configure(id=42, options=[PPP_LCP_MRU_Option(max_recv_unit=5000),
PPP_LCP_ACCM_Option(accm=0xf0f0f0f0),
PPP_LCP_Auth_Protocol_Option(),
PPP_LCP_Quality_Protocol_Option(data='test'),
PPP_LCP_Magic_Number_Option(magic_number=4242),
PPP_LCP_Callback_Option(operation='Distinguished name',message='test')])
conf_req_ref_data = 'c021012a0027010413880206f0f0f0f00304c0230408c025746573740506000010920d070474657374'.decode('hex')
assert(str(conf_req) == conf_req_ref_data)
conf_req_pkt = PPP(conf_req_ref_data)
assert PPP_LCP_Configure in conf_req_pkt
options = conf_req_pkt[PPP_LCP_Configure].options
assert len(options) == 6
assert isinstance(options[0], PPP_LCP_MRU_Option)
assert options[0].max_recv_unit == 5000
assert isinstance(options[1], PPP_LCP_ACCM_Option)
assert options[1].accm == 0xf0f0f0f0
assert isinstance(options[2], PPP_LCP_Auth_Protocol_Option)
assert options[2].auth_protocol == 0xc023
assert isinstance(options[3], PPP_LCP_Quality_Protocol_Option)
assert options[3].quality_protocol == 0xc025
assert options[3].data == 'test'
assert isinstance(options[4], PPP_LCP_Magic_Number_Option)
assert options[4].magic_number == 4242
assert isinstance(options[5], PPP_LCP_Callback_Option)
assert options[5].operation == 4
assert options[5].message == 'test'
= Test LCP Auth option
~ ppp lcp lcp_configure
pap = PPP_LCP_Auth_Protocol_Option()
pap_ref_data = '0304c023'.decode('hex')
assert(str(pap) == pap_ref_data)
pap_pkt = PPP_LCP_Option(pap_ref_data)
assert isinstance(pap_pkt, PPP_LCP_Auth_Protocol_Option)
assert pap_pkt.auth_protocol == 0xc023
chap_sha1 = PPP_LCP_Auth_Protocol_Option(auth_protocol='Challenge-response authentication protocol', algorithm="SHA1")
chap_sha1_ref_data = '0305c22306'.decode('hex')
assert str(chap_sha1) == chap_sha1_ref_data
chap_sha1_pkt = PPP_LCP_Option(chap_sha1_ref_data)
assert isinstance(chap_sha1_pkt, PPP_LCP_Auth_Protocol_Option)
assert chap_sha1_pkt.auth_protocol == 0xc223
assert chap_sha1_pkt.algorithm == 6
eap = PPP_LCP_Auth_Protocol_Option(auth_protocol='PPP Extensible authentication protocol', data='test')
eap_ref_data = '0308c22774657374'.decode('hex')
assert str(eap) == eap_ref_data
eap_pkt = PPP_LCP_Option(eap_ref_data)
assert isinstance(eap_pkt, PPP_LCP_Auth_Protocol_Option)
assert eap_pkt.auth_protocol == 0xc227
assert eap_pkt.data == 'test'
= Test LCP Code-Reject
~ ppp lcp lcp_code_reject
code_reject = PPP() / PPP_LCP_Code_Reject(id=42, rejected_packet=PPP_LCP(code=42, id=7, data='unknown_data'))
code_reject_ref_data = 'c021072a00142a070010756e6b6e6f776e5f64617461'.decode('hex')
assert str(code_reject) == code_reject_ref_data
code_reject_pkt = PPP(code_reject_ref_data)
assert PPP_LCP_Code_Reject in code_reject_pkt
assert code_reject_pkt[PPP_LCP_Code_Reject].id == 42
assert isinstance(code_reject_pkt[PPP_LCP_Code_Reject].rejected_packet, PPP_LCP)
assert code_reject[PPP_LCP_Code_Reject].rejected_packet.code == 42
assert code_reject[PPP_LCP_Code_Reject].rejected_packet.id == 7
assert code_reject[PPP_LCP_Code_Reject].rejected_packet.data == 'unknown_data'
= Test LCP Protocol-Reject
~ ppp lcp lcp_protocol_reject
protocol_reject = PPP() / PPP_LCP_Protocol_Reject(id=42, rejected_protocol=0x8039,
rejected_information=Packet('0305c22306'.decode('hex')))
protocol_reject_ref_data = 'c021082a000b80390305c22306'.decode('hex')
assert str(protocol_reject) == protocol_reject_ref_data
protocol_reject_pkt = PPP(protocol_reject_ref_data)
assert PPP_LCP_Protocol_Reject in protocol_reject_pkt
assert protocol_reject_pkt[PPP_LCP_Protocol_Reject].id == 42
assert protocol_reject_pkt[PPP_LCP_Protocol_Reject].rejected_protocol == 0x8039
assert len(protocol_reject_pkt[PPP_LCP_Protocol_Reject].rejected_information) == 5
= Test LCP Discard Request
~ ppp lcp lcp_discard_request
discard_request = PPP() / PPP_LCP_Discard_Request(id=7, magic_number=4242, data='test')
discard_request_ref_data = 'c0210b07000c0000109274657374'.decode('hex')
assert str(discard_request) == discard_request_ref_data
discard_request_pkt = PPP(discard_request_ref_data)
assert PPP_LCP_Discard_Request in discard_request_pkt
assert discard_request_pkt[PPP_LCP_Discard_Request].id == 7
assert discard_request_pkt[PPP_LCP_Discard_Request].magic_number == 4242
assert discard_request_pkt[PPP_LCP_Discard_Request].data == 'test'
= Test LCP Terminate-Request/Terminate-Ack
~ ppp lcp lcp_terminate
terminate_request = PPP() / PPP_LCP_Terminate(id=7, data='test')
terminate_request_ref_data = 'c0210507000874657374'.decode('hex')
assert str(terminate_request) == terminate_request_ref_data
terminate_request_pkt = PPP(terminate_request_ref_data)
assert PPP_LCP_Terminate in terminate_request_pkt
assert terminate_request_pkt[PPP_LCP_Terminate].code == 5
assert terminate_request_pkt[PPP_LCP_Terminate].id == 7
assert terminate_request_pkt[PPP_LCP_Terminate].data == 'test'
terminate_ack = PPP() / PPP_LCP_Terminate(code='Terminate-Ack', id=7)
terminate_ack_ref_data = 'c02106070004'.decode('hex')
assert str(terminate_ack) == terminate_ack_ref_data
terminate_ack_pkt = PPP(terminate_ack_ref_data)
assert PPP_LCP_Terminate in terminate_ack_pkt
assert terminate_ack_pkt[PPP_LCP_Terminate].code == 6
assert terminate_ack_pkt[PPP_LCP_Terminate].id == 7
assert terminate_ack_pkt.answers(terminate_request_pkt)
assert not terminate_request_pkt.answers(terminate_ack_pkt)
+ PPTP Tests
= Test PPTP Start-Control-Connection-Request
~ pptp
start_control_connection = PPTPStartControlConnectionRequest(framing_capabilities='Asynchronous Framing supported',
bearer_capabilities='Digital access supported',
maximum_channels=42,
firmware_revision=47,
host_name='test host name',
vendor_string='test vendor string')
start_control_connection_ref_data = '009c00011a2b3c4d00010000000100000000000100000002002a00'\
'2f7465737420686f7374206e616d65000000000000000000000000'\
'000000000000000000000000000000000000000000000000000000'\
'0000000000000000000000746573742076656e646f722073747269'\
'6e6700000000000000000000000000000000000000000000000000'\
'000000000000000000000000000000000000000000'.decode('hex')
assert str(start_control_connection) == start_control_connection_ref_data
start_control_connection_pkt = PPTP(start_control_connection_ref_data)
assert isinstance(start_control_connection_pkt, PPTPStartControlConnectionRequest)
assert start_control_connection_pkt.magic_cookie == 0x1a2b3c4d
assert start_control_connection_pkt.protocol_version == 1
assert start_control_connection_pkt.framing_capabilities == 1
assert start_control_connection_pkt.bearer_capabilities == 2
assert start_control_connection_pkt.maximum_channels == 42
assert start_control_connection_pkt.firmware_revision == 47
assert start_control_connection_pkt.host_name == 'test host name' + '\0' * (64-len('test host name'))
assert start_control_connection_pkt.vendor_string == 'test vendor string' + '\0' * (64-len('test vendor string'))
= Test PPTP Start-Control-Connection-Reply
~ pptp
start_control_connection_reply = PPTPStartControlConnectionReply(result_code='General error',
error_code='Not-Connected',
framing_capabilities='Synchronous Framing supported',
bearer_capabilities='Analog access supported',
vendor_string='vendor')
start_control_connection_reply_ref_data = '009c00011a2b3c4d00020000000102010000000200000001ffff0'\
'1006c696e75780000000000000000000000000000000000000000'\
'00000000000000000000000000000000000000000000000000000'\
'000000000000000000000000076656e646f720000000000000000'\
'00000000000000000000000000000000000000000000000000000'\
'00000000000000000000000000000000000000000000000'.decode('hex')
assert str(start_control_connection_reply) == start_control_connection_reply_ref_data
start_control_connection_reply_pkt = PPTP(start_control_connection_reply_ref_data)
assert isinstance(start_control_connection_reply_pkt, PPTPStartControlConnectionReply)
assert start_control_connection_reply_pkt.magic_cookie == 0x1a2b3c4d
assert start_control_connection_reply_pkt.protocol_version == 1
assert start_control_connection_reply_pkt.result_code == 2
assert start_control_connection_reply_pkt.error_code == 1
assert start_control_connection_reply_pkt.framing_capabilities == 2
assert start_control_connection_reply_pkt.bearer_capabilities == 1
assert start_control_connection_reply_pkt.host_name == 'linux' + '\0' * (64-len('linux'))
assert start_control_connection_reply_pkt.vendor_string == 'vendor' + '\0' * (64-len('vendor'))
start_control_connection_request = PPTPStartControlConnectionRequest()
assert start_control_connection_reply_pkt.answers(start_control_connection_request)
assert not start_control_connection_request.answers(start_control_connection_reply_pkt)
= Test PPTP Stop-Control-Connection-Request
~ pptp
stop_control_connection = PPTPStopControlConnectionRequest(reason='Stop-Local-Shutdown')
stop_control_connection_ref_data = '001000011a2b3c4d0003000003000000'.decode('hex')
assert str(stop_control_connection) == stop_control_connection_ref_data
stop_control_connection_pkt = PPTP(stop_control_connection_ref_data)
assert isinstance(stop_control_connection_pkt, PPTPStopControlConnectionRequest)
assert stop_control_connection_pkt.magic_cookie == 0x1a2b3c4d
assert stop_control_connection_pkt.reason == 3
= Test PPTP Stop-Control-Connection-Reply
~ pptp
stop_control_connection_reply = PPTPStopControlConnectionReply(result_code='General error',error_code='PAC-Error')
stop_control_connection_reply_ref_data = '001000011a2b3c4d0004000002060000'.decode('hex')
assert str(stop_control_connection_reply) == stop_control_connection_reply_ref_data
stop_control_connection_reply_pkt = PPTP(stop_control_connection_reply_ref_data)
assert isinstance(stop_control_connection_reply_pkt, PPTPStopControlConnectionReply)
assert stop_control_connection_reply_pkt.magic_cookie == 0x1a2b3c4d
assert stop_control_connection_reply_pkt.result_code == 2
assert stop_control_connection_reply_pkt.error_code == 6
stop_control_connection_request = PPTPStopControlConnectionRequest()
assert stop_control_connection_reply_pkt.answers(stop_control_connection_request)
assert not stop_control_connection_request.answers(stop_control_connection_reply_pkt)
= Test PPTP Echo-Request
~ pptp
echo_request = PPTPEchoRequest(identifier=42)
echo_request_ref_data = '001000011a2b3c4d000500000000002a'.decode('hex')
assert str(echo_request) == echo_request_ref_data
echo_request_pkt = PPTP(echo_request_ref_data)
assert isinstance(echo_request_pkt, PPTPEchoRequest)
assert echo_request_pkt.magic_cookie == 0x1a2b3c4d
assert echo_request_pkt.identifier == 42
= Test PPTP Echo-Reply
~ pptp
echo_reply = PPTPEchoReply(identifier=42, result_code='OK')
echo_reply_ref_data = '001400011a2b3c4d000600000000002a01000000'.decode('hex')
assert str(echo_reply) == echo_reply_ref_data
echo_reply_pkt = PPTP(echo_reply_ref_data)
assert isinstance(echo_reply_pkt, PPTPEchoReply)
assert echo_reply_pkt.magic_cookie == 0x1a2b3c4d
assert echo_reply_pkt.identifier == 42
assert echo_reply_pkt.result_code == 1
assert echo_reply_pkt.error_code == 0
echo_request = PPTPEchoRequest(identifier=42)
assert echo_reply_pkt.answers(echo_request)
assert not echo_request.answers(echo_reply)
echo_request_incorrect = PPTPEchoRequest(identifier=47)
assert not echo_reply_pkt.answers(echo_request_incorrect)
assert not echo_request_incorrect.answers(echo_reply_pkt)
= Test PPTP Outgoing-Call-Request
~ pptp
outgoing_call = PPTPOutgoingCallRequest(call_id=4242, call_serial_number=47,
minimum_bps=1000, maximum_bps=10000,
bearer_type='Digital channel',
pkt_window_size=16, pkt_proc_delay=1,
phone_number_len=9, phone_number='123456789',
subaddress='test')
outgoing_call_ref_data = '00a800011a2b3c4d000700001092002f000003e8000027100000000200'\
'0000030010000100090000313233343536373839000000000000000000'\
'0000000000000000000000000000000000000000000000000000000000'\
'0000000000000000000000000000000000746573740000000000000000'\
'0000000000000000000000000000000000000000000000000000000000'\
'0000000000000000000000000000000000000000000000'.decode('hex')
assert str(outgoing_call) == outgoing_call_ref_data
outgoing_call_pkt = PPTP(outgoing_call_ref_data)
assert isinstance(outgoing_call_pkt, PPTPOutgoingCallRequest)
assert outgoing_call_pkt.magic_cookie == 0x1a2b3c4d
assert outgoing_call_pkt.call_id == 4242
assert outgoing_call_pkt.call_serial_number == 47
assert outgoing_call_pkt.minimum_bps == 1000
assert outgoing_call_pkt.maximum_bps == 10000
assert outgoing_call_pkt.bearer_type == 2
assert outgoing_call_pkt.framing_type == 3
assert outgoing_call_pkt.pkt_window_size == 16
assert outgoing_call_pkt.pkt_proc_delay == 1
assert outgoing_call_pkt.phone_number_len == 9
assert outgoing_call_pkt.phone_number == '123456789' + '\0' * (64-len('123456789'))
assert outgoing_call_pkt.subaddress == 'test' + '\0' * (64-len('test'))
= Test PPTP Outgoing-Call-Reply
~ pptp
outgoing_call_reply = PPTPOutgoingCallReply(call_id=4243, peer_call_id=4242,
result_code='Busy', error_code='No-Resource',
cause_code=42, connect_speed=5000,
pkt_window_size=32, pkt_proc_delay=3,
channel_id=42)
outgoing_call_reply_ref_data = '002000011a2b3c4d00080000109310920404002a00001388002000030000002a'.decode('hex')
assert str(outgoing_call_reply) == outgoing_call_reply_ref_data
outgoing_call_reply_pkt = PPTP(outgoing_call_reply_ref_data)
assert isinstance(outgoing_call_reply_pkt, PPTPOutgoingCallReply)
assert outgoing_call_reply_pkt.magic_cookie == 0x1a2b3c4d
assert outgoing_call_reply_pkt.call_id == 4243
assert outgoing_call_reply_pkt.peer_call_id == 4242
assert outgoing_call_reply_pkt.result_code == 4
assert outgoing_call_reply_pkt.error_code == 4
assert outgoing_call_reply_pkt.cause_code == 42
assert outgoing_call_reply_pkt.connect_speed == 5000
assert outgoing_call_reply_pkt.pkt_window_size == 32
assert outgoing_call_reply_pkt.pkt_proc_delay == 3
assert outgoing_call_reply_pkt.channel_id == 42
outgoing_call_request = PPTPOutgoingCallRequest(call_id=4242)
assert outgoing_call_reply_pkt.answers(outgoing_call_request)
assert not outgoing_call_request.answers(outgoing_call_reply_pkt)
outgoing_call_request_incorrect = PPTPOutgoingCallRequest(call_id=5656)
assert not outgoing_call_reply_pkt.answers(outgoing_call_request_incorrect)
assert not outgoing_call_request_incorrect.answers(outgoing_call_reply_pkt)
= Test PPTP Incoming-Call-Request
~ pptp
incoming_call = PPTPIncomingCallRequest(call_id=4242, call_serial_number=47, bearer_type='Digital channel',
channel_id=12, dialed_number_len=9, dialing_number_len=10,
dialed_number='123456789', dialing_number='0123456789',
subaddress='test')
incoming_call_ref_data = '00dc00011a2b3c4d000900001092002f000000020000000c0009000a313233343536373839'\
'00000000000000000000000000000000000000000000000000000000000000000000000000'\
'00000000000000000000000000000000000030313233343536373839000000000000000000'\
'00000000000000000000000000000000000000000000000000000000000000000000000000'\
'00000000000000007465737400000000000000000000000000000000000000000000000000'\
'0000000000000000000000000000000000000000000000000000000000000000000000'.decode('hex')
assert str(incoming_call) == incoming_call_ref_data
incoming_call_pkt = PPTP(incoming_call_ref_data)
assert isinstance(incoming_call_pkt, PPTPIncomingCallRequest)
assert incoming_call_pkt.magic_cookie == 0x1a2b3c4d
assert incoming_call_pkt.call_id == 4242
assert incoming_call_pkt.call_serial_number == 47
assert incoming_call_pkt.bearer_type == 2
assert incoming_call_pkt.channel_id == 12
assert incoming_call_pkt.dialed_number_len == 9
assert incoming_call_pkt.dialing_number_len == 10
assert incoming_call_pkt.dialed_number == '123456789' + '\0' * (64-len('123456789'))
assert incoming_call_pkt.dialing_number == '0123456789' + '\0' * (64-len('0123456879'))
assert incoming_call_pkt.subaddress == 'test' + '\0' * (64-len('test'))
= Test PPTP Incoming-Call-Reply
~ pptp
incoming_call_reply = PPTPIncomingCallReply(call_id=4243, peer_call_id=4242, result_code='Connected',
error_code='None', pkt_window_size=16, pkt_transmit_delay=42)
incoming_call_reply_ref_data = '009400011a2b3c4d000a00001093109201000010002a0000'.decode('hex')
assert str(incoming_call_reply) == incoming_call_reply_ref_data
incoming_call_reply_pkt = PPTP(incoming_call_reply_ref_data)
assert isinstance(incoming_call_reply_pkt, PPTPIncomingCallReply)
assert incoming_call_reply_pkt.magic_cookie == 0x1a2b3c4d
assert incoming_call_reply_pkt.call_id == 4243
assert incoming_call_reply_pkt.peer_call_id == 4242
assert incoming_call_reply_pkt.result_code == 1
assert incoming_call_reply_pkt.error_code == 0
assert incoming_call_reply_pkt.pkt_window_size == 16
assert incoming_call_reply_pkt.pkt_transmit_delay == 42
incoming_call_req = PPTPIncomingCallRequest(call_id=4242)
assert incoming_call_reply_pkt.answers(incoming_call_req)
assert not incoming_call_req.answers(incoming_call_reply)
incoming_call_req_incorrect = PPTPIncomingCallRequest(call_id=4343)
assert not incoming_call_reply_pkt.answers(incoming_call_req_incorrect)
assert not incoming_call_req_incorrect.answers(incoming_call_reply_pkt)
= Test PPTP Incoming-Call-Connected
~ pptp
incoming_call_connected = PPTPIncomingCallConnected(peer_call_id=4242, connect_speed=47474747,
pkt_window_size=16, pkt_transmit_delay=7,
framing_type='Any type of framing')
incoming_call_connected_ref_data = '001c00011a2b3c4d000b00001092000002d4683b0010000700000003'.decode('hex')
assert str(incoming_call_connected) == incoming_call_connected_ref_data
incoming_call_connected_pkt = PPTP(incoming_call_connected_ref_data)
assert isinstance(incoming_call_connected_pkt, PPTPIncomingCallConnected)
assert incoming_call_connected_pkt.magic_cookie == 0x1a2b3c4d
assert incoming_call_connected_pkt.peer_call_id == 4242
assert incoming_call_connected_pkt.connect_speed == 47474747
assert incoming_call_connected_pkt.pkt_window_size == 16
assert incoming_call_connected_pkt.pkt_transmit_delay == 7
assert incoming_call_connected_pkt.framing_type == 3
incoming_call_reply = PPTPIncomingCallReply(call_id=4242)
assert incoming_call_connected_pkt.answers(incoming_call_reply)
assert not incoming_call_reply.answers(incoming_call_connected_pkt)
incoming_call_reply_incorrect = PPTPIncomingCallReply(call_id=4243)
assert not incoming_call_connected_pkt.answers(incoming_call_reply_incorrect)
assert not incoming_call_reply_incorrect.answers(incoming_call_connected_pkt)
= Test PPTP Call-Clear-Request
~ pptp
call_clear_request = PPTPCallClearRequest(call_id=4242)
call_clear_request_ref_data = '001000011a2b3c4d000c000010920000'.decode('hex')
assert str(call_clear_request) == call_clear_request_ref_data
call_clear_request_pkt = PPTP(call_clear_request_ref_data)
assert isinstance(call_clear_request_pkt, PPTPCallClearRequest)
assert call_clear_request_pkt.magic_cookie == 0x1a2b3c4d
assert call_clear_request_pkt.call_id == 4242
= Test PPTP Call-Disconnect-Notify
~ pptp
call_disconnect_notify = PPTPCallDisconnectNotify(call_id=4242, result_code='Admin Shutdown', error_code='None',
cause_code=47, call_statistic='some description')
call_disconnect_notify_ref_data = '009400011a2b3c4d000d000010920300002f0000736f6d65206465736372697074696'\
'f6e000000000000000000000000000000000000000000000000000000000000000000'\
'000000000000000000000000000000000000000000000000000000000000000000000'\
'000000000000000000000000000000000000000000000000000000000000000000000'\
'00000000000000000000'.decode('hex')
assert str(call_disconnect_notify) == call_disconnect_notify_ref_data
call_disconnect_notify_pkt = PPTP(call_disconnect_notify_ref_data)
assert isinstance(call_disconnect_notify_pkt, PPTPCallDisconnectNotify)
assert call_disconnect_notify_pkt.magic_cookie == 0x1a2b3c4d
assert call_disconnect_notify_pkt.call_id == 4242
assert call_disconnect_notify_pkt.result_code == 3
assert call_disconnect_notify_pkt.error_code == 0
assert call_disconnect_notify_pkt.cause_code == 47
assert call_disconnect_notify_pkt.call_statistic == 'some description' + '\0' * (128-len('some description'))
= Test PPTP WAN-Error-Notify
~ pptp
wan_error_notify = PPTPWANErrorNotify(peer_call_id=4242, crc_errors=1, framing_errors=2,
hardware_overruns=3, buffer_overruns=4, time_out_errors=5,
alignment_errors=6)
wan_error_notify_ref_data = '002800011a2b3c4d000e000010920000000000010000000200000003000000040000000500000006'\
.decode('hex')
assert str(wan_error_notify) == wan_error_notify_ref_data
wan_error_notify_pkt = PPTP(wan_error_notify_ref_data)
assert isinstance(wan_error_notify_pkt, PPTPWANErrorNotify)
assert wan_error_notify_pkt.magic_cookie == 0x1a2b3c4d
assert wan_error_notify_pkt.peer_call_id == 4242
assert wan_error_notify_pkt.crc_errors == 1
assert wan_error_notify_pkt.framing_errors == 2
assert wan_error_notify_pkt.hardware_overruns == 3
assert wan_error_notify_pkt.buffer_overruns == 4
= Test PPTP Set-Link-Info
~ pptp
set_link_info = PPTPSetLinkInfo(peer_call_id=4242, send_accm=0x0f0f0f0f, receive_accm=0xf0f0f0f0)
set_link_info_ref_data = '001800011a2b3c4d000f0000109200000f0f0f0ff0f0f0f0'.decode('hex')
assert str(set_link_info) == set_link_info_ref_data
set_link_info_pkt = PPTP(set_link_info_ref_data)
assert isinstance(set_link_info_pkt, PPTPSetLinkInfo)
assert set_link_info_pkt.magic_cookie == 0x1a2b3c4d
assert set_link_info_pkt.peer_call_id == 4242
assert set_link_info_pkt.send_accm == 0x0f0f0f0f
assert set_link_info_pkt.receive_accm == 0xf0f0f0f0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment