在 scapy 中使用 PcapReader 解析后删除 pcap 文件
Delete pcap file after parsing it with PcapReader in scapy
我正在用 scapy 中的 PcapReader 解析一个 pcap 文件。之后我想删除 pcap 文件。但由于这个错误,它很糟糕:
OSError: [Errno 26] Text file busy: '/media/sf_SharedFolder/AVB/test.pcap'
这是我的 python 代码:
from scapy.all import *
import os
var = []
for packet in PcapReader('/media/sf_SharedFolder/AVB/test.pcap'):
var.append(packet[Ether].src)
os.remove('/media/sf_SharedFolder/AVB/test.pcap')
我认为任何 pcap 文件都会出现此错误。
有人知道吗?
您可能想尝试使用 Scapy 的最新开发版本(来自 https://github.com/secdev/scapy),因为我无法用它重现您的问题。
如果这不起作用,请检查 lsof /media/sf_SharedFolder/AVB/test.pcap
(以 root 身份)是否有其他程序打开了您的捕获文件。如果是这样,请尝试找到(并杀死,如果可能)该程序。
您可以尝试两种不同的破解方法,试图找出到底发生了什么:
测试 1:等待。
from scapy.all import *
import os
import time
var = []
for packet in PcapReader('/media/sf_SharedFolder/AVB/test.pcap'):
var.append(packet[Ether].src)
time.sleep(2)
os.remove('/media/sf_SharedFolder/AVB/test.pcap')
测试 2:明确关闭。
from scapy.all import *
import os
var = []
pktgen = PcapReader('/media/sf_SharedFolder/AVB/test.pcap')
for packet in pktgen:
var.append(packet[Ether].src)
pktgen.close()
os.remove('/media/sf_SharedFolder/AVB/test.pcap')
找到解决方案。我将 "PcapReader()" 替换为 "rdpcap()"。在 python 脚本完成之前,PcapReader 似乎一直处于打开状态。
这是工作代码:
from scapy.all import *
import os
var = []
p=rdpcap('/media/sf_SharedFolder/AVB/test.pcap')
for packet in p:
var.append(packet[Ether].src)
os.remove('/media/sf_SharedFolder/AVB/test.pcap')
我正在用 scapy 中的 PcapReader 解析一个 pcap 文件。之后我想删除 pcap 文件。但由于这个错误,它很糟糕:
OSError: [Errno 26] Text file busy: '/media/sf_SharedFolder/AVB/test.pcap'
这是我的 python 代码:
from scapy.all import *
import os
var = []
for packet in PcapReader('/media/sf_SharedFolder/AVB/test.pcap'):
var.append(packet[Ether].src)
os.remove('/media/sf_SharedFolder/AVB/test.pcap')
我认为任何 pcap 文件都会出现此错误。
有人知道吗?
您可能想尝试使用 Scapy 的最新开发版本(来自 https://github.com/secdev/scapy),因为我无法用它重现您的问题。
如果这不起作用,请检查 lsof /media/sf_SharedFolder/AVB/test.pcap
(以 root 身份)是否有其他程序打开了您的捕获文件。如果是这样,请尝试找到(并杀死,如果可能)该程序。
您可以尝试两种不同的破解方法,试图找出到底发生了什么:
测试 1:等待。
from scapy.all import *
import os
import time
var = []
for packet in PcapReader('/media/sf_SharedFolder/AVB/test.pcap'):
var.append(packet[Ether].src)
time.sleep(2)
os.remove('/media/sf_SharedFolder/AVB/test.pcap')
测试 2:明确关闭。
from scapy.all import *
import os
var = []
pktgen = PcapReader('/media/sf_SharedFolder/AVB/test.pcap')
for packet in pktgen:
var.append(packet[Ether].src)
pktgen.close()
os.remove('/media/sf_SharedFolder/AVB/test.pcap')
找到解决方案。我将 "PcapReader()" 替换为 "rdpcap()"。在 python 脚本完成之前,PcapReader 似乎一直处于打开状态。
这是工作代码:
from scapy.all import *
import os
var = []
p=rdpcap('/media/sf_SharedFolder/AVB/test.pcap')
for packet in p:
var.append(packet[Ether].src)
os.remove('/media/sf_SharedFolder/AVB/test.pcap')