예제 #1
0
 def get_password(self):
     """
     长度: 16(固定)
     描述: 该属性表明了待验证的用户的密码,在传输过程中是加密的。当用户采用PAP方式认证时,必须出现在REQ_AUTH(03)报文中。
     此属性值的长度要求少于32字节。
     """
     for attr in self.attrs:
         if attr[0] == 0x02:
             return pktutils.DecodeString(attr[1])
예제 #2
0
 def get_user_name(self):
     """
     长度: <=16(可变)
     描述: 该属性表示要认证的用户的名字,必须出现在REQ_AUTH(03)报文中。
     该属性表明了待验证的用户的密码,在传输过程中是加密的。当用户采用PAP方式认证时,必须出现在REQ_AUTH(03)报文中。
     """
     for attr in self.attrs:
         if attr[0] == 0x01:
             return pktutils.DecodeString(attr[1])
예제 #3
0
 def get_eap_message(self):
     """
     长度: <=254
     描述: 此属性主要适用于EAP_TLS认证。允许出现多个,EAP认证方式时,必须出现在REQ_AUTH及NTF_CHALLENGE报文中。
     属性值最长255个字节,用于证书请求报文(NTF_CHALLENGE(Type=0x012))和认证请求报文(REQ_AUTH(Type=0x03))。
     REQ_AUTH报文中该属性值中需要包含登录名,NTF_CHALLENGE报文中该属性值主要用于传输证书。
     """
     texts = []
     for attr in self.attrs:
         if attr[0] == 0x0e:
             texts.append(pktutils.DecodeString(attr[1]))
     return texts
예제 #4
0
 def get_port(self):
     """
     长度: >=2,<=255
     描述: 本属性只能用在REQ_INFO(Type=9)和ACK_INFO(Type=0x0a)报文中,数量不能超过1。
     当是REQ_INFO报文时,长度为2字节。
     当是ACK_INFO报文时,变长,但不能超过253字节。内容为一个字符串(无'\0'结束符)。
     属性值至少2字节,但不超过34字节。必须出现在REQ_INFO和ACK_INFO报文中。
     其格式为主机名-vlan-槽位(2 Bytes-vlan 标识(4 Bytes)@vlan-SSID-SSID标识(最长32字节)@SSID。
     """
     for attr in self.attrs:
         if attr[0] == 0x08:
             return pktutils.DecodeString(attr[1])
예제 #5
0
 def get_text_info(self):
     """
     长度: 大于等于3,小于等于255
     描述: 该属性用于BAS将RADIUS等第三方认证设备的提示信息透传到Portal Server。
     当认证失败时,表示认证失败原因。
     必须出现在NTF_LOGOUT报文中,表示BAS强制用户下线的原因,当认证拒绝或者认证超时的时候,必须出现在ACK_AUTH报文中。
     长度至少为3字节,但不超过253字节。内容可以为任意字符串,但是不包括字符串结束符‘\0’。
     该属性可以存在于从BAS到Portal Server的任何报文中,同一个报文中允许有多个该属性,建议只携带1个。
     """
     texts = []
     for attr in self.attrs:
         if attr[0] == 0x05:
             texts.append(pktutils.DecodeString(attr[1]))
     return texts