You got the task to generate a list of IP-Networks connected to LAN „VirtualBox Host-Only Network“. There might be more than one IP-Network.
Use Scapy to crawl through all Interfaces and get the human-readable interface name [only required for windows users]. Use NetIfaces to get a list of IP-Addresses connected to this interface. Use IPAddress to calculate the IP-Network(s) directly connected.
! multiple IPs per Interface supporte ! from netifaces import AF_INET, AF_INET6, AF_LINK import netifaces from scapy.all import * import ipaddress if_name = "VirtualBox Host-Only Network" if_id = "" if_inet = [] for i in ifaces.data.keys(): iface = ifaces.data[i] wname = iface.data['netid'] if wname == if_name: if_id = i addresses = netifaces.ifaddresses(i) if AF_INET in addresses: for addr in netifaces.ifaddresses(i)[AF_INET]: print(addr) ipaddr = ipaddress.ip_interface(addr["addr"]+"/"+addr["netmask"]) ipnetwork = ipaddr.network print(ipaddr,ipnetwork) if_inet.append(ipnetwork) print("NAME: {0}\nIP: {1}\nID: {2}".format(if_name,if_inet,if_id))
In my case, only one subnet is directly connected:
- 192.168.56.0/24
... {'addr': '192.168.56.1', 'netmask': '255.255.255.0', 'broadcast': '192.168.56.255'} 192.168.56.1/24 192.168.56.0/24 >>> print("NAME: {0}\nIP: {1}\nID: {2}".format(if_name,if_inet,if_id)) NAME: VirtualBox Host-Only Network IP: [IPv4Network('192.168.56.0/24')] ID: {D30DEC05-D495-4DA1-81F1-42B07885B0EB} >>>