diff --git a/scapy/arch/windows/__init__.py b/scapy/arch/windows/__init__.py index f2861a0c2ab33980cc5aa0474c991aa79614f6b5..db30caba43ba03d79a5306a2a455503933b7fbaf 100755 --- a/scapy/arch/windows/__init__.py +++ b/scapy/arch/windows/__init__.py @@ -13,6 +13,7 @@ import subprocess as sp from glob import glob import tempfile +import scapy from scapy.config import conf, ConfClass from scapy.error import Scapy_Exception, log_loading, log_runtime, warning from scapy.utils import atol, itom, inet_aton, inet_ntoa, PcapReader @@ -459,7 +460,6 @@ class NetworkInterfaceDict(UserDict): scapy.consts.LOOPBACK_INTERFACE = self.dev_from_name( scapy.consts.LOOPBACK_NAME, ) - except: pass def dev_from_name(self, name): @@ -814,7 +814,7 @@ def route_add_loopback(routes=None, ipv6=False, iflist=None): if not conf.route.routes: return data = {} - data['name'] = LOOPBACK_NAME + data['name'] = scapy.consts.LOOPBACK_NAME data['description'] = "Loopback" data['win_index'] = -1 data['guid'] = "{0XX00000-X000-0X0X-X00X-00XXXX000XXX}" @@ -827,11 +827,11 @@ def route_add_loopback(routes=None, ipv6=False, iflist=None): # Remove all LOOPBACK_NAME routes for route in list(conf.route.routes): iface = route[3] - if iface.name == LOOPBACK_NAME: + if iface.name == scapy.consts.LOOPBACK_NAME: conf.route.routes.remove(route) # Remove LOOPBACK_NAME interface for devname, iface in IFACES.items(): - if iface.name == LOOPBACK_NAME: + if iface.name == scapy.consts.LOOPBACK_NAME: IFACES.pop(devname) # Inject interface IFACES[data['guid']] = adapter diff --git a/scapy/consts.py b/scapy/consts.py index 9b31a71e9f53b2fffd038d1996a2d6a32c4fd995..ff6b771b55905142a33ae461fec6c350e437358c 100644 --- a/scapy/consts.py +++ b/scapy/consts.py @@ -68,12 +68,12 @@ if WINDOWS: LOOPBACK_NAME = "Microsoft Loopback Adapter" except ValueError: LOOPBACK_NAME = "Microsoft Loopback Adapter" + # Will be different on Windows + LOOPBACK_INTERFACE = None else: uname = os.uname() LOOPBACK_NAME = "lo" if LINUX else "lo0" - -# Will be different on Windows -LOOPBACK_INTERFACE = LOOPBACK_NAME + LOOPBACK_INTERFACE = LOOPBACK_NAME def parent_function(): return inspect.getouterframes(inspect.currentframe()) diff --git a/scapy/layers/l2.py b/scapy/layers/l2.py index ddb9307dbc4b8ccc7dae82f738481943591658e2..3aa148adcdcb28f00ecff0742253caabc355e32f 100644 --- a/scapy/layers/l2.py +++ b/scapy/layers/l2.py @@ -11,6 +11,7 @@ from __future__ import absolute_import from __future__ import print_function import os, struct, time, socket +import scapy from scapy.base_classes import Net from scapy.config import conf from scapy.data import * @@ -21,7 +22,6 @@ from scapy.plist import SndRcvList from scapy.fields import * from scapy.sendrecv import srp, srp1, srpflood from scapy.arch import get_if_hwaddr -from scapy.consts import LOOPBACK_INTERFACE from scapy.utils import inet_ntoa, inet_aton from scapy.error import warning if conf.route is None: @@ -66,7 +66,7 @@ def getmacbyip(ip, chainCC=0): if (tmp[0] & 0xf0) == 0xe0: # mcast @ return "01:00:5e:%.2x:%.2x:%.2x" % (tmp[1]&0x7f,tmp[2],tmp[3]) iff,a,gw = conf.route.route(ip) - if ( (iff == LOOPBACK_INTERFACE) or (ip == conf.route.get_if_bcast(iff)) ): + if ( (iff == scapy.consts.LOOPBACK_INTERFACE) or (ip == conf.route.get_if_bcast(iff)) ): return "ff:ff:ff:ff:ff:ff" if gw != "0.0.0.0": ip = gw diff --git a/scapy/route.py b/scapy/route.py index 40a730774228045e57e48af9aad6d6a787868d75..411fc03c888a5f20be7318ff2c014478b1ec728a 100644 --- a/scapy/route.py +++ b/scapy/route.py @@ -8,7 +8,6 @@ Routing and handling of network interfaces. """ from __future__ import absolute_import -from scapy.consts import LOOPBACK_NAME, LOOPBACK_INTERFACE from scapy.utils import atol, ltoa, itom, pretty_routes from scapy.config import conf from scapy.error import Scapy_Exception, warning @@ -153,13 +152,13 @@ class Route: continue aa = atol(a) if aa == dst: - pathes.append((0xffffffff,(LOOPBACK_INTERFACE,a,"0.0.0.0"))) + pathes.append((0xffffffff,(scapy.consts.LOOPBACK_INTERFACE,a,"0.0.0.0"))) if (dst & m) == (d & m): pathes.append((m,(i,a,gw))) if not pathes: if verbose: warning("No route found (no default route?)") - return LOOPBACK_INTERFACE,"0.0.0.0","0.0.0.0" + return scapy.consts.LOOPBACK_INTERFACE,"0.0.0.0","0.0.0.0" # Choose the more specific route (greatest netmask). # XXX: we don't care about metrics pathes.sort(key=lambda x: x[0]) @@ -184,6 +183,6 @@ conf.route=Route() #XXX use "with" _betteriface = conf.route.route("0.0.0.0", verbose=0)[0] -if ((_betteriface if (isinstance(_betteriface, six.string_types) or _betteriface is None) else _betteriface.name) != LOOPBACK_NAME): +if ((_betteriface if (isinstance(_betteriface, six.string_types) or _betteriface is None) else _betteriface.name) != scapy.consts.LOOPBACK_NAME): conf.iface = _betteriface del(_betteriface) diff --git a/scapy/route6.py b/scapy/route6.py index fe433f33739ae59ae57fe2201472d18fec1eb085..d31412dfc9aad98577a800b91980aae945a899a1 100644 --- a/scapy/route6.py +++ b/scapy/route6.py @@ -18,12 +18,12 @@ Routing and network interface handling for IPv6. from __future__ import absolute_import import socket +import scapy from scapy.config import conf from scapy.utils6 import * from scapy.arch import * from scapy.pton_ntop import * from scapy.error import warning, log_loading -from scapy.consts import LOOPBACK_INTERFACE import scapy.modules.six as six @@ -220,7 +220,7 @@ class Route6: if not pathes: warning("No route found for IPv6 destination %s (no default route?)" % dst) - return (LOOPBACK_INTERFACE, "::", "::") + return (scapy.consts.LOOPBACK_INTERFACE, "::", "::") # Sort with longest prefix first pathes.sort(reverse=True) @@ -237,7 +237,7 @@ class Route6: if res == []: warning("Found a route for IPv6 destination '%s', but no possible source address." % dst) - return (LOOPBACK_INTERFACE, "::", "::") + return (scapy.consts.LOOPBACK_INTERFACE, "::", "::") # Symptom : 2 routes with same weight (our weight is plen) # Solution :