每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢?
pip安装scapy,然后解析pcap:
import scapyfrom scapy.all import *from scapy.utils import PcapReaderpackets=rdpcap("./test.pcap")for data in packets: if 'UDP' in data: s = repr(data) print(s) print(data['UDP'].sport) break
打印s,是为了看到所有的字段:
<Ether dst=ff:ff:ff:ff:ff:ff src=30:fc:68:33:7a:e2 type=0x800 |<IP version=4 ihl=5 tos=0x0 len=143 id=37312 flags= frag=0 ttl=64 proto=udp chksum=0x644d src=192.168.1.1 dst=192.168.1.255 options=[] |<UDP sport=1024 dport=5001 len=123 chksum=0x3051 |<Raw load='/x01/x01/x0e/x00/xe1+/x83/xc7/xb2/x9f/x00e/x00/x00/x00/x06/x00/tTL-WR886N/x00/x0b/x00/x035.0/x00/x07/x00/x01/x01/x00/x05/x00/x1130-fc-68-33-7a-e2/x00/x08/x00/x0b192.168.1.1/x00/t/x00/ntplogin.cn/x00/n/x00/rTL-WR886N 5.0/x00/x0c/x00/x051.7.3' |>>>>
然后就能用data['UDP'].sport打印udp的源端口了。
现在基本的字段都能看到了,如果还想看别的协议的字段,可以参考源码:
https://github.com/secdev/scapy/tree/master/scapy/layers
L2层在l2.python,ip,tcp等在inet.py中,例如tcp的一些字段名称在这:
以上这篇利用Python库Scapy解析pcap文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。
新闻热点
疑难解答
图片精选