安装
pip install scapy
导包
import scapy
from scapy.all import *
from scapy.utils import PcapReader
读取pcap文件
- 第一种:一次性读入内存
pkts = rdpcap('./wuming.pcap')
for pkt in pkts:
...
- 第二种:逐个读入。每次调用
read_packet()
都会读入一个新的包
packets = PcapReader("./wuming.pcap")
pkt = packets.read_packet()
显示已格式化的数据包
pkt.show()
显示如下,已分好层
###[ Ethernet ]###
dst = 14:30:04:03:46:28
src = 00:0c:29:82:6f:68
type = IPv4
###[ IP ]###
version = 4
ihl = 5
tos = 0x0
len = 40
id = 29078
flags = DF
frag = 0
ttl = 64
proto = tcp
chksum = 0x75fe
src = 192.168.1.34
dst = 124.236.20.133
\options \
###[ TCP ]###
sport = 37432
dport = http
seq = 852751594
ack = 949704169
dataofs = 5
reserved = 0
flags = FA
window = 229
chksum = 0x12e8
urgptr = 0
options = []
###[ Padding ]###
load = '\x00\x00\x00\x00\x00\x00'
访问某层的特定字段值
pkt['层名'].字段名
如
pkt['IP'].dst
print 输出为
124.236.20.133
修改某层的特定字段值
直接赋值
pkt['IP'].dst = '1.1.1.1'
时间戳
pkt有成员time
int(pkt.time*10**3)
可提取毫秒级别的时间戳,最多可精确到微秒