diff --git a/scapy/arch/windows/__init__.py b/scapy/arch/windows/__init__.py index e10ee4a3c..9d359d02f 100755 --- a/scapy/arch/windows/__init__.py +++ b/scapy/arch/windows/__init__.py @@ -417,27 +417,32 @@ class NetworkInterface(object): # Other attributes are optional self._update_pcapdata() + try: + # Npcap loopback interface + if self.name == scapy.consts.LOOPBACK_NAME and conf.use_npcap: + # https://nmap.org/npcap/guide/npcap-devguide.html + self.mac = "00:00:00:00:00:00" + self.ip = "127.0.0.1" + conf.cache_ipaddrs[self.pcap_name] = socket.inet_aton(self.ip) + return + else: + self.mac = data['mac'] + except KeyError: + pass + try: self.ip = socket.inet_ntoa(get_if_raw_addr(self)) except (TypeError, NameError): pass try: + # Windows native loopback interface if not self.ip and self.name == scapy.consts.LOOPBACK_NAME: self.ip = "127.0.0.1" conf.cache_ipaddrs[self.pcap_name] = socket.inet_aton(self.ip) except (KeyError, AttributeError, NameError) as e: print(e) - try: - if self.name == scapy.consts.LOOPBACK_NAME and conf.use_npcap: - # https://nmap.org/npcap/guide/npcap-devguide.html - self.mac = "00:00:00:00:00:00" - else: - self.mac = data['mac'] - except KeyError: - pass - def _update_pcapdata(self): if self.is_invalid(): return @@ -705,6 +710,7 @@ class NetworkInterfaceDict(UserDict): def reload(self): """Reload interface list""" + self.restarted_adapter = False self.data.clear() self.load_from_powershell()