7
votes

Vérifiez si l'adresse IPv4 est en rangée privée

en Python, à l'aide du module IPY, vous pouvez procéder comme suit:

 >>> ip.iptype()
'PRIVATE'


3 commentaires

3 Réponses :


11
votes

Il semble que ce ne semble pas exactement mais inetaddress a des méthodes isxx () telles que: isanylocaladdress () et ISSITELOCALADDRESS ()


3 commentaires

Le issitelocaladdress () est celui que j'ai trouvé le plus utile pour déterminer des adresses IP privées.


ISSITELOCALADDRESS () Retours FALSE pour 127.0.0.1 , vous devez donc vérifier s'il est localhost avec isloopbackaddress () en outre.


codereview. Stackexchange.com/Questtions/65071/...



3
votes

Si INETAddress ne " t Travaillez pour vous alors il devrait être assez facile de traduire après Code Python à Java:

IPv4ranges = {
    '0':                'PUBLIC',   # fall back
    '00000000':         'PRIVATE',  # 0/8
    '00001010':         'PRIVATE',  # 10/8
    '01111111':         'PRIVATE',  # 127.0/8
    '1':                'PUBLIC',   # fall back
    '1010100111111110': 'PRIVATE',  # 169.254/16
    '101011000001':     'PRIVATE',  # 172.16/12
    '1100000010101000': 'PRIVATE',  # 192.168/16
    '111':              'RESERVED'  # 224/3
    }

def iptype(self):
    if self._ipversion == 4:
        iprange = IPv4ranges
    elif self._ipversion == 6:
        iprange = IPv6ranges
    else:
        raise ValueError("only IPv4 and IPv6 supported")

    bits = self.strBin()
    for i in xrange(len(bits), 0, -1):
        if bits[:i] in iprange:
            return iprange[bits[:i]]
    return "unknown"


1 commentaires

@Alexr Yup, dans la plupart des cas, ce n'est pas le cas. :) Je ne suis pas python ou IP Pro, je viens de googler le module que vous utilisiez à Python, j'ai trouvé la fonction que vous utilisiez et la place ici. :)



5
votes

Je crois qu'Inet4Address.Iissitelocaladdress () Est-ce que vous voulez. Voici un exemple: xxx


0 commentaires