我正在尝试用python打开一个.pcap文件。有人能帮上忙吗?每次我尝试这样做时,它都会给出一条错误消息,即"IOError: [Errno 2] No such file or directory: 'test.pcap'"
import dpkt
f = open('test.pcap')
pcap = dpkt.pcap.Reader(f)
Python可以解析Wireshark/pcap文件并成功地显示数据包数据:
>>> for ts, pkt in pcap:
eth = dpkt.ethernet.Ethernet(pkt)
type(eth.data)
<class 'dpkt.ip.IP'>
<class 'dpkt.ip.IP'>
但是,当我试图解析tcpdump文件时,我得到了以下结果:
>>> for ts, pkt in pcap:
eth = dpkt.ethernet.Ethernet(pk
我想使用Python解码pcap中数据包的链接层类型和版本。因此,我必须使用Python解析pcap。这是我的密码。
import dpkt
import socket
import sys
f = open('filename')
pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
print ts, len(buf)
print eth
print ip
pri
我有个问题。
如何通过使用dpkt库和来自pcap文件的每个主机名的ts来获得get和HTTP/1.0 200OK之间的响应时间差(我是指web服务器的时间延迟)?
我的初步代码:
#!/usr/bin/env python
import dpkt
f = open('mycapture.cap')
pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
if tcp.dpor
我已将Cisco路由器配置为将流量的pcap文件转储到我尝试使用dpkt和Python (2.7)解析的特定接口上。基本代码是:
f = open('pktrace1.pcap','rb')
pcap = dpkt.pcap.Reader(f)
for ts,buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
f.close()
现在,不幸的是,无论出于什么原因,来自路由器的pcap转储将第2层信息留空,并且帧被封装为原始IP格式。上面的
ValueError:下面代码的无效tcpdump标头错误。
import dpkt
f = open('a.pcap')
pcap = dpkt.pcap.Reader(f)
for (src, sport, dst, dport, data) in udp_iterator(pc):
if dport == 53:
dns = dpkt.dns.DNS(data)
if dns.opcode != dpkt.dns.DNS_QUERY:
print "A DNS p
我正在尝试编写一个python程序来解析使用dpkt模块捕获的数据包。我已经在具有以太网和tcpdump捕获的数据包捕获上使用了它,并且它工作得很好。然而,我当前的数据包捕获是直接具有IP报头和后续协议的原始数据包捕获,似乎dpkt无法理解这些捕获。附件是捕获文件的图片。enter image description here 我的代码是 f = open(ipfile, 'rb')
pcap = dpkt.pcap.Reader(f)
for ts,buf in pcap:
eth = dpkt.ethernet.Ethernet(buf) //Also tri
我试图了解如何使用dpkt模块打开多个 .pcap文件,并在相同的时间读取它们。在大量搜索和长时间工作之后,我找到的示例只显示了如何打开和读取1个.pcap文件。
我尝试使用超过一个for循环,并使用数组压缩()文件,但没有效果。有一个错误,ValueError:需要超过一个值才能解包。有什么建议吗?下面是我当前的python脚本:
import dpkt, socket, glob, pcap, os
files = [open(f) for f in glob.glob('*.pcap')]
abc = dpkt.pcap.Reader(file(
我使用dpkt python包来解析pcap,并执行了以下操作以获得tcp数据包:
f = open(fname)
pcap = dpkt.pcap.Reader(f)
tcps = []
for ts, buff in pcap_in:
eth = dpkt.ethernet.Ethernet(buff)
ip = eth.data
tcp = ip.data
现在我想看看哪一个同时有SYN和ACK标志。我试图把带有这两面旗帜的人列在下面的列表中:
syn_plus_ack = []
for tcp in tcps:
if ((tcp.flags &
如何解析ICMP数据包(使用dpkt)来检查它是否是来自A到B的请求或响应?
我找到了一些TCP和UDP数据包的例子(如下),但是我找不到任何IP数据包的例子。
import dpkt
f = open('test.pcap')
pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
if tcp.dport == 80 and len(tcp.data) > 0:
我正在尝试用python编写一个脚本来从.pcap文件中提取内容。输出被写入一个.csv文件。到目前为止,这就是我所拥有的:(请忽略荷兰语,它们只用于注释和名字)
import csv
from encodings import utf_8
from enum import unique
import time
import dpkt.ethernet
import requests
import pyshark
from dpkt.utils import mac_to_str
#Opvragen bestand:
bestand = input("Voer hier het h
如何解析pcap文件并将其转换为文本文件,其中文本文件中的每一行都是一个数据包?
我尝试将其写入文本文件,如下所示,但打印时出现特殊字符。因此,当我尝试将其写入文本文件时,出现以下错误。
TypeError:应为字符缓冲区对象
import dpkt
f1 = open('temp.pcap')
pcap = dpkt.pcap.Reader(f1)
f2 = open('tempMan.txt', 'w')
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
prin
我想打印出pcap文件中的数据包数据。下面的代码将数据包数据存储在一个数组中,但是我不知道如何打印该数组的每个元素,然后从那里拆分数据。数组上的for循环只返回一个错误。
import dpkt
import socket
f = open('test.pcap', 'r')
pcap = dpkt.pcap.Reader(f)
info = []
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
if not hasattr(eth, 'ip'):
我正在尝试使用dpkt库从pcap列表中检索5元组信息。为了用VLAN标记解析PPPoE数据包,我编写了如下代码(仅供测试):
import dpkt
import socket
def decode(pc):
for ts, pkt in pc:
eth = dpkt.ethernet.Ethernet(pkt)
pppoe = dpkt.pppoe.PPPoE(eth.data)
ip = pppoe.data
if ip.p == dpkt.ip.IP_PROTO_UDP:
udp = ip
import socket
import dpkt
def print_pcap(pcap):
"""print source and destination IP addresses for all packets
"""
for (unused_ts, buf) in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
src = socket.inet_ntoa(ip.src)
dst = so
我在比较替罪羊和dpkt的速度。我有一个包含pcap的目录,我解析并计算每个文件中的http请求。下面是替罪羊的代码:
import time
from scapy.all import *
def parse(f):
x = 0
pcap = rdpcap(f)
for p in pcap:
try:
if p.haslayer(TCP) and p.getlayer(TCP).dport == 80 and p.haslayer(Raw):
x = x + 1
except:
continue
print x
我直接从暴力Python PDF开始工作,第147页。
我目前正在使用pygeoip模块查找IP地址的位置。我能够相当容易地完成这第一步,它由代码中的#1散列表示。
第二步包括从pcap文件中获取数据,并将相应的ip地址(目的ip和源ip)与它们的pyschial位置进行匹配。由于某些原因,我无法让程序返回此信息。相反,我从我的optParse实例中得到了一个打印的字符串。
我当前的代码是:
#1. pg 136 of Violent Python by TJ O'Connor
#We are using the imported pygeoip module to searc
我需要处理一个7 7GB的pcap文件来提取他们的数据包大小,有效载荷大小。我最初使用scapy的PcapReader来提取这些大小,但是对于7 7GB的文件,scapy运行起来真的很慢。所以我改用DPKT库,但是,我不知道如何检查它的TCP负载大小。 import dpkt
payload_size=[]
packet_size=[]
for ts,buf in dpkt.pcapng.Reader(open('pcap file','rb')):
eth=dpkt.ethernet.Ethernet(buf)
if eth.type==
我在我的机器上运行这段代码时遇到了问题,但它在我学校的linux机器上运行得很好。
我得到的错误是:
Traceback (most recent call last):
File "wireshark_02.py", line 74, in <module>
main()
File "wireshark_02.py", line 43, in main
input_data = dpkt.pcap.Reader(open(file_name,'r'))
File "C:\Users\S