tcpdump(四)命令行参数讲解(三)

一   BPF高级过滤条件

高级filter官方地址   常见需求案例汇总

过滤的目的:获取最'精细'、'准确'的数据思考: 抓取'更精确'的包?1) 'tcp/ip' 报文结构要'精通',这样才能知道如何获取自己'想要的信息' -> '偏移量'2) tcpdump 的'synax语法'要精通,要'正确写对'3) 多练习,任何东西不是'一蹴而就'的,保持好耐心,熟练

如何抓取到更精确的包

①  多条件过滤规则组合

通过命令选项的不同组合 '使用 逻辑运算符' 完成'更复杂'的任务说明: 以下'两种'符号'通用'and: 所有的条件都需要满足,也可以表示为 '&&'or:  只要有一个条件满足就可以,也可以表示为 '||'not: 取反,也可以使用 '!'优先级: 取反操作有'最高'优先级,'或'操作和'and'操作有'相同'的优先级,运算时从'左到右'结合

细节: 由于'()'在'tcpdump'和'shell'中都有特殊含义,避免被'shell'转义,需要加'\'推荐: 使用'()'、'单引号'增加'read 可读性'

②  条件判断

=:  判断二者'相等'==: 判断二者'相等'!=: 判断二者'不相等'补充: '&'是位操作符、'>>'和'<<' 是移位操作符

③  基于包大小进行过滤

④  根据 mac 地址进行过滤

其中 ehost 是记录在 /etc/ethertypes 里的 'name'  --> '未验证'tcpdump ether host  [ehost]tcpdump ether dst	[ehost]tcpdump ether src	[ehost]

⑤   数据包标志位

tcpdump 支持我们根据'数据包的标志位'进行过滤  --> 抓取'指定TCP标识位'的数据包语法: proto[expr:size]1) proto:可以是熟知的'协议之一'  --> 如'ip',arp,'tcp',udp,'icmp',ipv6等强调: 并不'局限于'tcp[tcpflags]形式2) expr: 可以是'数值',也可以是一个'表达式',表示与'指定的协议头开始处'的字节'偏移量'补充: 还可以是'别名常量'形式强调: 后续需要充分理解'tcp/ip'协议簇才能理解和书写正确的'偏移量' --> '字节'3) size: 是'optional 可选'的,表示'从字节偏移量'开始取的'字节数量count'补充: 对于 'proto[expr:size] =z' 形式1) 当z为'一个'字节时,z为'10'进制2) 当z为'多'字节时,z为'16'进制,用'0x'开头

⑥  tcp[13]由来

分析: 编号从'0'开始算,TCP'控制标志'位于13字节,分析编号'13'的字节强调: 需要理解'bytes'、'bit' 含义  --> 1 bytes = 8bit

TCP包里有个'flags字段'表示'包'的类型,tcpdump可以根据'该字段'抓取相应类型的包:tcp[13] 就是 TCP flags '(URG,ACK,PSH,RST,SYN,FIN)',按照这个计算标志位置位后的'数值'
​
tcp[tcpflags] '等价' tcp[13]

编号13的字节   tcp[13]详解

⑦   根据 tcpflags 进行过滤 

tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg 可以理解为'别名常量'强调: 由于数字'不好记忆',所以一般使用这样的"别名常量"表示

二进制'按位与'运算符& : 0&0=0;  0&1=0  1&1=1运算规则:如果两个二进制数的同一个位数上的数'都为1',则当前位'为1',否则为0+++++++++++ "分割线" +++++++++++补充: 全'数值'的形式,二者也可以'混合'使用tcpdump 'tcp[13] & 32!=0'   所有 URGENT ( URG ) 包tcpdump 'tcp[13] & 16!=0'   所有 ACKNOWLEDGE ( ACK ) 包tcpdump 'tcp[13] & 8!=0'    所有 PUSH ( PSH ) 包tcpdump 'tcp[13] & 4!=0'    所有 RESET ( RST ) 包tcpdump 'tcp[13] & 2!=0'    所有 SYNCHRONIZE ( SYN ) 包tcpdump 'tcp[13] & 1!=0'    所有 FINISH ( FIN ) 包tcpdump 'tcp[13]=18'        所有 SYNCHRONIZE/ACKNOWLEDGE ( SYNACK ) 包

⑧  其它高级

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/128667.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker入门加实战—docker安装并配置阿里云加速

docker入门加实战—docker安装并配置阿里云加速 为什么要学习docker 在开发和部署项目的过程中&#xff0c;经常会遇到如下问题&#xff1a; 软件安装包名字复杂&#xff0c;不知道去哪里找安装软件和部署项目步骤复杂&#xff0c;容易出错 这就是我们今天要学习Docker技术…

29 WEB漏洞-CSRF及SSRF漏洞案例讲解

目录 CSRF漏洞解释&#xff0c;原理等CSRF漏洞检测&#xff0c;案例&#xff0c;防御等防御方案2、设置随机Token3、检验referer来源 SSRF漏洞会比csrf漏洞重要一些SSRF_PHP&#xff0c;JAVA漏洞代码协议运用演示案例:SSRF_漏洞代码结合某漏洞利用测试 如何查找ssrf漏洞 SSRF漏…

k8s-9 ingress-nginx 特性

TLS加密 创建证书 测试 auth认证 创建认证文件 rewrite重定向 进入域名 会自动重定向hostname.html 示例二&#xff1a; 测试 后面必须跟westos 这个关键字 canary金丝雀发布 基于header灰度 场景&#xff1a;版本的升级迭代&#xff0c;比如一个service 升级到另…

Windows安装Node.js

1、Node.js介绍 ①、Node.js简介 Node.js是一个开源的、跨平台的JavaScript运行环境&#xff0c;它允许开发者使用JavaScript语言来构建高性能的网络应用程序和服务器端应用。Node.js的核心特点包括&#xff1a; 1. 事件驱动: Node.js采用了事件驱动的编程模型&#xff0c;通…

如何对比github中不同commits的区别

有时候想要对比跨度几十个commits之前的代码区别&#xff0c;想直接使用github的用户界面。可以直接在官网操作。 示例 首先要创建一个就commit的branch。进入该旧的commit&#xff0c;然后输入branch名字即可。 然后在项目网址后面加上compare即可对比旧的branch和新的bran…

MQTT服务器源码解析

目录 1、关于header问题 2、MQTT 连接参数的使用 2.1连接地址 2.2 基于 TCP 的 MQTT 连接 2.3 基于 WebSocket 的连接 3、订阅topic 4、推送消息给订阅者 5、QOS 机制 5.1 QOS是什么 5.2 QOS的实现原理 5.3 发送流程 6、reatain机制 总结&#xff1a;给还没上线的…

智慧工地:数字革命下的建筑业新趋势

在当今建筑领域&#xff0c;智慧工地正迅速崭露头角。这个概念不仅代表了技术进步&#xff0c;还预示着建筑行业的数字化和智能化未来。从多个角度来看&#xff0c;智慧工地都具有深远的意义&#xff0c;它正在改变着我们建筑的方式和未来。 提高工程效率 智慧工地利用物联网&…

软件工程与计算总结(五)软件需求基础

本帖介绍软件需求涉及的诸多基本概念&#xff0c;通过对这些概念的阐述&#xff0c;剖析软件需求的来源、层次、类别、作用等重要知识~ 目录 ​编辑 一.引言 二.需求工程基础 1.简介 2.活动 3.需求获取 4.需求分析 5.需求规格说明 6.需求验证 7.需求管理 三.需求基…

2023年MES系统研究报告-介绍及主要结论 | 百世慧®

随着国内制造业的蓬勃发展&#xff0c;制造企业的数字化转型需求也在不断的增强&#xff0c;使得工业软件的需求也不断被激发。 现在&#xff0c;我国软件产业迎来一个高速发展时期&#xff0c;软件产业高质量发展上升为国家战略&#xff0c;工业软件、基础软件等关键核心技术…

【Python查找算法】二分查找、线性查找、哈希查找

目录 1 二分查找算法 2 线性查找算法 3 哈希查找算法 1 二分查找算法 二分查找&#xff08;Binary Search&#xff09;是一种用于在有序数据集合中查找特定元素的高效算法。它的工作原理基于将数据集合分成两半&#xff0c;然后逐步缩小搜索范围&#xff0c;直到找到目标元素…

线性代数小例子

这样做有什么问题呢&#xff1a; A 2 A > A ( A − E ) 0 > A E A 0 A^2 A > A(A - E) 0> A E \quad A 0 A2A>A(A−E)0>AEA0 上述做法是错误的&#xff0c;这是因为两个矩阵的乘积结果为0&#xff0c;并不能说明这两个矩阵就是0&#xff0c;即上述…