scapy学习笔记

基本函数

rdpcap()

该方法是在解析数据包的时候读入pcap文件所需要调用的方法。调用方式

from scapy import *
f=repcap('pcap_oath')

该函数返回的f 是一个scapy.plist.Packet List(可以看做一个list进行运算)类型可以通过f[i]来读取第i+1个数据包(因为list 从0开始计算,不是第一个)例如读取第一个数据包的内容,可以使用f[0]来找第一个数据包,使用f[0].show()或f[0].display()进行数据包格式化打印。

在调用该方式的时候会将整个pcap文件读入到内存中,这样的情况下,当pcap文件过大的时候将会出现解析速度齐慢无比,建议处理的数据包的大小不要过大

show()方法/display()

这两张方法都可以看到数据包的层次结构,如下图所示

scapy学习笔记_第1张图片

其中f[3]表示数据流中的第四个数据包,通过f[3].payload可以得到该层协议的载荷部分,通过重复调用payload方法可以找自己需要的层,并对其下的字段进行提取分析。

例如:我们可以通过以下方法数据包的源ip地址

通过类似的方式,我们可以对数据包的任意字段进行提取。对数据包进行整体的分析

数据包对应内容提取

在scapy库中,数据包是按照show()的层次对每一层的数据包进行管理的。我们可以通过以下关键字对数据包各个层次的内容进行提取,或者移动到任何一层进行内容的提取。我们硬下图的数据包做实验。

scapy学习笔记_第2张图片

 移动到下一层:

>>> 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.1\r\nX-MU-Session-ID: 2705156788\r\nContent-Length: 57\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nConnection: close\r\nUpgrade-Insecure-Requests: 1\r\nOrigin: http://172.31.1.15\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36\r\nHost: 172.31.1.15\r\nReferer: https://172.31.1.15/wikid/\r\nCache-Control: max-age=0\r\nContent-Type: application/x-www-form-urlencoded\r\nPayload: dGVzdA==\r\n\r\nS=1&a=test'>
                    

你可能感兴趣的:(scapy,学习)