scapy:pcap处理入门

文章目录

  • 安装
  • 导包
  • 读取pcap文件
  • 显示已格式化的数据包
  • 访问某层的特定字段值
  • 修改某层的特定字段值
  • 时间戳

安装

pip install scapy

导包

import scapy
from scapy.all import *
from scapy.utils import PcapReader

读取pcap文件

  1. 第一种:一次性读入内存
pkts = rdpcap('./wuming.pcap')
for pkt in pkts:
	...
  1. 第二种:逐个读入。每次调用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)

可提取毫秒级别的时间戳,最多可精确到微秒

你可能感兴趣的:(流量处理)