1
2
3 """Remote Authentication Dial-In User Service."""
4 from __future__ import absolute_import
5
6 from . import dpkt
7 from .compat import compat_ord
8
9
10
11
12
14 """Remote Authentication Dial-In User Service.
15
16 TODO: Longer class information....
17
18 Attributes:
19 __hdr__: Header fields of RADIUS.
20 TODO.
21 """
22
23 __hdr__ = (
24 ('code', 'B', 0),
25 ('id', 'B', 0),
26 ('len', 'H', 4),
27 ('auth', '16s', b'')
28 )
29 attrs = b''
30
35
36
38 """Parse attributes buffer into a list of (type, data) tuples."""
39 attrs = []
40 while buf:
41 t = compat_ord(buf[0])
42 l = compat_ord(buf[1])
43 if l < 2:
44 break
45 d, buf = buf[2:l], buf[l:]
46 attrs.append((t, d))
47 return attrs
48
49
50 RADIUS_ACCESS_REQUEST = 1
51 RADIUS_ACCESS_ACCEPT = 2
52 RADIUS_ACCESS_REJECT = 3
53 RADIUS_ACCT_REQUEST = 4
54 RADIUS_ACCT_RESPONSE = 5
55 RADIUS_ACCT_STATUS = 6
56 RADIUS_ACCESS_CHALLENGE = 11
57
58
59 RADIUS_USER_NAME = 1
60 RADIUS_USER_PASSWORD = 2
61 RADIUS_CHAP_PASSWORD = 3
62 RADIUS_NAS_IP_ADDR = 4
63 RADIUS_NAS_PORT = 5
64 RADIUS_SERVICE_TYPE = 6
65 RADIUS_FRAMED_PROTOCOL = 7
66 RADIUS_FRAMED_IP_ADDR = 8
67 RADIUS_FRAMED_IP_NETMASK = 9
68 RADIUS_FRAMED_ROUTING = 10
69 RADIUS_FILTER_ID = 11
70 RADIUS_FRAMED_MTU = 12
71 RADIUS_FRAMED_COMPRESSION = 13
72 RADIUS_LOGIN_IP_HOST = 14
73 RADIUS_LOGIN_SERVICE = 15
74 RADIUS_LOGIN_TCP_PORT = 16
75
76 RADIUS_REPLY_MESSAGE = 18
77 RADIUS_CALLBACK_NUMBER = 19
78 RADIUS_CALLBACK_ID = 20
79
80 RADIUS_FRAMED_ROUTE = 22
81 RADIUS_FRAMED_IPX_NETWORK = 23
82 RADIUS_STATE = 24
83 RADIUS_CLASS = 25
84 RADIUS_VENDOR_SPECIFIC = 26
85 RADIUS_SESSION_TIMEOUT = 27
86 RADIUS_IDLE_TIMEOUT = 28
87 RADIUS_TERMINATION_ACTION = 29
88 RADIUS_CALLED_STATION_ID = 30
89 RADIUS_CALLING_STATION_ID = 31
90 RADIUS_NAS_ID = 32
91 RADIUS_PROXY_STATE = 33
92 RADIUS_LOGIN_LAT_SERVICE = 34
93 RADIUS_LOGIN_LAT_NODE = 35
94 RADIUS_LOGIN_LAT_GROUP = 36
95 RADIUS_FRAMED_ATALK_LINK = 37
96 RADIUS_FRAMED_ATALK_NETWORK = 38
97 RADIUS_FRAMED_ATALK_ZONE = 39
98
99 RADIUS_CHAP_CHALLENGE = 60
100 RADIUS_NAS_PORT_TYPE = 61
101 RADIUS_PORT_LIMIT = 62
102 RADIUS_LOGIN_LAT_PORT = 63
103