IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> BPF(Berkeley Packet Filter)伯克利抓包过滤器实践 -> 正文阅读

[网络协议]BPF(Berkeley Packet Filter)伯克利抓包过滤器实践

BPF(Berkeley Packet Filter)伯克利抓包过滤器实践

BPF Berkeley Packet Filter伯克利抓包过滤器是驱动级抓包过滤接口,多数抓包工具都支持该语法。

过滤器就是一个表达式,由原语,运算符组成。

原语: 原语是限定符qualifiers(有时也称为keywords)+ID(字符或数字),如 host www.baidu.com, port 80
限定符:
type

  • host, net/mask,port, portrange

dir

  • dst, src, dst or src[缺省], dst and src;

protocol

  • ether,arp,icmp,ip,ip6, tcp, udp等底层协议,但不支持如dns, http等应用层协议。

其它

  • gateway, broadcast, multicast, less, greater
  • gateway host指数据包以host为网关, wireshark不支持

示例:
host www.baidu.com #某个主机
net 192.168.31.0/24 #一个CIDR格式网段
net 192.168.31.0 mask 255.255.255.0 #一个net/mask格式网段
注:wireshark中认为net 192.168.31.21/24是无效的bpf语法,而net 192.168.31.21/32是正确的,net/mask类似
host www.baidu.com and port 80 or 443
等效于host www.baidu.com and port 80 or port 443,表达的意思是主机为www.baidu.com且端口为80或443
host www.jd.com and portrange 80-443
net 192 表示以192开始的网段,mask是255.0.0.0

多个限定词可以叠加如tcp port 80

运算符:
and &&
or ||
not !
注:否定运算符有较高的优先级,and和or的优先级相同

基于协议域过滤
可以精确取到特定协议域进行抓取
tcp[13]&4 == 4
含义是抓取带RST标记的TCP分段
tcp[13]是取TCP的第14字节
&4==4是指抓取和4做’与’运算结果并等于4的分段
xxxxxxxx & 00000100 == 00000100,只有第3位为1的分段才会被捕捉。

在这里插入图片描述

注:就上述BPF抓包过滤器,wireshark显示过滤器可以用tcp.flags.reset==1

在这里插入图片描述

抓取HTTP GET报文
port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420
对应显示过滤器可以用http.request.method==GET

tcp[x:y], x起始字节位置,y读取字节数
tcp[12:1] 从第13字节读取1字节,可简写为tcp[12]
tcp[12:1] & 0xf0 取出offset
((tcp[12:1] & 0xf0) >> 2) # offset是以4个字节为单位,所以右移2位,相当于*4
tcp[((tcp[12:1] & 0xf0) >> 2):4] #取4个字节
0x47455420 = GET

注:上述过程主要目的是展示如何用BPF方式过滤待抓取的报文,除了要熟悉BPF语法,需要对TCP协议有较深入的了解。

一个完整的BPF抓包过滤器抓取HTTP GET报文
host www.chrono.com and port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420
在这里插入图片描述

在这里插入图片描述

生产中更好的做法可以是抓包过滤器+显示过滤器

抓包过滤器:host www.chrono.com and tcp port 80
在这里插入图片描述

显示过滤器:http.request.method==GET
在这里插入图片描述
参考:
Berkeley Packet Filter (BPF) syntax

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 17:02:28  更:2021-08-12 17:04:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:28:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码