File: cdp.uts

package info (click to toggle)
scapy 2.6.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 13,956 kB
  • sloc: python: 163,618; sh: 90; makefile: 11
file content (115 lines) | stat: -rw-r--r-- 5,664 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#################################### cdp.py ##################################
% Regression tests for the cdp module


################################## CDPv2_HDR ##################################
+ CDP

= CDPv2 - Dissection (1)
s = b'\x02\xb4\x8c\xfa\x00\x01\x00\x0cmyswitch\x00\x02\x00\x11\x00\x00\x00\x01\x01\x01\xcc\x00\x04\xc0\xa8\x00\xfd\x00\x03\x00\x13FastEthernet0/1\x00\x04\x00\x08\x00\x00\x00(\x00\x05\x01\x14Cisco Internetwork Operating System Software \nIOS (tm) C2950 Software (C2950-I6K2L2Q4-M), Version 12.1(22)EA14, RELEASE SOFTWARE (fc1)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2010 by cisco Systems, Inc.\nCompiled Tue 26-Oct-10 10:35 by nburra\x00\x06\x00\x15cisco WS-C2950-12\x00\x08\x00$\x00\x00\x0c\x01\x12\x00\x00\x00\x00\xff\xff\xff\xff\x01\x02!\xff\x00\x00\x00\x00\x00\x00\x00\x0b\xbe\x18\x9a@\xff\x00\x00\x00\t\x00\x0cMYDOMAIN\x00\n\x00\x06\x00\x01\x00\x0b\x00\x05\x01\x00\x0e\x00\x07\x01\x00\n\x00\x12\x00\x05\x00\x00\x13\x00\x05\x00\x00\x16\x00\x11\x00\x00\x00\x01\x01\x01\xcc\x00\x04\xc0\xa8\x00\xfd'
cdpv2 = CDPv2_HDR(s)
assert len(cdpv2) == 450
assert cdpv2.vers == 2
assert cdpv2.ttl == 180
assert cdpv2.cksum == 0x8cfa
assert cdpv2.haslayer(CDPMsgDeviceID)
assert cdpv2.haslayer(CDPMsgAddr)
assert cdpv2.haslayer(CDPAddrRecordIPv4)
assert cdpv2.haslayer(CDPMsgPortID)
assert cdpv2.haslayer(CDPMsgCapabilities)
assert cdpv2.haslayer(CDPMsgSoftwareVersion)
assert cdpv2.haslayer(CDPMsgPlatform)
assert cdpv2.haslayer(CDPMsgProtoHello)
assert cdpv2.haslayer(CDPMsgVTPMgmtDomain)
assert cdpv2.haslayer(CDPMsgNativeVLAN)
assert cdpv2.haslayer(CDPMsgDuplex)
assert cdpv2.haslayer(CDPMsgVoIPVLANReply)
assert cdpv2.haslayer(CDPMsgTrustBitmap)
assert cdpv2.haslayer(CDPMsgUntrustedPortCoS)
assert cdpv2.haslayer(CDPMsgMgmtAddr)
assert cdpv2[CDPMsgProtoHello].len == 36
assert cdpv2[CDPMsgProtoHello].oui == 0xc
assert cdpv2[CDPMsgProtoHello].protocol_id == 0x112
assert cdpv2[CDPMsgTrustBitmap].type == 0x0012
assert cdpv2[CDPMsgTrustBitmap].len == 5
assert cdpv2[CDPMsgTrustBitmap].trust_bitmap == 0x0
assert cdpv2[CDPMsgUntrustedPortCoS].type == 0x0013
assert cdpv2[CDPMsgUntrustedPortCoS].len == 5
assert cdpv2[CDPMsgUntrustedPortCoS].untrusted_port_cos == 0x0

= CDPv2 - Rebuild (1)

cdpv2.cksum = None
assert raw(cdpv2) == s

= CDPv2 - Dissection (2)
s = b'\x02\xb4\xd7\xdb\x00\x01\x00\x13SIP001122334455\x00\x02\x00\x11\x00\x00\x00\x01\x01\x01\xcc\x00\x04\xc0\xa8\x01!\x00\x03\x00\nPort 1\x00\x04\x00\x08\x00\x00\x00\x10\x00\x05\x00\x10P003-08-2-00\x00\x06\x00\x17Cisco IP Phone 7960\x00\x0f\x00\x08 \x02\x00\x01\x00\x0b\x00\x05\x01\x00\x10\x00\x06\x18\x9c'
cdpv2 = CDPv2_HDR(s)
assert cdpv2.vers == 2
assert cdpv2.ttl == 180
assert cdpv2.cksum == 0xd7db
assert cdpv2.haslayer(CDPMsgDeviceID)
assert cdpv2.haslayer(CDPMsgAddr)
assert cdpv2.haslayer(CDPAddrRecordIPv4)
assert cdpv2.haslayer(CDPMsgPortID)
assert cdpv2.haslayer(CDPMsgCapabilities)
assert cdpv2.haslayer(CDPMsgSoftwareVersion)
assert cdpv2.haslayer(CDPMsgPlatform)
assert cdpv2.haslayer(CDPMsgVoIPVLANQuery)
assert cdpv2.haslayer(CDPMsgDuplex)
assert cdpv2.haslayer(CDPMsgPower)
assert cdpv2[CDPMsgVoIPVLANQuery].type == 0x000f
assert cdpv2[CDPMsgVoIPVLANQuery].len == 8
assert cdpv2[CDPMsgVoIPVLANQuery].unknown1 == 0x20
assert cdpv2[CDPMsgVoIPVLANQuery].vlan == 512

assert cdpv2[CDPMsgPower].sprintf("%power%") == '6300 mW'

= CDPv2 - Rebuild (2)

cdpv2.cksum = None
s2 = s[:2] + b"\xf3\xf1" + s[4:]
assert raw(cdpv2) == s2

= CDPv2 - Complex Packet

r = b'\x01\x00\x0c\xcc\xcc\xcc\x11"3DUf\x01\x80\xaa\xaa\x03\x00\x00\x0c \x00\x02\xb4uV\x00\x01\x00\nRouter\x00\x05\x00\x04\x00\x06\x00\x04\x00\x02\x00\x11\x00\x00\x00\x02\x01\x01\xcc\x00\x04\xc0\xa8\x01e\x00\x03\x00\x18GigabitEthernet0/0/1\x00\x04\x00\x08\x00\x00\x00A\x00\x07\x00\t\x14\x00\x00\x00\x18\x00\t\x00\x04\x00\x0b\x00\x05\x01\x00\x16\x00\x11\x00\x00\x00\x01\x01\x01\xcc\x00\x04\xc0\xa8\x01e'
p = Dot3(r)
assert CDPMsgPortID in p and CDPMsgIPPrefix in p

= CDPChecksum - packet with odd length

pkt = CDPv2_HDR(vers=2, ttl=180, msg='123')
assert len(pkt) == 7

= CDPv2 - CDPMsgAddr Packet
cdp_msg_addr = CDPMsgAddr(addr=[CDPAddrRecordIPv4(), CDPAddrRecordIPv6()])
assert cdp_msg_addr.haslayer(CDPAddrRecordIPv4)
assert cdp_msg_addr.haslayer(CDPAddrRecordIPv6)
assert len(cdp_msg_addr.addr) == 2

assert raw(cdp_msg_addr)[4:8] == b'\x00\x00\x00\x02'

= CDPv2 - CDPMsgPowerRequest and CDPMsgPowerAvailable Packet
s = b'\x02\xb4\x39\xfa\x00\x01\x00\x09\x53\x63\x61\x70\x79\x00\x02\x00\x11\x00\x00\x00\x01\x01\x01\xcc\x00\x04\x7f\x00\x00\x01\x00\x10\x00\x06\x00\x10\x00\x19\x00\x18\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x1a\x00\x14\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07'
cdpv2 = CDPv2_HDR(s)
assert cdpv2.vers == 2
assert cdpv2.ttl == 180
assert cdpv2.cksum == 0x39fa
assert cdpv2.haslayer(CDPMsgDeviceID)
assert cdpv2.haslayer(CDPMsgAddr)
assert cdpv2.haslayer(CDPMsgPower)
assert cdpv2.haslayer(CDPMsgPowerRequest)
assert cdpv2.haslayer(CDPMsgPowerAvailable)
assert cdpv2[CDPMsgPowerRequest].type == 0x0019
assert cdpv2[CDPMsgPowerRequest].len == 24
assert cdpv2[CDPMsgPowerRequest].req_id == 0
assert cdpv2[CDPMsgPowerRequest].mgmt_id == 0
assert len(cdpv2[CDPMsgPowerRequest].power_requested_list) == 4
assert cdpv2[CDPMsgPowerRequest].power_requested_list == [1, 2, 3, 4]
assert cdpv2[CDPMsgPowerAvailable].type == 0x001a
assert cdpv2[CDPMsgPowerAvailable].len == 20
assert cdpv2[CDPMsgPowerAvailable].req_id == 0
assert cdpv2[CDPMsgPowerAvailable].mgmt_id == 0
assert len(cdpv2[CDPMsgPowerAvailable].power_available_list) == 3
assert cdpv2[CDPMsgPowerAvailable].power_available_list == [5, 6, 7]