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  # -*- coding: utf-8 -*- 
  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  # http://www.untruth.org/~josh/security/radius/radius-auth.html 
 10  # RFC 2865 
 11   
 12   
13 -class RADIUS(dpkt.Packet):
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
31 - def unpack(self, buf):
32 dpkt.Packet.unpack(self, buf) 33 self.attrs = parse_attrs(self.data) 34 self.data = b''
35 36
37 -def parse_attrs(buf):
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 # Codes 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 # Attributes 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 # unassigned 76 RADIUS_REPLY_MESSAGE = 18 77 RADIUS_CALLBACK_NUMBER = 19 78 RADIUS_CALLBACK_ID = 20 79 # unassigned 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 # 40-59 reserved for accounting 99 RADIUS_CHAP_CHALLENGE = 60 100 RADIUS_NAS_PORT_TYPE = 61 101 RADIUS_PORT_LIMIT = 62 102 RADIUS_LOGIN_LAT_PORT = 63 103