diff --git a/scapy/arch/__init__.py b/scapy/arch/__init__.py index d76ba5b49615bbe8901e78758d9cf1012cab0a22..f8cb4bf91633b122a8bd1579058dd10faaa13e3b 100644 --- a/scapy/arch/__init__.py +++ b/scapy/arch/__init__.py @@ -68,14 +68,6 @@ elif SOLARIS: from scapy.arch.solaris import * elif WINDOWS: from scapy.arch.windows import * - # import only if parent is not route.py - # because compatibility.py will require route.py to work (through sendrecv.py) - parents = parent_function() - if len(parents) >= 3: - if not parents[2][1].endswith("route.py"): - from scapy.arch.windows.compatibility import * - else: - from scapy.arch.windows.compatibility import * if scapy.config.conf.iface is None: scapy.config.conf.iface = LOOPBACK_NAME diff --git a/scapy/arch/windows/__init__.py b/scapy/arch/windows/__init__.py index ade8935f42c95b8b475edb94a9d4f5ae4a146bea..154a667fdeb281e392d7678d3b1edaff55dd3f82 100755 --- a/scapy/arch/windows/__init__.py +++ b/scapy/arch/windows/__init__.py @@ -423,7 +423,7 @@ class NetworkInterfaceDict(UserDict): except (KeyError, PcapNameNotFoundError): pass - if len(self.data) == 0 and conf.use_winpcapy: + if not self.data and conf.use_winpcapy: _detect = pcap_service_status() def _ask_user(): if not conf.interactive: @@ -692,7 +692,7 @@ def _append_route6(routes, dpref, dp, nh, iface, lifaddr): else: devaddrs = (x for x in lifaddr if x[2] == iface) cset = scapy.utils6.construct_source_candidate_set(dpref, dp, devaddrs) - if len(cset) == 0: + if not cset: return # APPEND (DESTINATION, NETMASK, NEXT HOP, IFACE, CANDIDATS) routes.append((dpref, dp, nh, iface, cset)) @@ -745,7 +745,7 @@ def _read_routes6_7(): index = 0 for l in stdout.split('\n'): if not l.strip(): - if len(current_object) == 0: + if not current_object: continue if len(current_object) == len(regex_list): @@ -836,10 +836,10 @@ def route_add_loopback(routes=None, ipv6=False, iflist=None): warning("This will completly mess up the routes. Testing purpose only !") # Add only if some adpaters already exist if ipv6: - if len(conf.route6.routes) == 0: + if not conf.route6.routes: return else: - if len(conf.route.routes) == 0: + if not conf.route.routes: return data = {} data['name'] = LOOPBACK_NAME @@ -884,3 +884,16 @@ def route_add_loopback(routes=None, ipv6=False, iflist=None): routes.append(loopback_route6_custom) else: routes.append(loopback_route) + + +if not conf.use_winpcapy: + + class NotAvailableSocket(SuperSocket): + desc = "wpcap.dll missing" + def __init__(self, *args, **kargs): + raise RuntimeError("Sniffing and sending packets is not available: " + "winpcap is not installed") + + conf.L2socket = NotAvailableSocket + conf.L2listen = NotAvailableSocket + conf.L3socket = NotAvailableSocket diff --git a/scapy/arch/windows/compatibility.py b/scapy/arch/windows/compatibility.py deleted file mode 100644 index 5038b8e95865d3d8ac1c18aaedaa1d884acec062..0000000000000000000000000000000000000000 --- a/scapy/arch/windows/compatibility.py +++ /dev/null @@ -1,16 +0,0 @@ -## This file is part of Scapy -## See http://www.secdev.org/projects/scapy for more informations -## Copyright (C) Philippe Biondi <phil@secdev.org> -## This program is published under a GPLv2 license - -""" -Instanciate part of the customizations needed to support Microsoft Windows. -""" - -from __future__ import absolute_import, print_function - -from scapy.config import conf - -# If wpcap.dll is not available -if not (conf.use_winpcapy or conf.use_pcap or conf.use_dnet): - from scapy.arch.windows.disable_sendrecv import * diff --git a/scapy/arch/windows/disable_sendrecv.py b/scapy/arch/windows/disable_sendrecv.py deleted file mode 100644 index e9d514c6f2a341982711b90cc921dce6423fcc4d..0000000000000000000000000000000000000000 --- a/scapy/arch/windows/disable_sendrecv.py +++ /dev/null @@ -1,57 +0,0 @@ -## This file is part of Scapy -## See http://www.secdev.org/projects/scapy for more informations -## Copyright (C) Philippe Biondi <phil@secdev.org> -## This program is published under a GPLv2 license - -""" -When wpcap.dll is not available, replace all sendrecv functions that won't work. -""" - -from scapy.error import log_runtime -import scapy.sendrecv as sendrecv -import scapy.config as conf -from scapy.supersocket import SuperSocket - -def log_warning(): - if conf.conf.interactive: - log_runtime.warning("Function not available (winpcap is not installed)") - else: - raise ImportError("Function not available (winpcap is not installed)") - -def not_available(*args, **kwargs): - log_warning() - return None - -class not_available_socket(SuperSocket): - desc = "wpcap.dll missing" - def __init__(self, type=None, promisc=None, filter=None, iface=None, nofilter=0): - log_warning() - return - def send(self, x): - return - def recv(self,x=None): - return - def nonblock_recv(self): - return - def close(self): - return - - -sendrecv.send = not_available -sendrecv.sendp = not_available -sendrecv.sendpfast = not_available -sendrecv.sr = not_available -sendrecv.sr1 = not_available -sendrecv.srflood = not_available -sendrecv.srloop = not_available -sendrecv.srp = not_available -sendrecv.srp1 = not_available -sendrecv.srpflood = not_available -sendrecv.srploop = not_available -sendrecv.sniff = not_available -sendrecv.sndrcv = not_available -sendrecv.sndrcvflood = not_available -sendrecv.tshark = not_available - -conf.L3socket=not_available_socket -conf.L2socket=not_available_socket