[Windows] Fix import loops (#435)

This commit is contained in:
gpotter2 2017-01-03 15:25:17 +01:00 committed by Guillaume Valadon
parent 78038e4c94
commit 431b04a95d
13 changed files with 54 additions and 48 deletions

View File

@ -9,41 +9,16 @@ Operating system specific functionality.
import socket
from scapy.arch.consts import LINUX, OPENBSD, FREEBSD, NETBSD, DARWIN, \
SOLARIS, WINDOWS, BSD, X86_64, ARM_64, LOOPBACK_NAME
from scapy.consts import LINUX, OPENBSD, FREEBSD, NETBSD, DARWIN, \
SOLARIS, WINDOWS, BSD, X86_64, ARM_64, LOOPBACK_NAME, plt, MATPLOTLIB_INLINED, \
MATPLOTLIB_DEFAULT_PLOT_KARGS, PYX, parent_function
from scapy.error import *
import scapy.config
from scapy.pton_ntop import inet_pton
try:
from matplotlib import get_backend as matplotlib_get_backend
import matplotlib.pyplot as plt
MATPLOTLIB = 1
if "inline" in matplotlib_get_backend():
MATPLOTLIB_INLINED = 1
else:
MATPLOTLIB_INLINED = 0
MATPLOTLIB_DEFAULT_PLOT_KARGS = {"marker": "+"}
# RuntimeError to catch gtk "Cannot open display" error
except (ImportError, RuntimeError):
plt = None
MATPLOTLIB = 0
MATPLOTLIB_INLINED = 0
MATPLOTLIB_DEFAULT_PLOT_KARGS = dict()
log_loading.info("Can't import matplotlib. Won't be able to plot.")
try:
import pyx
PYX=1
except ImportError:
log_loading.info("Can't import PyX. Won't be able to use psdump() or pdfdump().")
PYX=0
def str2mac(s):
return ("%02x:"*6)[:-1] % tuple(map(ord, s))
if not WINDOWS:
if not scapy.config.conf.use_pcap and not scapy.config.conf.use_dnet:
from scapy.arch.bpf.core import get_if_raw_addr
@ -71,8 +46,6 @@ def get_if_hwaddr(iff):
# def get_if(iff,cmd):
# def get_if_index(iff):
if LINUX:
from scapy.arch.linux import *
if scapy.config.conf.use_pcap or scapy.config.conf.use_dnet:
@ -93,7 +66,14 @@ elif SOLARIS:
from scapy.arch.solaris import *
elif WINDOWS:
from scapy.arch.windows import *
from scapy.arch.windows.compatibility 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

View File

@ -8,7 +8,7 @@ from scapy.config import conf
from scapy.error import Scapy_Exception
from scapy.data import ARPHDR_LOOPBACK, ARPHDR_ETHER
from scapy.arch.common import get_if
from scapy.arch.consts import LOOPBACK_NAME
from scapy.consts import LOOPBACK_NAME
from scapy.utils import warning
from scapy.arch.bpf.consts import *

View File

@ -12,7 +12,7 @@ from scapy.layers.inet import IP
from scapy.layers.inet6 import IPv6
from scapy.packet import Raw
from scapy.data import ETH_P_ALL
from scapy.arch.consts import FREEBSD, OPENBSD, NETBSD
from scapy.consts import FREEBSD, OPENBSD, NETBSD
from scapy.utils import warning
from scapy.arch.bpf.core import get_dev_bpf, attach_filter

View File

@ -11,7 +11,7 @@ import sys,os,struct,socket,time
from select import select
from fcntl import ioctl
from scapy.arch.consts import LOOPBACK_NAME
from scapy.consts import LOOPBACK_NAME
import scapy.utils
import scapy.utils6
from scapy.packet import Packet, Padding

View File

@ -16,7 +16,7 @@ import scapy.config
import scapy.utils
from scapy.utils6 import in6_getscope, construct_source_candidate_set
from scapy.utils6 import in6_isvalid, in6_ismlladdr, in6_ismnladdr
from scapy.arch.consts import FREEBSD, NETBSD, OPENBSD, SOLARIS, LOOPBACK_NAME
from scapy.consts import FREEBSD, NETBSD, OPENBSD, SOLARIS, LOOPBACK_NAME
from scapy.arch import get_if_addr
from scapy.config import conf

View File

@ -16,9 +16,8 @@ from scapy.config import conf,ConfClass
from scapy.error import Scapy_Exception,log_loading,log_runtime
from scapy.utils import atol, itom, inet_aton, inet_ntoa, PcapReader
from scapy.base_classes import Gen, Net, SetGen
import scapy.plist as plist
from scapy.data import MTU, ETHER_BROADCAST, ETH_P_ARP
from scapy.arch.consts import LOOPBACK_NAME
from scapy.consts import LOOPBACK_NAME
conf.use_pcap = False
conf.use_dnet = False

View File

@ -15,7 +15,7 @@ import subprocess
import sys
import time
from scapy.arch.consts import LOOPBACK_NAME
from scapy.consts import LOOPBACK_NAME
from scapy.config import conf,ConfClass
from scapy.base_classes import Gen, SetGen
import scapy.plist as plist
@ -168,8 +168,8 @@ def sndrcv(pks, pkt, timeout = 2, inter = 0, verbose=None, chainCC=0, retry=0, m
return plist.SndRcvList(ans),plist.PacketList(remain,"Unanswered")
import scapy.sendrecv
scapy.sendrecv.sndrcv = sndrcv
import scapy.sendrecv as sendrecv
sendrecv.sndrcv = sndrcv
def sniff(count=0, store=1, offline=None, prn = None, lfilter=None, L2socket=None, timeout=None, *arg, **karg):
"""Sniff packets
@ -249,7 +249,7 @@ L2socket: use the provided L2socket
return plist.PacketList(lst,"Sniffed")
import scapy.sendrecv
scapy.sendrecv.sniff = sniff
sendrecv.sniff = sniff
# If wpcap.dll is not available
if not (conf.use_winpcapy or conf.use_pcap or conf.use_dnet):

View File

@ -3,9 +3,34 @@
## Copyright (C) Philippe Biondi <phil@secdev.org>
## This program is published under a GPLv2 license
import os
import os, inspect
from sys import platform
import platform as platform_lib
from scapy.error import *
try:
from matplotlib import get_backend as matplotlib_get_backend
import matplotlib.pyplot as plt
MATPLOTLIB = 1
if "inline" in matplotlib_get_backend():
MATPLOTLIB_INLINED = 1
else:
MATPLOTLIB_INLINED = 0
MATPLOTLIB_DEFAULT_PLOT_KARGS = {"marker": "+"}
# RuntimeError to catch gtk "Cannot open display" error
except (ImportError, RuntimeError):
plt = None
MATPLOTLIB = 0
MATPLOTLIB_INLINED = 0
MATPLOTLIB_DEFAULT_PLOT_KARGS = dict()
log_loading.info("Can't import matplotlib. Won't be able to plot.")
try:
import pyx
PYX=1
except ImportError:
log_loading.info("Can't import PyX. Won't be able to use psdump() or pdfdump().")
PYX=0
LINUX = platform.startswith("linux")
OPENBSD = platform.startswith("openbsd")
@ -31,3 +56,6 @@ else:
X86_64 = uname[4] == 'x86_64'
ARM_64 = uname[4] == 'aarch64'
LOOPBACK_NAME = "lo" if LINUX else "lo0"
def parent_function():
return inspect.getouterframes(inspect.currentframe())

View File

@ -18,7 +18,7 @@ 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.arch.consts import LOOPBACK_NAME
from scapy.consts import LOOPBACK_NAME
from scapy.utils import inet_ntoa, inet_aton
if conf.route is None:
# unused import, only to initialize conf.route

View File

@ -15,8 +15,7 @@ from scapy.config import conf
from scapy.base_classes import BasePacket,BasePacketList
from scapy.utils import do_graph,hexdump,make_table,make_lined_table,make_tex_table,get_temp_file
from scapy.arch import plt, MATPLOTLIB_INLINED, MATPLOTLIB_DEFAULT_PLOT_KARGS
from scapy.consts import plt, MATPLOTLIB_INLINED, MATPLOTLIB_DEFAULT_PLOT_KARGS
#############

View File

@ -8,7 +8,7 @@ Routing and handling of network interfaces.
"""
import socket
from scapy.arch.consts import LOOPBACK_NAME
from scapy.consts import LOOPBACK_NAME
from scapy.utils import atol,ltoa,itom
from scapy.config import conf
from scapy.error import Scapy_Exception,warning

View File

@ -12,7 +12,7 @@ import cPickle,os,sys,time,subprocess
import itertools
from select import select, error as select_error
from scapy.arch.consts import DARWIN, FREEBSD, OPENBSD
from scapy.consts import DARWIN, FREEBSD, OPENBSD
from scapy.data import *
from scapy.config import conf
from scapy.packet import Gen

View File

@ -9,7 +9,7 @@ Unit testing infrastructure for Scapy
import sys,getopt,imp
import bz2, base64, os.path, time, traceback, zlib, sha
from scapy.arch.consts import WINDOWS
from scapy.consts import WINDOWS
#### Import tool ####