我写了一个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日志吗?
我找到了 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'])