from scapy import *
f=repcap('pcap_oath')
在解析数据包时,我们可以使用基本函数rdpcap()来读取pcap文件。这个函数返回的是一个scapy.plist.Packet List类型的对象,可以像操作列表一样使用。例如,要读取第一个数据包的内容,可以使用f[0],然后使用f[0].show()或f[0].display()来格式化打印数据包。
调用rdpcap()函数时,整个pcap文件将被读入内存。如果pcap文件过大,解析速度可能会非常慢。因此,建议处理的数据包大小不要过大。
show()和display()方法可以显示数据包的层次结构。例如,通过f[3].payload可以获取第四个数据包的载荷部分。通过重复调用payload方法,我们可以找到所需的层,并提取和分析其下的字段。
例如,我们可以使用以下方法提取数据包的源IP地址。类似地,我们可以对数据包的任何字段进行提取和分析。
在scapy库中,数据包按照show()方法的层次结构进行管理。我们可以使用以下关键字提取数据包各个层次的内容,或者移动到任何一层进行内容提取。下面是对图中数据包进行实验的示例。
移动到下一层:
f[3].payload.show()
[ IP ]
version = 4
ihl= 5
tos= 0x0
len= 602
id= 47448
flags=
frag= 0
ttl= 128
proto= tcp
chksum = 0x24e8
src= 172.31.1.15
dst= 172.32.1.15
options[ TCP ]
sport= 7859
dport= https
seq= 397598926
ack= 405609299
dataofs = 5
reserved = 0
flags= PA
window = 32768
chksum = 0x9672
urgptr = 0
options = [][ Raw ]
load= “POST /wikid/InitDevice HTTP/1.1rnX-MU-Session-ID: 2705156788rnContent-Length: 57rnAccept-Language: en-US,en;q=0.9rnAccept-Encoding: gzip, deflaternConnection: closernUpgrade-Insecure-Requests: 1rnOrigin: rnUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36rnHost: 172.31.1.15rnReferer: rnCache-Control: max-age=0rnContent-Type: application/x-www-form-urlencodedrnPayload: dGVzdA==rnrnS=1&a=test’>
目录