Index: head/net/scapy/files/patch-scapy_config.py =================================================================== --- head/net/scapy/files/patch-scapy_config.py (revision 511810) +++ head/net/scapy/files/patch-scapy_config.py (nonexistent) @@ -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 !") Property changes on: head/net/scapy/files/patch-scapy_config.py ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/net/scapy/files/patch-1991.patch =================================================================== --- head/net/scapy/files/patch-1991.patch (revision 511810) +++ head/net/scapy/files/patch-1991.patch (nonexistent) @@ -1,171 +0,0 @@ -From 5ff17673eec7fc200a16552e3686015e99d10b5e Mon Sep 17 00:00:00 2001 -From: Pierre LALET -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 -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 - Property changes on: head/net/scapy/files/patch-1991.patch ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/net/scapy/Makefile =================================================================== --- head/net/scapy/Makefile (revision 511810) +++ head/net/scapy/Makefile (revision 511811) @@ -1,84 +1,81 @@ # Created by: vanhu # $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 COMMENT= Powerful interactive packet manipulation program in python 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 OPTIONS_DEFINE= GRAPH IPYTHON P0F_BASE MANUF MATPLOT NMAP PYCRYPTO PYGNUPLOT PYX QUESO_BASE SOX GRAPH_DESC= graph generation and visualization IPYTHON_DESC= Use IPython (enhanced interactive shell) MANUF_DESC= wireshark's MANUF MAC database MATPLOT_DESC= Install python matplotlibs NMAP_DESC= nmap OS signatures database P0F_BASE_DESC= p0f OS signatures database PYCRYPTO_DESC= Use py-crypto for WEP decoding PYGNUPLOT_DESC= Use py-gnuplot wrapper to plot graphs PYX_DESC= PostScript and PDF graphs drawing QUESO_BASE_DESC=queso OS signatures database SOX_DESC= Support for VoIP GRAPH_RUN_DEPENDS= ${LOCALBASE}/bin/MagickCore-config:graphics/ImageMagick6 \ ${LOCALBASE}/bin/dot:graphics/graphviz NMAP_RUN_DEPENDS= ${LOCALBASE}/share/nmap/nmap-os-db:security/nmap MANUF_RUN_DEPENDS= ${LOCALBASE}/share/wireshark/manuf:net/wireshark MATPLOT_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}matplotlib>0:math/py-matplotlib@${PY_FLAVOR} P0F_BASE_RUN_DEPENDS= ${LOCALBASE}/etc/p0f.fp:net-mgmt/p0f PYCRYPTO_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pycrypto>0:security/py-pycrypto@${PY_FLAVOR} PYGNUPLOT_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}gnuplot>0:math/py-gnuplot@${PY_FLAVOR} PYX_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}PyX>0:graphics/py-PyX@${PY_FLAVOR} QUESO_BASE_RUN_DEPENDS= ${LOCALBASE}/etc/queso.conf.sample:net/queso SOX_RUN_DEPENDS= ${LOCALBASE}/bin/sox:audio/sox PYX_PREVENTS= PYGNUPLOT PYX_PREVENTS_MSG= PyX requires Python 3.4+ and py-gnuplot requires 2.7. .include .if ${PORT_OPTIONS:MPYGNUPLOT} USES+= python:2.7 .elif ${PORT_OPTIONS:MPYX} USES+= python:3.4+ .else USES+= python .endif .include .if ${PORT_OPTIONS:MIPYTHON} .if ${FLAVOR:Mpy27} RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}ipython5>0:devel/ipython5@${PY_FLAVOR} .else RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}ipython>0:devel/ipython@${PY_FLAVOR} .endif .endif post-patch: @${REINPLACE_CMD} "s,share/man/man1,man/man1," ${WRKSRC}/setup.py @${REINPLACE_CMD} "s,pdflatex,pdftex," ${WRKSRC}/scapy/extlib.py @${REINPLACE_CMD} "s,/usr/share/,${LOCALBASE}/share/," \ ${WRKSRC}/scapy/data.py \ ${WRKSRC}/scapy/modules/nmap.py \ ${WRKSRC}/scapy/utils6.py @${REINPLACE_CMD} "s,/etc/,${LOCALBASE}/etc/," \ ${WRKSRC}/scapy/modules/p0f.py .include Index: head/net/scapy/distinfo =================================================================== --- head/net/scapy/distinfo (revision 511810) +++ head/net/scapy/distinfo (revision 511811) @@ -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 Index: head/net/scapy/pkg-descr =================================================================== --- head/net/scapy/pkg-descr (revision 511810) +++ head/net/scapy/pkg-descr (revision 511811) @@ -1,14 +1,14 @@ Scapy is a powerful interactive packet manipulation program. It is able to forge or decode packets of a wide number of protocols, send them on the wire, capture them, match requests and replies, and much more. It can easily handle most classical tasks like scanning, tracerouting, probing, unit tests, attacks or network discovery (it can replace hping, 85% of nmap, arpspoof, arp-sk, arping, tcpdump, tethereal, p0f, etc.). It also performs very well at a lot of other specific tasks that most other 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