summaryrefslogtreecommitdiffstats
path: root/scripts/external_libs/scapy-2.3.1/python3/scapy/arch/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/external_libs/scapy-2.3.1/python3/scapy/arch/__init__.py')
-rw-r--r--scripts/external_libs/scapy-2.3.1/python3/scapy/arch/__init__.py108
1 files changed, 108 insertions, 0 deletions
diff --git a/scripts/external_libs/scapy-2.3.1/python3/scapy/arch/__init__.py b/scripts/external_libs/scapy-2.3.1/python3/scapy/arch/__init__.py
new file mode 100644
index 00000000..0066e049
--- /dev/null
+++ b/scripts/external_libs/scapy-2.3.1/python3/scapy/arch/__init__.py
@@ -0,0 +1,108 @@
+## 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
+
+"""
+Operating system specific functionality.
+"""
+
+
+import sys,os,socket
+from scapy.error import *
+import scapy.config
+
+try:
+ import matplotlib.pyplot as plt
+ MATPLOTLIB = True
+ if scapy.config.conf.interactive:
+ plt.ion()
+except ImportError:
+ log_loading.info("Can't import matplotlib. Not critical, but won't be able to plot.")
+ MATPLOTLIB = False
+
+try:
+ import networkx as nx
+ NETWORKX = True
+except ImportError:
+ log_loading.info("Can't import networkx. Not criticial, but won't be able to draw network graphs.")
+ NETWORKX = False
+
+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))
+ return ("%02x:"*6)[:-1] % tuple(s)
+
+
+
+def get_if_addr(iff):
+ return socket.inet_ntoa(get_if_raw_addr(iff))
+
+def get_if_hwaddr(iff):
+ mac = get_if_raw_hwaddr(iff)
+ return str2mac(mac)
+
+
+LINUX=sys.platform.startswith("linux")
+OPENBSD=sys.platform.startswith("openbsd")
+FREEBSD=sys.platform.startswith("freebsd")
+NETBSD = sys.platform.startswith("netbsd")
+DARWIN=sys.platform.startswith("darwin")
+SOLARIS=sys.platform.startswith("sunos")
+WINDOWS=sys.platform.startswith("win32")
+
+X86_64 = not WINDOWS and (os.uname()[4] == 'x86_64')
+
+#if WINDOWS:
+# log_loading.warning("Windows support for scapy3k is currently in testing. Sniffing/sending/receiving packets should be working with WinPcap driver and Powershell. Create issues at https://github.com/phaethon/scapy")
+
+# Next step is to import following architecture specific functions:
+# def get_if_raw_hwaddr(iff)
+# def get_if_raw_addr(iff):
+# def get_if_list():
+# def get_working_if():
+# def attach_filter(s, filter):
+# def set_promisc(s,iff,val=1):
+# def read_routes():
+# def get_if(iff,cmd):
+# def get_if_index(iff):
+
+
+
+if LINUX:
+ from .linux import *
+ if scapy.config.conf.use_winpcapy or scapy.config.conf.use_netifaces:
+ from pcapdnet import *
+elif OPENBSD or FREEBSD or NETBSD or DARWIN:
+ from .bsd import *
+elif SOLARIS:
+ from .solaris import *
+elif WINDOWS:
+ pass;
+ #from .windows import *
+
+LOOPBACK_NAME="a"
+
+if scapy.config.conf.iface is None:
+ scapy.config.conf.iface = LOOPBACK_NAME
+
+def get_if_raw_addr6(iff):
+ """
+ Returns the main global unicast address associated with provided
+ interface, in network format. If no global address is found, None
+ is returned.
+ """
+ #r = filter(lambda x: x[2] == iff and x[1] == IPV6_ADDR_GLOBAL, in6_getifaddr())
+ r = [ x for x in in6_getifaddr() if x[2] == iff and x[1] == IPV6_ADDR_GLOBAL]
+ if len(r) == 0:
+ return None
+ else:
+ r = r[0][0]
+ return inet_pton(socket.AF_INET6, r)