diff --git a/scapy/arch/common.py b/scapy/arch/common.py index f2a46cf8b09..cf92cd9efa1 100644 --- a/scapy/arch/common.py +++ b/scapy/arch/common.py @@ -19,7 +19,6 @@ from scapy.config import conf from scapy.data import MTU from scapy.error import Scapy_Exception -from scapy.consts import OPENBSD import scapy.modules.six as six if not WINDOWS: @@ -32,18 +31,18 @@ def _check_tcpdump(): """ Return True if the tcpdump command can be started """ - with open(os.devnull, 'wb') as devnull: - try: - proc = subprocess.Popen([conf.prog.tcpdump, "--version"], - stdout=devnull, stderr=subprocess.STDOUT) - except OSError: - return False - - if OPENBSD: - # 'tcpdump --version' returns 1 on OpenBSD 6.4 - return proc.wait() == 1 - else: - return proc.wait() == 0 + try: + proc = subprocess.Popen( + [conf.prog.tcpdump, "--version"], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT + ) + output = proc.communicate()[0] + except OSError: + return False + + # On some systems, --version does not exist on tcpdump + return proc.returncode == 0 or output.startswith(b'Usage: tcpdump ') # This won't be used on Windows