Example #1
0
 def newNtfHeart(secret, basip=None, chap=True, mac=None):
     """0x0f NTF_HEARTBEAT"""
     pkt = Portal.newMessage(NTF_HEARTBEAT,
                             '0.0.0.0',
                             CurrentSN(),
                             0,
                             secret,
                             chap=chap)
     bas_addr = basip and pktutils.EncodeAddress(basip) or None
     if bas_addr:
         pkt.attrNum = 1
         pkt.attrs = [(0x0a, bas_addr)]
     return pkt
Example #2
0
 def newMessage(typ,
                userIp,
                serialNo,
                reqId,
                secret,
                basip=None,
                chap=False):
     return Portal(type=typ,
                   isChap=0x00 if chap else 0x01,
                   userIp=pktutils.EncodeAddress(userIp),
                   serialNo=serialNo,
                   reqId=reqId,
                   secret=six.b(secret))
Example #3
0
 def newReqLogout(userIp,
                  secret,
                  basip=None,
                  serialNo=None,
                  chap=True,
                  mac=None):
     """0x05"""
     pkt = Portal.newMessage(REQ_LOGOUT,
                             userIp, (serialNo or CurrentSN()),
                             0,
                             secret,
                             chap=chap)
     bas_addr = basip and pktutils.EncodeAddress(basip) or None
     if bas_addr:
         pkt.attrNum = 1
         pkt.attrs = [(0x0a, bas_addr)]
     return pkt
Example #4
0
 def newAffAckAuth(userIp,
                   secret,
                   basip=None,
                   serialNo=None,
                   reqId=None,
                   chap=True,
                   mac=None):
     """0x07"""
     pkt = Portal.newMessage(AFF_ACK_AUTH,
                             userIp, (serialNo or CurrentSN()),
                             (reqId or 0),
                             secret,
                             chap=chap)
     bas_addr = basip and pktutils.EncodeAddress(basip) or None
     if bas_addr:
         pkt.attrNum = 1
         pkt.attrs = [(0x0a, bas_addr)]
     return pkt
Example #5
0
    def newReqAuth(userIp,
                   username,
                   password,
                   reqId,
                   challenge,
                   secret,
                   basip=None,
                   serialNo=None,
                   chap=False,
                   mac=None):
        """0x03"""
        pkt = PortalV2.newMessage(REQ_AUTH,
                                  userIp, (serialNo or CurrentSN()),
                                  reqId,
                                  secret,
                                  chap=chap)
        username = pktutils.EncodeString(username)
        password = pktutils.EncodeString(password)
        bas_addr = basip and pktutils.EncodeAddress(basip) or None
        if chap:
            _reqid = struct.pack('>H', reqId)
            chap_pwd = md5_constructor(
                "%s%s%s" % (_reqid[1], password, challenge)).digest()
            pkt.attrNum = 3
            pkt.attrs = [(0x01, username), (0x03, challenge), (0x04, chap_pwd)]

            if bas_addr:
                pkt.attrNum += 1
                pkt.attrs.append((0x0a, bas_addr))

        else:
            pkt.attrNum = 2
            pkt.attrs = [
                (0x01, username),
                (0x02, password),
            ]

            if bas_addr:
                pkt.attrNum += 1
                pkt.attrs.append((0x0a, bas_addr))

        pkt.auth_packet()
        return pkt