Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
scapy
Manage
Activity
Members
Plan
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CodeLinaro
public-release-test-restored
platform
external
scapy
Commits
836390ee
Commit
836390ee
authored
8 years ago
by
Jan Sebechlebsky
Browse files
Options
Downloads
Patches
Plain Diff
Add PPTP related tests
parent
5c4c4175
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
test/pptp.uts
+684
-0
684 additions, 0 deletions
test/pptp.uts
with
684 additions
and
0 deletions
test/pptp.uts
0 → 100644
+
684
−
0
View file @
836390ee
##############################
% 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
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment