当前位置: 首页 > news >正文

Wireshark抓包常用指令

1.常用过滤规则

指定源地址:

ip.src == 10.0.1.123
ip.src == 10.0.1.123 && udp
http
数据链路层:筛选mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26筛选源mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26网络层:筛选ip地址为192.168.1.1的数据包----ip.addr == 192.168.1.1筛选192.168.1.0网段的数据---- ip contains "192.168.1"筛选192.168.1.1和192.168.1.2之间的数据包----ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2筛选从192.168.1.1到192.168.1.2的数据包----ip.src == 192.168.1.1 && ip.dst == 192.168.1.2传输层:筛选tcp协议的数据包----tcp筛选除tcp协议以外的数据包----!tcp筛选端口为80的数据包----tcp.port == 80筛选12345端口和80端口之间的数据包----tcp.port == 12345 && tcp.port == 80筛选从12345端口到80端口的数据包----tcp.srcport == 12345 && tcp.dstport == 80应用层:过滤请求数据包----http.request过滤响应数据包----http.response过滤指定域名----http.host == “xxx.xxx.xxx”筛选url中包含.php的http数据包----http.request.uri contains ".php"筛选内容包含username的http数据包----http contains "username"过滤请求头----http.request.method == GET过滤请求的url----http.request.url==”/xxx/xxxx”过滤包含HTTP错误状态码的响应数据包----http.request.code >= 400过滤服务器端错误状态码的响应数据包----http.response.code <=599。

2.UDP报文结构

在这里插入图片描述

3.TCP报文结构

在这里插入图片描述

4.关键点

这里讲一下关键的点

4.1 TCP/UDP headers checksum

前面几个图可以看到Checksum,校验和。
TCP的数据包的校验和计算的数据来源包括三部分:TCP伪首部和TCP首部和TCP数据。TCP计算校验和引入了伪首部,包括后面介绍的UDP。如下图所示,TCP伪首部包括:源地址(32 bit),目标地址(32 bit),Zeros(8 bit),Protocol(8 bit),TCP Length(16 bit)。
在这里插入图片描述

在这里插入图片描述
由上图可知,源地址是106.11.43.158(6a 0b 2b 9e), 目标地址192.168.1.105(c0 a8 01 69),TCP的协议号是6,TCP数据长度是IP数据总长度减去IP头部52-20=32(0x20)。接下来是TCP头部和数据部分抓包示例:
在这里插入图片描述
由上图可知,TCP的校验和是0x755E,计算过程如下:

  1. 取伪首部的数据

Source Address Destination Address Zeros Protocol TCP Length

6a 0b 2b 9e c0 a8 01 69 00 06 00 20

  1. 将伪首部数据合并为16位一组并相加

6a0b+2b9e+c0a8+0169+0006+0020=157E0

  1. 取TCP数据

01 bb de c0 d3 86 24 c6 0e 5f 8d 90 80 10 00 0e 75 5e 00 00 01 01 05 0a 0e 5f 8d 8f 0e 5f 8d 90

  1. 将校验和部分置为00 00

01 bb de c0 d3 86 24 c6 0e 5f 8d 90 80 10 00 0e 00 00 00 00 01 01 05 0a 0e 5f 8d 8f 0e 5f 8d 90

  1. 将TCP数据合并为16位一组并相加

01bb+dec0+d386+24c6+0e5f+8d90+8010+000e

+0000+0000+0101+050a+0e5f+8d8f+0e5f+8d90=432BC

  1. 将伪首部和TCP数据的相加结果相加

157E0 + 432BC = 58A9C

  1. 将上一步结果的高16位和低16位相加

8A9C + 5 = 8AA1

  1. 将0xFFFF减8AA1得到校验和

0xFFFF - 0x8AA1 = 755E

  1. 与抓包的校验和比较是一致的

4.2 使用python生成TCP\UDP报文,用于软件开发测试

#!/usr/bin/env pythonimport socketTCP_IP = '127.0.0.1'
TCP_PORT = 1337
BUFFER_SIZE = 1024
MESSAGE = 'Hello, World!'
encoded = str.encode(MESSAGE)     # b'Hello, World!'
decoded = encoded.decode()        # 'Hello, World!' s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(encoded)
data = s.recv(BUFFER_SIZE)
s.close()print ("received data:", data)

5.Wireshark抓取TCP数据包分析三次握手

第一次握手数据包

客户端发送一个数据包,SYN=1,ACK=0,序列号从0开始,表示客户端请求建立连接
在这里插入图片描述

第二次握手数据包

服务器端发会数据包,SYN=1,ACK=1,seq=0,ack=seq+1表示已接收的数据包数量

在这里插入图片描述

第三次握手数据包

客户端重新传回确认包,SYN=0,服务器端检查ACK=1,ack=seq+1=1表示当前段成功接收数据位数

在这里插入图片描述

TCP层FLAGS字段重要标识

在这里插入图片描述

6.基本的一些概念

在这里插入图片描述
在这里插入图片描述

参考博客

https://blog.csdn.net/qq_44281295/article/details/127110834
https://zhuanlan.zhihu.com/p/631821119
https://blog.csdn.net/to_be_better_wen/article/details/129191378

http://www.lryc.cn/news/159174.html

相关文章:

  • Docker Swarm
  • jupyter notebook安装和删除kernel的解决方案
  • 中级深入--day16
  • 【洛谷 P1031】[NOIP2002 提高组] 均分纸牌 题解(贪心)
  • E5071C是德科技网络分析仪
  • ViTPose+:迈向通用身体姿态估计的视觉Transformer基础模型 | 京东探索研究院
  • Android 播放mp3文件
  • 在OpenStack私有云上安装配置虚拟机
  • pyCharm远程DEBUG
  • 微服务框架Go-kit
  • 《王道24数据结构》课后应用题——第三章 栈和队列
  • 查看linux开发板的CPU频率
  • 对象模型和this指针(个人学习笔记黑马学习)
  • SpringCloudAlibaba常用组件
  • Shotcut for Mac:一款强大而易于使用的视频编辑器
  • 【数学建模】2023数学建模国赛C题完整思路和代码解析
  • 论数据库的种类
  • docker笔记4:高级复杂安装-mysql主从复制
  • MySQL卸载干净再重新安装【Windows】
  • 在VScode中如何将界面语言设置为中文
  • jenkins如何请求http接口及乱码问题解决
  • 景区洗手间生活污水处理设备厂家电话
  • Java基础(四)
  • Android WIFI工具类 特别兼容Android12
  • 【Android Framework系列】第14章 Fragment核心原理(AndroidX版本)
  • Python 网页爬虫原理及代理 IP 使用
  • 失效的访问控制及漏洞复现
  • MLOps:掌握机器学习部署:Docker、Kubernetes、Helm 现代 Web 框架
  • Python标识符命名规范
  • 对 fastq 和 bam 进行 downsample