Programa de Python para encontrar el tipo de dirección IP usando Regex

Requisito previo: Python Regex

Dada una dirección IP como entrada, escriba un programa Python para encontrar el tipo de dirección IP, es decir, IPv4 o IPv6 . Si el dado no es ninguno de ellos, imprima ninguno.

¿Qué es una dirección IP (Protocolo de Internet)?

Cada computadora conectada a Internet se identifica mediante una string única de cuatro partes, conocida como su dirección de Protocolo de Internet (IP). IPv4 e IPv6 son la versión 4 del protocolo de Internet y la versión 6 del protocolo de Internet. La versión 6 de IP es la nueva versión del Protocolo de Internet, que es mucho mejor que la versión 4 de IP en términos de complejidad y eficiencia.

  • IPv4 fue la versión principal que entró en acción para la producción dentro de ARPANET en 1983. Las direcciones IP de la versión cuatro son números enteros de 32 bits que se expresarán en notación hexadecimal.
  • IPv6 fue desarrollado por el Grupo de trabajo de ingeniería de Internet (IETF) para abordar el problema del agotamiento de IP v4. IP v6 es una dirección de 128 bits que tiene un espacio de direcciones de 2 128 , que es mucho más grande que IPv4. En IPv6 usamos la representación Colon-Hexa. Hay 8 grupos y cada grupo representa 2 bytes.

Ejemplos:

Input: 192.0.2.126
Output: IPv4

Input: 3001:0da8:75a3:0000:0000:8a2e:0370:7334
Output: IPv6

Input: 36.12.08.20.52
Output: Neither

Acercarse:

  • Tome la dirección IP como entrada.
  • Ahora, verifique si esta dirección IP se parece a las direcciones de tipo IPv4 usando expresiones regulares.
  • En caso afirmativo, imprima «IPv4», de lo contrario, compruebe si esta dirección IP se parece a las direcciones de tipo IPv6 usando expresiones regulares.
  • En caso afirmativo, imprima «IPv6».
  • Si la dirección no se parece a ninguno de los tipos anteriores, imprimiremos «Ninguno».

A continuación se muestra la implementación del enfoque anterior:

Python3

# Python program to find the type of Ip address
 
# re module provides support
# for regular expressions
import re
 
# Make a regular expression
# for validating an Ipv4
ipv4 = '''^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(
            25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(
            25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.(
            25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$'''
 
# Make a regular expression
# for validating an Ipv6
ipv6 = '''(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|
        ([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:)
        {1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1
        ,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}
        :){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{
        1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA
        -F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a
        -fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0
        -9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,
        4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}
        :){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9
        ])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0
        -9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]
        |1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]
        |1{0,1}[0-9]){0,1}[0-9]))'''
 
# Define a function for finding
# the type of Ip address
def find(Ip): 
   
    # pass the regular expression
    # and the string in search() method
    if re.search(ipv4, Ip):
        print("IPv4")
    elif re.search(ipv6, Ip):
        print("IPv6")
    else:
        print("Neither")
 
# Driver Code 
if __name__ == '__main__' : 
       
    # Enter the Ip address
    Ip = "192.0.2.126"
       
    # calling run function 
    find(Ip)
   
    Ip = "3001:0da8:75a3:0000:0000:8a2e:0370:7334"
    find(Ip)
   
    Ip = "36.12.08.20.52"
    find(Ip)

Producción:

IPv4
IPv6
Neither

Publicación traducida automáticamente

Artículo escrito por aditya_taparia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *