Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pcap中搜索比正常搜索更快_Python_Python 3.x_Scapy_Pcap - Fatal编程技术网

Python 在pcap中搜索比正常搜索更快

Python 在pcap中搜索比正常搜索更快,python,python-3.x,scapy,pcap,Python,Python 3.x,Scapy,Pcap,在这段代码中,我使用rdpcap读取一个pcap,然后使用for循环对其进行迭代。通过这种方式,我获取数据包的行数据,并在每个pcaket上搜索特定的ip,如果ip与任何src_ip或dst_ip匹配,则存储该pcaket并生成一个新的过滤pcap 搜索一个600MB的文件需要5分钟的时间,我想比这快很多。我该怎么做呢。众所周知,我做事很慢。我会避免用scapy来处理大文件 最好的方法是使用tshark 例如: 如果您需要python中的结果,您可以调用它,然后在以后解析结果。Wireshark

在这段代码中,我使用rdpcap读取一个pcap,然后使用for循环对其进行迭代。通过这种方式,我获取数据包的行数据,并在每个pcaket上搜索特定的ip,如果ip与任何src_ip或dst_ip匹配,则存储该pcaket并生成一个新的过滤pcap


搜索一个600MB的文件需要5分钟的时间,我想比这快很多。我该怎么做呢。

众所周知,我做事很慢。我会避免用scapy来处理大文件

最好的方法是使用tshark 例如:


如果您需要python中的结果,您可以调用它,然后在以后解析结果。

Wireshark中需要多长时间?至少,迭代
PcapReader
而不是使用
rdpcap
tshark很酷,但是如果您需要快速解析,tcpdump应该是您的首选。对于它可以表达的过滤器,它比tshark快几个数量级。我刚刚在125MB pcap上运行了一个主机对筛选器的快速比较,使用类似的选项,tcpdump大约快50倍。
packets = rdpcap("/home/pcap_evidence/"+date+"/"+list_time[0]+"")
for data in packets:
   if IP in data:
      if data[IP].src == ip and data[IP].dst == ip:
        list_.append(data)
tshark -r my_capture.pcap -Y "(ip.src == 192.168.1.10) && (ip.dst == 172.27.224.70)" -w /tmp/my_filtered_capture.pcap