如何用Wireshark scapy打开pcap文件?

问题描述 投票:0回答:1

我写了一个python V3脚本,可以嗅探10个包,写一个日志,然后在Wireshark中打开日志。但是不知道为什么,它一直在tmp中打开一个空的日志。

我的代码。

#!/usr/bin/env python3
import sys
from scapy.all import *
x = sniff(count=10)
wrpcap('log', x, append=False)

wireshark('log')

输出:

WARNING: No route found for IPv6 destination :: (no default route?). This affects only IPv6
WARNING: PcapWriter: unknown LL type for str. Using type 1 (Ethernet)
ERROR: 'str' object has no attribute 'sent_time'
ERROR: 'str' object has no attribute 'sent_time'
ERROR: 'str' object has no attribute 'sent_time'
ERROR: 'str' object has no attribute 'sent_time'
ERROR: 'str' object has no attribute 'sent_time'
ERROR: 'str' object has no attribute 'sent_time'
ERROR: 'str' object has no attribute 'sent_time'
ERROR: 'str' object has no attribute 'sent_time'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'

应该是打开日志而不是变量 但我不知道该怎么做。

Scapy文档 (https:/readthedocs.orgprojectsscapydownloadspdflatest。)说。

用一个文件名(以字符串形式传递), 这将在Wireshark中加载给定的文件. 这个文件需要是Wireshark支持的格式。

有人知道如何在Wireshark中打开pcap日志吗?

python-3.x wireshark scapy
1个回答
0
投票

我找到了 wireshark()这个方法,通过 CTRL + 点击 wireshark('log').

def wireshark(pktlist, *args):
    """Run wireshark on a list of packets"""
    fname = get_temp_file()
    wrpcap(fname, pktlist)
    subprocess.Popen([conf.prog.wireshark, "-r", fname] + list(args))

似乎它总是创建一个临时文件,因为该方法期望接收一个变量列表,然后打开临时文件。

我可以通过使用 subprocess.Popen([conf.prog.wireshark, "-r", fname] + list(args) 直接在我的代码中,而不是使用'wireshark('log')'。

工作代码。

#!/usr/bin/env python3
import sys
from scapy.all import *

x = sniff(count=10)
wrpcap('log', x, append=False)

subprocess.Popen([conf.prog.wireshark, "-r", 'log'])
© www.soinside.com 2019 - 2024. All rights reserved.