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