Package dpkt :: Module radius
[hide private]
[frames] | no frames]

Source Code for Module dpkt.radius

 1  # $Id: radius.py 23 2006-11-08 15:45:33Z dugsong $ 
 2   
 3  """Remote Authentication Dial-In User Service.""" 
 4   
 5  import dpkt 
 6   
 7  # http://www.untruth.org/~josh/security/radius/radius-auth.html 
 8  # RFC 2865 
 9   
10 -class RADIUS(dpkt.Packet):
11 __hdr__ = ( 12 ('code', 'B', 0), 13 ('id', 'B', 0), 14 ('len', 'H', 4), 15 ('auth', '16s', '') 16 ) 17 attrs = ''
18 - def unpack(self, buf):
19 dpkt.Packet.unpack(self, buf) 20 self.attrs = parse_attrs(self.data) 21 self.data = ''
22
23 -def parse_attrs(buf):
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 # Codes 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 # Attributes 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 # unassigned 62 RADIUS_REPLY_MESSAGE = 18 63 RADIUS_CALLBACK_NUMBER = 19 64 RADIUS_CALLBACK_ID = 20 65 # unassigned 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 # 40-59 reserved for accounting 85 RADIUS_CHAP_CHALLENGE = 60 86 RADIUS_NAS_PORT_TYPE = 61 87 RADIUS_PORT_LIMIT = 62 88 RADIUS_LOGIN_LAT_PORT = 63 89