def get_password(self): """ 长度: 16(固定) 描述: 该属性表明了待验证的用户的密码,在传输过程中是加密的。当用户采用PAP方式认证时,必须出现在REQ_AUTH(03)报文中。 此属性值的长度要求少于32字节。 """ for attr in self.attrs: if attr[0] == 0x02: return pktutils.DecodeString(attr[1])
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])
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
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])
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