mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-22 08:58:47 +00:00
inet/scapy: Update version 2.4.2=>2.4.3
- Use net/py-pypcap instead of net/py-pcap as dnet and py-pcap will be deprecated in future scapy versions. One other reason is py-pcap is failing with python3. [1] - Change MASTER_SITE to PYPI for better availability [2] - Update WWW [2] PR: 239380 [1] 240493 [2] Submitted by: lwhsu [1] [2]
This commit is contained in:
parent
c537443ece
commit
96db5e5bf8
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=511811
@ -1,11 +1,10 @@
|
||||
# Created by: vanhu <vanhu@netasq.com>
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= scapy
|
||||
PORTVERSION= 2.4.2
|
||||
DISTVERSIONPREFIX= v
|
||||
PORTREVISION= 2
|
||||
CATEGORIES= net
|
||||
PORTNAME= scapy
|
||||
PORTVERSION= 2.4.3
|
||||
CATEGORIES= net python
|
||||
MASTER_SITES= CHEESESHOP
|
||||
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
|
||||
|
||||
MAINTAINER= bofh@FreeBSD.org
|
||||
@ -15,11 +14,9 @@ LICENSE= GPLv2
|
||||
LICENSE_FILE= ${WRKSRC}/LICENSE
|
||||
|
||||
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libdnet>0:net/py-libdnet@${PY_FLAVOR} \
|
||||
${PYTHON_PKGNAMEPREFIX}pcap>0:net/py-pcap@${PY_FLAVOR}
|
||||
${PYTHON_PKGNAMEPREFIX}pypcap>0:net/py-pypcap@${PY_FLAVOR}
|
||||
|
||||
USE_PYTHON= autoplist distutils
|
||||
USE_GITHUB= yes
|
||||
GH_ACCOUNT= secdev
|
||||
|
||||
NO_ARCH= yes
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
TIMESTAMP = 1552603437
|
||||
SHA256 (secdev-scapy-v2.4.2_GH0.tar.gz) = 141ee386cf6f296e8c9fae94a40a5386ac2d9bfa43a3870b13f575200c46b5f8
|
||||
SIZE (secdev-scapy-v2.4.2_GH0.tar.gz) = 3330071
|
||||
TIMESTAMP = 1568196750
|
||||
SHA256 (scapy-2.4.3.tar.gz) = e2f8d11f6a941c14a789ae8b236b27bd634681f1b29b5e893861e284d234f6b0
|
||||
SIZE (scapy-2.4.3.tar.gz) = 905334
|
||||
|
@ -1,171 +0,0 @@
|
||||
From 5ff17673eec7fc200a16552e3686015e99d10b5e Mon Sep 17 00:00:00 2001
|
||||
From: Pierre LALET <pierre.lalet@cea.fr>
|
||||
Date: Tue, 16 Apr 2019 16:08:15 +0200
|
||||
Subject: [PATCH 1/2] BPF: fix get_working_ifaces()
|
||||
|
||||
It was broken when an interface name did not end by a digit.
|
||||
|
||||
It was also incorrect when an interface name ended by more than one
|
||||
digit.
|
||||
---
|
||||
scapy/arch/bpf/core.py | 46 ++++++++++++++++++++++++------------------
|
||||
test/bpf.uts | 6 ++----
|
||||
2 files changed, 28 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git scapy/arch/bpf/core.py scapy/arch/bpf/core.py
|
||||
index cc4732f52..4c9e9470a 100644
|
||||
--- scapy/arch/bpf/core.py
|
||||
+++ scapy/arch/bpf/core.py
|
||||
@@ -5,22 +5,22 @@
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
-from scapy.config import conf
|
||||
-from scapy.error import Scapy_Exception, warning
|
||||
-from scapy.data import ARPHDR_LOOPBACK, ARPHDR_ETHER
|
||||
-from scapy.arch.common import get_if, compile_filter
|
||||
-from scapy.consts import LOOPBACK_NAME
|
||||
-
|
||||
-from scapy.arch.bpf.consts import BIOCSETF, SIOCGIFFLAGS, BIOCSETIF
|
||||
|
||||
+from ctypes import cdll, cast, pointer
|
||||
+from ctypes import c_int, c_ulong, c_char_p
|
||||
+from ctypes.util import find_library
|
||||
+import fcntl
|
||||
import os
|
||||
+import re
|
||||
import socket
|
||||
-import fcntl
|
||||
import struct
|
||||
|
||||
-from ctypes import cdll, cast, pointer
|
||||
-from ctypes import c_int, c_ulong, c_char_p
|
||||
-from ctypes.util import find_library
|
||||
+from scapy.arch.bpf.consts import BIOCSETF, SIOCGIFFLAGS, BIOCSETIF
|
||||
+from scapy.arch.common import get_if, compile_filter
|
||||
+from scapy.config import conf
|
||||
+from scapy.consts import LOOPBACK_NAME
|
||||
+from scapy.data import ARPHDR_LOOPBACK, ARPHDR_ETHER
|
||||
+from scapy.error import Scapy_Exception, warning
|
||||
from scapy.modules.six.moves import range
|
||||
|
||||
|
||||
@@ -126,6 +126,9 @@ def get_if_list():
|
||||
return interfaces
|
||||
|
||||
|
||||
+_IFNUM = re.compile("([0-9]*)([ab]?)$")
|
||||
+
|
||||
+
|
||||
def get_working_ifaces():
|
||||
"""
|
||||
Returns an ordered list of interfaces that could be used with BPF.
|
||||
@@ -156,24 +159,27 @@ def get_working_ifaces():
|
||||
if ifflags & 0x1: # IFF_UP
|
||||
|
||||
# Get a BPF handle
|
||||
- fd, _ = get_dev_bpf()
|
||||
+ fd = get_dev_bpf()[0]
|
||||
if fd is None:
|
||||
raise Scapy_Exception("No /dev/bpf are available !")
|
||||
|
||||
# Check if the interface can be used
|
||||
try:
|
||||
- fcntl.ioctl(fd, BIOCSETIF, struct.pack("16s16x", ifname.encode())) # noqa: E501
|
||||
- interfaces.append((ifname, int(ifname[-1])))
|
||||
+ fcntl.ioctl(fd, BIOCSETIF, struct.pack("16s16x",
|
||||
+ ifname.encode()))
|
||||
except IOError:
|
||||
pass
|
||||
-
|
||||
- # Close the file descriptor
|
||||
- os.close(fd)
|
||||
+ else:
|
||||
+ ifnum, ifab = _IFNUM.search(ifname).groups()
|
||||
+ interfaces.append((ifname, int(ifnum) if ifnum else -1, ifab))
|
||||
+ finally:
|
||||
+ # Close the file descriptor
|
||||
+ os.close(fd)
|
||||
|
||||
# Sort to mimic pcap_findalldevs() order
|
||||
- interfaces.sort(key=lambda elt: elt[1])
|
||||
+ interfaces.sort(key=lambda elt: (elt[1], elt[2], elt[0]))
|
||||
|
||||
- return interfaces
|
||||
+ return [iface[0] for iface in interfaces]
|
||||
|
||||
|
||||
def get_working_if():
|
||||
@@ -183,4 +189,4 @@ def get_working_if():
|
||||
if not ifaces:
|
||||
# A better interface will be selected later using the routing table
|
||||
return LOOPBACK_NAME
|
||||
- return ifaces[0][0]
|
||||
+ return ifaces[0]
|
||||
diff --git test/bpf.uts test/bpf.uts
|
||||
index 19e06bb14..45d36fd83 100644
|
||||
--- test/bpf.uts
|
||||
+++ test/bpf.uts
|
||||
@@ -47,12 +47,10 @@ len(iflist) > 0
|
||||
= Get working network interfaces
|
||||
~ needs_root
|
||||
|
||||
-from scapy.arch.bpf.core import get_working_ifaces
|
||||
+from scapy.arch.bpf.core import get_working_if, get_working_ifaces
|
||||
ifworking = get_working_ifaces()
|
||||
assert len(ifworking)
|
||||
-
|
||||
-from scapy.arch.bpf.core import get_working_if
|
||||
-assert len(ifworking) and get_working_if() == ifworking[0][0]
|
||||
+assert get_working_if() == ifworking[0]
|
||||
|
||||
|
||||
= Misc functions
|
||||
|
||||
From afa5776ecf83f7a427fc1af763005fe249f450f9 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre LALET <pierre.lalet@cea.fr>
|
||||
Date: Wed, 17 Apr 2019 10:22:16 +0200
|
||||
Subject: [PATCH 2/2] BPF: test get_working_ifaces()
|
||||
|
||||
---
|
||||
test/bpf.uts | 27 +++++++++++++++++++++++++++
|
||||
1 file changed, 27 insertions(+)
|
||||
|
||||
diff --git test/bpf.uts test/bpf.uts
|
||||
index 45d36fd83..23022530e 100644
|
||||
--- test/bpf.uts
|
||||
+++ test/bpf.uts
|
||||
@@ -53,6 +53,33 @@ assert len(ifworking)
|
||||
assert get_working_if() == ifworking[0]
|
||||
|
||||
|
||||
+= Get working network interfaces order
|
||||
+
|
||||
+import mock
|
||||
+from scapy.arch.bpf.core import get_working_ifaces
|
||||
+
|
||||
+@mock.patch("scapy.arch.bpf.core.os.close")
|
||||
+@mock.patch("scapy.arch.bpf.core.fcntl.ioctl")
|
||||
+@mock.patch("scapy.arch.bpf.core.get_dev_bpf")
|
||||
+@mock.patch("scapy.arch.bpf.core.get_if")
|
||||
+@mock.patch("scapy.arch.bpf.core.get_if_list")
|
||||
+@mock.patch("scapy.arch.bpf.core.os.getuid")
|
||||
+def test_get_working_ifaces(mock_getuid, mock_get_if_list, mock_get_if,
|
||||
+ mock_get_dev_bpf, mock_ioctl, mock_close):
|
||||
+ mock_getuid.return_value = 0
|
||||
+ mock_get_if_list.return_value = ['igb0', 'em0', 'msk0', 'epair0a', 'igb1',
|
||||
+ 'vlan20', 'igb10', 'igb2']
|
||||
+ mock_get_if.return_value = (b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
+ b'\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00'
|
||||
+ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
|
||||
+ mock_get_dev_bpf.return_value = (31337,)
|
||||
+ mock_ioctl.return_value = 0
|
||||
+ mock_close.return_value = 0
|
||||
+ return get_working_ifaces()
|
||||
+
|
||||
+assert test_get_working_ifaces() == ['em0', 'igb0', 'msk0', 'epair0a', 'igb1',
|
||||
+ 'igb2', 'igb10', 'vlan20']
|
||||
+
|
||||
= Misc functions
|
||||
~ needs_root
|
||||
|
@ -1,23 +0,0 @@
|
||||
--- scapy/config.py.orig 2019-01-10 18:33:08 UTC
|
||||
+++ scapy/config.py
|
||||
@@ -16,7 +16,7 @@ import socket
|
||||
import sys
|
||||
|
||||
from scapy import VERSION, base_classes
|
||||
-from scapy.consts import DARWIN, WINDOWS, LINUX
|
||||
+from scapy.consts import BSD, DARWIN, WINDOWS, LINUX
|
||||
from scapy.data import ETHER_TYPES, IP_PROTOS, TCP_SERVICES, UDP_SERVICES, \
|
||||
MANUFDB
|
||||
from scapy.error import log_scapy, warning, ScapyInvalidPlatformException
|
||||
@@ -431,9 +431,9 @@ def _set_conf_sockets():
|
||||
"""Populate the conf.L2Socket and conf.L3Socket
|
||||
according to the various use_* parameters
|
||||
"""
|
||||
- if conf.use_bpf and not DARWIN:
|
||||
+ if conf.use_bpf and not BSD:
|
||||
Interceptor.set_from_hook(conf, "use_bpf", False)
|
||||
- raise ScapyInvalidPlatformException("Darwin (OSX) only !")
|
||||
+ raise ScapyInvalidPlatformException("BSD-like (OSX, *BSD...) only !")
|
||||
if conf.use_winpcapy and not WINDOWS:
|
||||
Interceptor.set_from_hook(conf, "use_winpcapy", False)
|
||||
raise ScapyInvalidPlatformException("Windows only !")
|
@ -11,4 +11,4 @@ tools can't handle, like sending invalid frames, injecting your own 802.11
|
||||
frames, combining technics (VLAN hopping+ARP cache poisoning, VOIP decoding on
|
||||
WEP encrypted channel, ...), etc.
|
||||
|
||||
WWW: http://secdev.org/projects/scapy
|
||||
WWW: http://scapy.net
|
||||
|
Loading…
Reference in New Issue
Block a user