Python使用scapy和dpkt抓包并解析
scapy
scapy是python中一个可用于网络嗅探的非常强大的第三方库,可以用它来做 packet 嗅探和伪造 packet。 scapy已经在内部实现了大量的网络协议。如DNS、ARP、IP、TCP、UDP等等,可以用它来编写非常灵活实用的工具。
scapy安装:
pip install scapy
安装完后:
ls() 命令可以查看所有支持的协议
ls(IP) 命令列出ip协议头部字段格式,只要想查看哪个协议的参数,括号里就填哪个协议
IP().show() 列出ip包的信息
lsc() 命令列出scapy的所有命令
conf 命令列出scapy 的配置参数
scapy抓包使用 sniff() 函数,这个函数有很多参数:
def sniff(count=0, store=1, offline=None, prn=None,filter=None, L2socket=None, timeout=None, opened_socket=None, stop_filter=None, iface=None,*args,**kargs)
- count:抓包的数量,0表示无限制;
- store:保存抓取的数据包或者丢弃,1保存,0丢弃
- offline:从 pcap 文件读取数据包,而不进行嗅探,默认为None
- prn:为每一个数据包定义一个函数,如果返回了什么,则显示。例如:prn = lambda x: x.summary(); ( packct.summar()函数返回的是对包的统计性信息 )
- filter:过滤规则,使用wireshark里面的过滤语法
- L2socket:使用给定的 L2socket
- timeout:在给定的时间后停止嗅探,默认为 None
- opened_socket:对指定的对象使用 .recv() 进行读取;
- stop_filter:定义一个函数,决定在抓到指定数据包后停止抓包,如:stop_filter = lambda x: x.haslayer(TCP);
- iface:指定抓包的接口
使用scapy抓包:
from scapy.all import *# scapy抓包:
def catch_pack():sniff(prn=printPacket,filter="tcp")# 抓包监听
def printPacket(packet):wrpcap('foo.pcap', [packet])
dpkt
dpkt是一个python模块,可以对简单的数据包创建/解析,以及基本TCP / IP协议的解析,速度很快。
dpkt读取每个pcap包里的内容,用isinstance判断是不是有IP的包,再判断是属于哪个协议,对应的协议已经封装好API如果发现可以匹配某个协议API就输出来相关值。
dpkt — dpkt 1.9.2 documentationhttps://dpkt.readthedocs.io/en/latest/
dpkt安装:
pip install dpkt
使用dpkt解包:
# dpkt解包
def decodePacket(timestamp, packet_data):packet = dpkt.ethernet.Ethernet(packet_data)if not isinstance(packet.data, dpkt.ip.IP):returnif not isinstance(packet.data.data, dpkt.tcp.TCP):returnhttpData = packet.data.data.dataif len(httpData) < 4:returnreq = dpkt.http.Request(httpData)headers = {}for k,v in req.headers.items():headers[k] = vprint("request+++>timestamp:",timestamp)print("request+++>headers:",headers)print("request+++>method:", req.method)print("request+++>uri:", req.uri)print("request+++>body:", req.body)try:response = dpkt.http.Response(httpData) # 尝试以HTTP读取响应print("response:",response)except:print("decode http response error")
def readPacket(packet):try:with open('foo.pcap', 'rb') as f:capture = dpkt.pcap.Reader(f)for timestamp, packet in capture: # 键值对,提取packet进行解码decodePacket(timestamp, packet)except:pass
Python使用scapy和dpkt抓包并解析相关推荐
- pcap python 生成_python+pcap+dpkt 抓包小实例
1 #!/usr/bin/env python 2 #-*- coding: utf-8 -*- 3 4 """网络数据包捕获与分析程序""" ...
- pcap python 生成_python+pcap+dpkt抓包小实例
#!/usr/bin/env python#-*- coding: utf-8 -*- """网络数据包捕获与分析程序""" importp ...
- python 抓包 scapy udp,python+scapy 抓包與解析
最近一直在使用做流量分析,今天把 scapy 部分做一個總結. python 的 scapy 庫可以方便的抓包與解析包,無奈資料很少,官方例子有限,大神博客很少提及, 經過一番嘗試后,總結以下幾點用法 ...
- python抓包代码_Python抓包并解析json爬虫的完整实例代码
Python抓包并解析json爬虫FwA免费资源网 在使用Python爬虫的时候,通过抓包url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫:FwA免费资源网 Fw ...
- 【Python】【进阶篇】十六、Python爬虫的浏览器实现抓包
目录 十六.Python爬虫的浏览器实现抓包 16.1 控制台界面 16.1.1 NetWork 16.1.2 Sources 16.1.3 Console 16.1.4 Application 16 ...
- python 抓包解析数据_Python抓包并解析json爬虫的完整实例代码
Python抓包并解析json爬虫 在使用Python爬虫的时候,通过抓包url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫: 例如: 需要爬取网页中第二页的数据时 ...
- Python抓包并解析json爬虫
Python抓包并解析json爬虫 在使用Python爬虫的时候,通过抓包url,打开url可能会遇见以下类似网址,打开后会出现类似这样的界面,无法继续进行爬虫: 例如: 需要爬取网页中第二页的数据时 ...
- 开发过程中快速抓包并解析
开发过程中快速抓包并解析 这几天小编在工作中遇到了一个灵异事件,客户端使用的是安卓原生系统,服务端使用的是java.需求就是客户端在照相的时候可以实时上传照片.后台接收并保存,并且可以在平台上显示.看 ...
- python实战:利用chrome抓包插件HTTP间谍分析有道翻译反爬机制
本次实战目标站点:http://fanyi.youdao.com/?keyfrom=fanyi-new.logo ,主要利用HTTP间谍抓包插件分析有道翻译反爬机制,该抓包能帮我们过滤掉一些不需要的常 ...
最新文章
- 斯坦福NLP团队发布最新自然语言处理Python库
- iOS开发~sizeClass和autolayout
- 一个成功的Git分支模型
- NOIP2011 聪明的质监员
- /proc/sys/net/ipv4详解(2)
- SAP UI5 初学者教程之九 - 创建第一个 Component 的试读版
- 关于lwip中pbuf_alloc()内存申请函数
- 【渝粤教育】国家开放大学2018年秋季 0017-22T大学英语 参考试题
- mysql改单行数据编码_mysql数据库字符编码修改
- 如何修改游戏服务器端的数据,如何修改网络游戏服务器数据
- linux java new date_Linux java Tomcat 项目中 new Date 获取时间 8小时 时差
- Lua学习笔记3. 函数可变参数和运算符、转义字符串、数组
- 【C# RDLC】 RDLC报表的部署问题
- EF架构~为ObjectContext类型加个Find方法
- css 注释写法注意事项
- 使用DPM2007来保护企业数据
- exfat最佳单元大小_回音壁构造和单元相关的个人看法
- 性能测试中问题反思和心得
- Android 系统FaceDetector人脸识别检测,圆形相机预览框,截取图片中的人脸图片(宽高自定义),圆形图片显示。
- ubuntu20.04下源码安装hyperscan库安装记录