示例#1
0
 def get_delay_time(self):
     """
     \xe9\x95\xbf\xe5\xba\xa6: 6(\xe5\x9b\xba\xe5\xae\x9a)
     \xe6\x8f\x8f\xe8\xbf\xb0: \xe7\x94\xa8\xe6\x88\xb7\xe8\xae\xb0\xe5\xbd\x95\xe6\x8a\xa5\xe6\x96\x87\xe7\x9a\x84\xe5\x8f\x91\xe9\x80\x81\xe5\xbb\xb6\xe6\x97\xb6
     \xe5\xb1\x9e\xe6\x80\xa7\xe5\x80\xbc6\xe5\xad\x97\xe8\x8a\x82\xef\xbc\x8c\xe7\x94\xa8\xe4\xba\x8eREQ_LOGOUT\xef\xbc\x88Type\xef\xbc\x9d5\xef\xbc\x89\xe5\x92\x8cNTF_LOGOUT\xef\xbc\x88Type\xef\xbc\x9d8\xef\xbc\x89\xe6\x8a\xa5\xe6\x96\x87\xe4\xb8\xad\xef\xbc\x8c\xe8\xa1\xa8\xe7\xa4\xba\xe6\x8a\xa5\xe6\x96\x87\xe5\x8f\x91\xe9\x80\x81\xe6\x97\xb6\xe9\x97\xb4\xe4\xb8\x8e\xe5\xae\x9e\xe9\x99\x85\xe5\x8f\x91\xe7\x94\x9f\xe6\x97\xb6\xe9\x97\xb4\xe7\x9a\x84\xe9\x97\xb4\xe9\x9a\x94\xe3\x80\x82\xe7\x9b\xae\xe5\x89\x8d\xe6\xb2\xa1\xe6\x9c\x89\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82
     """
     for attr in self.attrs:
         if attr[0] == 12:
             return pktutils.DecodeOctets(attr[1])
示例#2
0
 def get_bas_ipv6(self):
     """
     \xe9\x95\xbf\xe5\xba\xa6: 16
     \xe6\x8f\x8f\xe8\xbf\xb0: \xe7\x94\xa8\xe4\xba\x8e\xe6\xa0\x87\xe8\xaf\x86BAS\xe8\xae\xbe\xe5\xa4\x87\xe7\x9a\x84IPv6\xe5\x9c\xb0\xe5\x9d\x80\xef\xbc\x8c\xe6\x89\x80\xe6\x9c\x89BAS\xe8\xae\xbe\xe5\xa4\x87\xe5\x8f\x91\xe9\x80\x81\xe7\x9a\x84\xe6\x8a\xa5\xe6\x96\x87\xe9\x83\xbd\xe5\xba\x94\xe8\xaf\xa5\xe6\x90\xba\xe5\xb8\xa6\xe8\xaf\xa5\xe5\xb1\x9e\xe6\x80\xa7\xe3\x80\x82
     \xe5\xb1\x9e\xe6\x80\xa7\xe5\x80\xbc16\xe5\xad\x97\xe8\x8a\x82\xe3\x80\x82\xe5\x8f\xaa\xe6\x9c\x89\xe5\x9c\xa8REQ_INFO\xe3\x80\x81REQ_CHALLENGE\xe6\x8a\xa5\xe6\x96\x87\xe4\xb8\xad\xe4\xb8\x8d\xe5\x90\xab\xe6\xad\xa4\xe5\xb1\x9e\xe6\x80\xa7\xef\xbc\x8c\xe5\x85\xb6\xe4\xbb\x96\xe6\x8a\xa5\xe6\x96\x87\xe5\xbf\x85\xe9\xa1\xbb\xe5\x8c\x85\xe5\x90\xab\xe6\xad\xa4\xe5\xb1\x9e\xe6\x80\xa7\xe3\x80\x82IPv4\xe7\x8e\xaf\xe5\xa2\x83\xe6\x97\xb6\xef\xbc\x8c\xe5\x85\xb6\xe5\x80\xbc\xe4\xb8\xba0\xe3\x80\x82
     """
     for attr in self.attrs:
         if attr[0] == 100:
             return pktutils.DecodeOctets(attr[1])
示例#3
0
 def get_chap_pwd(self):
     """
     \xe9\x95\xbf\xe5\xba\xa6: 16(\xe5\x9b\xba\xe5\xae\x9a)
     \xe6\x8f\x8f\xe8\xbf\xb0: \xe8\xaf\xa5\xe5\xb1\x9e\xe6\x80\xa7\xe8\xa1\xa8\xe7\xa4\xba\xe7\x94\xb1ppp chap\xe7\x94\xa8\xe6\x88\xb7\xe9\x80\x9a\xe8\xbf\x87MD5\xe7\xae\x97\xe6\xb3\x95\xe5\x8a\xa0\xe5\xaf\x86\xe5\x90\x8e\xe7\x9a\x84\xe5\xaf\x86\xe7\xa0\x81\xe3\x80\x82
     \xe5\xbd\x93\xe5\x87\xba\xe7\x8e\xb0\xe6\xad\xa4\xe5\xb1\x9e\xe6\x80\xa7\xe6\x97\xb6\xef\xbc\x8c\xe5\x85\xb6chap challenge\xe5\x9c\xa8Challenge\xef\xbc\x8803\xef\xbc\x89\xe5\xb1\x9e\xe6\x80\xa7\xe4\xb8\xad\xe3\x80\x82\xe5\xbd\x93\xe9\x87\x87\xe7\x94\xa8chap\xe6\x96\xb9\xe5\xbc\x8f\xe8\xae\xa4\xe8\xaf\x81\xe6\x97\xb6\xef\xbc\x8c\xe5\xbf\x85\xe9\xa1\xbb\xe5\x87\xba\xe7\x8e\xb0\xe5\x9c\xa8REQ_AUTH\xef\xbc\x8803\xef\xbc\x89\xe6\x8a\xa5\xe6\x96\x87\xe4\xb8\xad\xe3\x80\x82
     """
     for attr in self.attrs:
         if attr[0] == 4:
             return pktutils.DecodeOctets(attr[1])
示例#4
0
 def get_delay_time(self):
     """
     长度: 6(固定)
     描述: 用户记录报文的发送延时
     属性值6字节,用于REQ_LOGOUT(Type=5)和NTF_LOGOUT(Type=8)报文中,表示报文发送时间与实际发生时间的间隔。目前没有实现。
     """
     for attr in self.attrs:
         if attr[0] == 12:
             return pktutils.DecodeOctets(attr[1])
示例#5
0
 def get_challenge(self):
     """
     \xe9\x95\xbf\xe5\xba\xa6: 16(\xe5\x9b\xba\xe5\xae\x9a)
     \xe6\x8f\x8f\xe8\xbf\xb0: \xe8\xa1\xa8\xe7\xa4\xba\xe8\xae\xbe\xe5\xa4\x87\xe4\xbc\xa0\xe9\x80\x81\xe7\xbb\x99CHAP\xe8\xae\xa4\xe8\xaf\x81\xe7\x9a\x84\xe7\x94\xa8\xe6\x88\xb7\xe7\x9a\x84chap challenge\xe3\x80\x82
     \xe5\xae\x83\xe5\x8f\xaa\xe8\x83\xbd\xe7\x94\xa8\xe5\x9c\xa8chap\xe6\x96\xb9\xe5\xbc\x8f\xe8\xae\xa4\xe8\xaf\x81\xe7\x9a\x84REQ_AUTH(03)\xe6\x8a\xa5\xe6\x96\x87\xe4\xb8\xad\xef\xbc\x8c\xe5\xbd\x93\xe6\x98\xafCHAP\xe8\xae\xa4\xe8\xaf\x81\xe6\x96\xb9\xe5\xbc\x8f\xe6\x97\xb6\xef\xbc\x8c\xe5\xbf\x85\xe9\xa1\xbb\xe5\x87\xba\xe7\x8e\xb0\xe5\x9c\xa8REQ_AUTH\xe6\x8a\xa5\xe6\x96\x87\xe4\xb8\xad\xe3\x80\x82
     """
     for t, v in self.attrs:
         if t == 3:
             return pktutils.DecodeOctets(v)
示例#6
0
 def get_bas_ipv6(self):
     """
     长度: 16
     描述: 用于标识BAS设备的IPv6地址,所有BAS设备发送的报文都应该携带该属性。
     属性值16字节。只有在REQ_INFO、REQ_CHALLENGE报文中不含此属性,其他报文必须包含此属性。IPv4环境时,其值为0。
     """
     for attr in self.attrs:
         if attr[0] == 100:
             return pktutils.DecodeOctets(attr[1])
示例#7
0
 def get_chap_pwd(self):
     """
     长度: 16(固定)
     描述: 该属性表示由ppp chap用户通过MD5算法加密后的密码。
     当出现此属性时,其chap challenge在Challenge(03)属性中。当采用chap方式认证时,必须出现在REQ_AUTH(03)报文中。
     """
     for attr in self.attrs:
         if attr[0] == 4:
             return pktutils.DecodeOctets(attr[1])
示例#8
0
 def get_challenge(self):
     """
     长度: 16(固定)
     描述: 表示设备传送给CHAP认证的用户的chap challenge。
     它只能用在chap方式认证的REQ_AUTH(03)报文中,当是CHAP认证方式时,必须出现在REQ_AUTH报文中。
     """
     for t, v in self.attrs:
         if t == 3:
             return pktutils.DecodeOctets(v)
示例#9
0
 def get_user_list(self):
     """
     \xe9\x95\xbf\xe5\xba\xa6: >=6,<=254
     \xe6\x8f\x8f\xe8\xbf\xb0: \xe5\xb1\x9e\xe6\x80\xa7\xe5\x80\xbc\xe6\x9c\x80\xe7\x9f\xad4\xe4\xb8\xaa\xe5\xad\x97\xe8\x8a\x82\xef\xbc\x8c\xe6\x9c\x80\xe9\x95\xbf252\xe4\xb8\xaa\xe5\xad\x97\xe8\x8a\x82\xef\xbc\x8c
     \xe7\x94\xa8\xe4\xba\x8e\xe7\x94\xa8\xe6\x88\xb7\xe5\xbf\x83\xe8\xb7\xb3\xe6\x8a\xa5\xe6\x96\x87\xef\xbc\x88NTF_USER_HEARTBEAT\xef\xbc\x88Type=0x010\xef\xbc\x89\xef\xbc\x89\xe5\x92\x8c\xe7\x94\xa8\xe6\x88\xb7\xe5\xbf\x83\xe8\xb7\xb3\xe5\x9b\x9e\xe5\xba\x94\xe6\x8a\xa5\xe6\x96\x87\xef\xbc\x88ACK_NTF_USER_HEARTBEAT\xef\xbc\x88Type=0x11\xef\xbc\x89\xef\xbc\x89\xe3\x80\x82
     \xe5\xb1\x9e\xe6\x80\xa7\xe5\x80\xbc\xe4\xb8\xad\xe5\x8c\x85\xe5\x90\xab\xe4\xba\x86\xe7\x94\xa8\xe6\x88\xb7IP\xe5\x9c\xb0\xe5\x9d\x80\xe5\x88\x97\xe8\xa1\xa8\xef\xbc\x8c\xe6\xaf\x8f\xe4\xb8\xaa\xe7\x94\xa8\xe6\x88\xb7IP\xe5\x9c\xb0\xe5\x9d\x80\xe5\x8d\xa0\xe7\x94\xa84\xe4\xb8\xaa\xe5\xad\x97\xe8\x8a\x82\xef\xbc\x8c\xe4\xb8\xad\xe9\x97\xb4\xe6\xb2\xa1\xe6\x9c\x89\xe5\x88\x86\xe9\x9a\x94\xe7\xac\xa6\xe3\x80\x82
     """
     for attr in self.attrs:
         if attr[0] == 13:
             return pktutils.DecodeOctets(attr[1])
示例#10
0
 def get_session_id(self):
     """
     \xe9\x95\xbf\xe5\xba\xa6: 6(\xe5\x9b\xba\xe5\xae\x9a)
     \xe6\x8f\x8f\xe8\xbf\xb0: \xe6\xad\xa4\xe5\xb1\x9e\xe6\x80\xa7\xe7\x94\xa8\xe6\x9d\xa5\xe6\xa0\x87\xe8\xaf\x86\xe7\x94\xa8\xe6\x88\xb7\xef\xbc\x8c\xe5\xbb\xba\xe8\xae\xae\xe5\x8f\x96\xe7\x94\xa8\xe6\x88\xb7\xe7\x9a\x84mac\xe5\x9c\xb0\xe5\x9d\x80\xe3\x80\x82
     \xe5\xb1\x9e\xe6\x80\xa7\xe5\x80\xbc6\xe5\xad\x97\xe8\x8a\x82\xe3\x80\x82\xe5\xbd\x93BAS\xe5\x85\xb3\xe5\xbf\x83\xe7\x94\xa8\xe6\x88\xb7\xe7\x9a\x84mac\xe5\x9c\xb0\xe5\x9d\x80\xe6\x97\xb6\xef\xbc\x8c
     \xe5\xbf\x85\xe9\xa1\xbb\xe5\x87\xba\xe7\x8e\xb0\xe5\x9c\xa8ACK_AUTH\xef\xbc\x8cACK_LOGOUT\xef\xbc\x8cNTF_LOGOUT\xe5\x92\x8cNTF_USERIPCHAN\xe6\x8a\xa5\xe6\x96\x87\xe4\xb8\xad\xef\xbc\x8c\xe5\x90\xa6\xe5\x88\x99\xe5\x8f\xaf\xe4\xbb\xa5\xe4\xb8\x8d\xe5\x87\xba\xe7\x8e\xb0\xe3\x80\x82
     """
     for attr in self.attrs:
         if attr[0] == 11:
             return pktutils.DecodeOctets(attr[1])
示例#11
0
 def get_user_list(self):
     """
     长度: >=6,<=254
     描述: 属性值最短4个字节,最长252个字节,
     用于用户心跳报文(NTF_USER_HEARTBEAT(Type=0x010))和用户心跳回应报文(ACK_NTF_USER_HEARTBEAT(Type=0x11))。
     属性值中包含了用户IP地址列表,每个用户IP地址占用4个字节,中间没有分隔符。
     """
     for attr in self.attrs:
         if attr[0] == 13:
             return pktutils.DecodeOctets(attr[1])
示例#12
0
 def get_session_id(self):
     """
     长度: 6(固定)
     描述: 此属性用来标识用户,建议取用户的mac地址。
     属性值6字节。当BAS关心用户的mac地址时,
     必须出现在ACK_AUTH,ACK_LOGOUT,NTF_LOGOUT和NTF_USERIPCHAN报文中,否则可以不出现。
     """
     for attr in self.attrs:
         if attr[0] == 11:
             return pktutils.DecodeOctets(attr[1])
示例#13
0
 def get_user_notify(self):
     """
     \xe9\x95\xbf\xe5\xba\xa6: <=254
     \xe6\x8f\x8f\xe8\xbf\xb0: \xe6\xad\xa4\xe5\xb1\x9e\xe6\x80\xa7\xe4\xb8\xbb\xe8\xa6\x81\xe7\x94\xa8\xe4\xba\x8e\xe9\x80\x8f\xe4\xbc\xa0\xe7\x9a\x84Radius\xe8\xae\xa1\xe8\xb4\xb9\xe5\x9b\x9e\xe5\xba\x94\xe6\x8a\xa5\xe6\x96\x87\xe4\xb8\xad\xe7\x9a\x84hw_User_Notify\xe5\x86\x85\xe5\xae\xb9\xe3\x80\x82
     \xe5\xb1\x9e\xe6\x80\xa7\xe5\x80\xbc\xe6\x9c\x80\xe9\x95\xbf255\xe4\xb8\xaa\xe5\xad\x97\xe8\x8a\x82\xef\xbc\x8c\xe7\x94\xa8\xe4\xba\x8e\xe7\x94\xa8\xe6\x88\xb7\xe6\xb6\x88\xe6\x81\xaf\xe9\x80\x9a\xe7\x9f\xa5\xe6\x8a\xa5\xe6\x96\x87\xef\xbc\x88NTF_USER_NOTIFY\xef\xbc\x88Type=0x013\xef\xbc\x89\xef\xbc\x89,
     \xe5\xb0\x86Radius\xe6\x9c\x8d\xe5\x8a\xa1\xe5\x99\xa8\xe7\x9a\x84\xe8\xae\xa1\xe8\xb4\xb9\xe5\xbc\x80\xe5\xa7\x8b\xe5\x9b\x9e\xe5\xba\x94\xe6\x8a\xa5\xe6\x96\x87\xe4\xb8\xad\xe7\x9a\x84hw_User_Notify\xe5\x86\x85\xe5\xae\xb9\xe9\x80\x8f\xe4\xbc\xa0\xe7\xbb\x99\xe5\xae\xa2\xe6\x88\xb7\xe7\xab\xaf\xe3\x80\x82
     \xe5\x8f\xaf\xe4\xbb\xa5\xe5\xae\x9e\xe7\x8e\xb0Portal\xe8\xae\xa4\xe8\xaf\x81\xe9\x80\x9a\xe8\xbf\x87\xe5\x90\x8e\xe6\x8f\x90\xe7\xa4\xba\xe5\xb8\x90\xe5\x8f\xb7\xe4\xbd\x99\xe9\xa2\x9d\xe7\xad\x89\xe9\x87\x8d\xe8\xa6\x81\xe4\xbf\xa1\xe6\x81\xaf\xe3\x80\x82
     """
     for attr in self.attrs:
         if attr[0] == 15:
             return pktutils.DecodeOctets(attr[1])
示例#14
0
 def get_useripv6_list(self):
     """
     长度: >=18,<=252
     描述: 用于标识接入用户的IPv6地址,其值由Portal Server根据用户获得的IPv6地址填写。
     属性值最短16个字节,最长252个字节,用于用户心跳报文(NTF_USER_HEARTBEAT(Type=0x010))
     和用户心跳回应报文(ACK_NTF_USER_HEARTBEAT(Type=0x11))。属性值中包含了用户IPv6地址列表,
     每个用户IPv6地址占用16个字节,中间没有分隔符。
     """
     for attr in self.attrs:
         if attr[0] == 101:
             return pktutils.DecodeOctets(attr[1])
示例#15
0
 def get_user_notify(self):
     """
     长度: <=254
     描述: 此属性主要用于透传的Radius计费回应报文中的hw_User_Notify内容。
     属性值最长255个字节,用于用户消息通知报文(NTF_USER_NOTIFY(Type=0x013)),
     将Radius服务器的计费开始回应报文中的hw_User_Notify内容透传给客户端。
     可以实现Portal认证通过后提示帐号余额等重要信息。
     """
     for attr in self.attrs:
         if attr[0] == 15:
             return pktutils.DecodeOctets(attr[1])