Wrieshark 网络数据抓包协议分析
首先给自己提个醒
Windows下如何运行.sh脚本
按下win+s,搜索sh或者git,打开sh或者git bash,cd到脚本目录,通过命令运行
sh xxx.sh [args]
运行的时候提示make: command not found,是因为没有make命令,参考https://blog.****.net/qq_35037684/article/details/106848673,通常都有c环境,直接第二步就可以了
运行时候提示npm: command not found,是因为没有装nodejs,下载地址https://nodejs.org/zh-cn/
使用过滤器
https://blog.****.net/holandstone/article/details/47026213
https://blog.****.net/holandstone/article/details/47026213
初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
表达式规则
1. 协议过滤
比如TCP,只显示TCP协议。
2. IP 过滤
比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,
ip.dst==192.168.1.102, 目标地址为192.168.1.102
3. 端口过滤
tcp.port ==80, 端口为80的
tcp.srcport == 80, 只显示TCP协议的愿端口为80的。
4. Http模式过滤
http.request.method=="GET", 只显示HTTP GET方法的。
5. 逻辑运算符为 AND/ OR
常用的过滤表达式
过滤表达式 | 用途 |
http | 只查看HTTP协议的记录 |
ip.src ==192.168.1.102 or ip.dst==192.168.1.102 | 源地址或者目标地址是192.168.1.102 |
udp | 只查看UDP传输协议 |
抓包分析UDP协议中的QQ会话
https://blog.****.net/weixin_44448942/article/details/103309355
https://blog.****.net/holandstone/article/details/47026213
https://blog.****.net/qinggebuyao/article/details/7814499
使用Wireshark抓包分析UDP协议,抓包如下
- 通过添加udp筛选,抓取了一些包,在列表区可以看到这次抓取过程中每个包的编号、时间、来源和去向IP、协议、长度、信息。
- 在数据包详细区由上到下分别为:
- Frame 211:物理层的数据帧概况
- Ethernet II:数据链路层以太网帧头部信息,可以看到路由信息
- Internet Protocol Version 4:网络层IP包头部信息,此处是IPv4
- User Datagram Protocol:传输层的数据段头部信息,此处是UDP
- OICQ:应用层信息,此处是QQ定义的应用层协议
- 在数据包详细区点击某一个字段可以在数据包字节区查看具体的数据信息
物理层的数据帧分析
#211号帧,线路377字节,实际捕获3377字节,接口id
Frame 211: 377 bytes on wire (3016 bits), 377 bytes captured (3016 bits) on interface \Device\NPF_{4A7CD894-2EED-****-****-ABC****5A3**}, id 0
#接口id
Interface id: 0 (\Device\NPF_{4A7CD894-2EED-****-****-ABC****5A3**})
#接口名 、接口描述
Interface name: \Device\NPF_{4A7CD894-2EED-****-****-ABC****5A3**}
Interface description: 以太网
#封装类型
Encapsulation type: Ethernet (1)
#获取日期和时间
Arrival Time: Nov 4, 2020 17:23:43.695577000 中国标准时间
[Time shift for this packet: 0.000000000 seconds]
#从新纪元时间1970-01-01 00:00:00 UTC算起的时间
Epoch Time: 1604481823.695577000 seconds
#此包与前一包和第一包的时间间隔
[Time delta from previous captured frame: 0.120236000 seconds]
[Time delta from previous displayed frame: 0.120236000 seconds]
[Time since reference or first frame: 3.965476000 seconds]
Frame Number: 211 #帧序号
Frame Length: 377 bytes (3016 bits) #帧长度
Capture Length: 377 bytes (3016 bits) #捕获长度
[Frame is marked: False] #此帧是否做了标记:否
[Frame is ignored: False] #此帧是否被忽略:否
[Protocols in frame: eth:ethertype:ip:udp:oicq] #帧内封装的协议层次结构
[Coloring Rule Name: UDP] #着色标记的协议名称
[Coloring Rule String: udp] #着色规则显示的字符串,也就是筛选器
数据链路层分析
#路由信息,来源Tp-LinkT (MAC地址d0:76:**:**:**:*1),到达Dell (MAC地址8c:ec:**:**:**:*8)
Ethernet II, Src: Tp-LinkT_84:**:** (d0:76:**:**:**:*1), Dst: Dell_d0:6f:** (8c:ec:**:**:**:*8)
Destination: Dell_d0:6f:** (8c:ec:**:**:**:*8)
Source: Tp-LinkT_84:**:** (d0:76:**:**:**:*1)
Type: IPv4 (0x0800) #网络层类型为IPv4
网络层分析
#IPV4 源地址IP:61.1**.***.**3 目标地址IP:192.168.1.100
Internet Protocol Version 4, Src: 61.1**.***.**3, Dst: 192.168.1.100
0100 .... = Version: 4 #IP协议版本
.... 0101 = Header Length: 20 bytes (5) #IPv4的首部长度 20字节=5*4
# DS:区分服务 代码点,用来指定特殊的数据包处理方式以获得更好的服务。
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 363 #指首部和数据的总长度 363
#IPv4在存储器中维持一个计数器,每产生一个数据包,计数器加一,把值赋给该字段作为标识,共8字节。
Identification: 0x4584 (17796)
#目前只有两位有意义。最低位为1表示后面“还有分片”的数据报,为0表示这已经是最后一个数据片;中间一位为1表示“不能分片”,为0才允许分片。
Flags: 0x4000, Don't fragment
#片偏移:13位,较长的分组在经过通信链路中因为分组过大进行分片,分片后在原分组中的相对位置。片偏移以8字节为偏移单位
Fragment offset: 0
#生存时间:表示数据包在网络中的寿命,缩写TTL,功能是“跳数限制”
Time to live: 46
Protocol: UDP (17) #指出此数据包携带数度的协议为UDP
#首部效验和:数据包每经过一个路由器,路由器都要重新计算一下首部检验和,这里未核实。
#若首部未发生变化,则此结果必为0,于是就保留这个数据报。这个字段只检验数据报的首部,但不包括数据部分。
Header checksum: 0x5385 [validation disabled]
[Header checksum status: Unverified]
Source: 61.1**.***.**3 #源IP
Destination: 192.168.1.100 #目标IP
传输层分析
#UDP协议,源端口:8000, 目标端口:4020
User Datagram Protocol, Src Port: 8000, Dst Port: 4020
Source Port: 8000
Destination Port: 4020
Length: 343 #数据报文长度:343字节
Checksum: 0xe2b0 [unverified] #校验和,未核实
[Checksum Status: Unverified]
[Stream index: 0]
#此包与第一包和前一包的时间戳间隔
[Timestamps]
[Time since first frame: 3.965476000 seconds]
[Time since previous frame: 0.241175000 seconds]
应用层分析OICQ
OICQ - IM software, popular in China
Flag: Oicq packet (0x02) #标识
Version: 0x3949 #版本号
Command: Receive message (23) #命令字,这里是接收信息
Sequence: 7835 #序号
Data(OICQ Number,if sender is client): 76523**58 #我的qq号
Data: #具体数据
[Expert Info (Warning/Undecoded): Trailing stray characters]
[Trailing stray characters]
[Severity level: Warning]
[Group: Undecoded]
https://blog.****.net/weixin_44448942/article/details/103309355
https://blog.****.net/holandstone/article/details/47026213
https://blog.****.net/qinggebuyao/article/details/7814499
#211号帧,线路377字节,实际捕获3377字节,接口id Frame 211: 377 bytes on wire (3016 bits), 377 bytes captured (3016 bits) on interface \Device\NPF_{4A7CD894-2EED-****-****-ABC****5A3**}, id 0 #接口id Interface id: 0 (\Device\NPF_{4A7CD894-2EED-****-****-ABC****5A3**}) #接口名 、接口描述 Interface name: \Device\NPF_{4A7CD894-2EED-****-****-ABC****5A3**} Interface description: 以太网 #封装类型 Encapsulation type: Ethernet (1) #获取日期和时间 Arrival Time: Nov 4, 2020 17:23:43.695577000 中国标准时间 [Time shift for this packet: 0.000000000 seconds] #从新纪元时间1970-01-01 00:00:00 UTC算起的时间 Epoch Time: 1604481823.695577000 seconds #此包与前一包和第一包的时间间隔 [Time delta from previous captured frame: 0.120236000 seconds] [Time delta from previous displayed frame: 0.120236000 seconds] [Time since reference or first frame: 3.965476000 seconds] Frame Number: 211 #帧序号 Frame Length: 377 bytes (3016 bits) #帧长度 Capture Length: 377 bytes (3016 bits) #捕获长度 [Frame is marked: False] #此帧是否做了标记:否 [Frame is ignored: False] #此帧是否被忽略:否 [Protocols in frame: eth:ethertype:ip:udp:oicq] #帧内封装的协议层次结构 [Coloring Rule Name: UDP] #着色标记的协议名称 [Coloring Rule String: udp] #着色规则显示的字符串,也就是筛选器
#路由信息,来源Tp-LinkT (MAC地址d0:76:**:**:**:*1),到达Dell (MAC地址8c:ec:**:**:**:*8) Ethernet II, Src: Tp-LinkT_84:**:** (d0:76:**:**:**:*1), Dst: Dell_d0:6f:** (8c:ec:**:**:**:*8) Destination: Dell_d0:6f:** (8c:ec:**:**:**:*8) Source: Tp-LinkT_84:**:** (d0:76:**:**:**:*1) Type: IPv4 (0x0800) #网络层类型为IPv4
#IPV4 源地址IP:61.1**.***.**3 目标地址IP:192.168.1.100 Internet Protocol Version 4, Src: 61.1**.***.**3, Dst: 192.168.1.100 0100 .... = Version: 4 #IP协议版本 .... 0101 = Header Length: 20 bytes (5) #IPv4的首部长度 20字节=5*4 # DS:区分服务 代码点,用来指定特殊的数据包处理方式以获得更好的服务。 Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) Total Length: 363 #指首部和数据的总长度 363 #IPv4在存储器中维持一个计数器,每产生一个数据包,计数器加一,把值赋给该字段作为标识,共8字节。 Identification: 0x4584 (17796) #目前只有两位有意义。最低位为1表示后面“还有分片”的数据报,为0表示这已经是最后一个数据片;中间一位为1表示“不能分片”,为0才允许分片。 Flags: 0x4000, Don't fragment #片偏移:13位,较长的分组在经过通信链路中因为分组过大进行分片,分片后在原分组中的相对位置。片偏移以8字节为偏移单位 Fragment offset: 0 #生存时间:表示数据包在网络中的寿命,缩写TTL,功能是“跳数限制” Time to live: 46 Protocol: UDP (17) #指出此数据包携带数度的协议为UDP #首部效验和:数据包每经过一个路由器,路由器都要重新计算一下首部检验和,这里未核实。 #若首部未发生变化,则此结果必为0,于是就保留这个数据报。这个字段只检验数据报的首部,但不包括数据部分。 Header checksum: 0x5385 [validation disabled] [Header checksum status: Unverified] Source: 61.1**.***.**3 #源IP Destination: 192.168.1.100 #目标IP
#UDP协议,源端口:8000, 目标端口:4020 User Datagram Protocol, Src Port: 8000, Dst Port: 4020 Source Port: 8000 Destination Port: 4020 Length: 343 #数据报文长度:343字节 Checksum: 0xe2b0 [unverified] #校验和,未核实 [Checksum Status: Unverified] [Stream index: 0] #此包与第一包和前一包的时间戳间隔 [Timestamps] [Time since first frame: 3.965476000 seconds] [Time since previous frame: 0.241175000 seconds]
OICQ - IM software, popular in China Flag: Oicq packet (0x02) #标识 Version: 0x3949 #版本号 Command: Receive message (23) #命令字,这里是接收信息 Sequence: 7835 #序号 Data(OICQ Number,if sender is client): 76523**58 #我的qq号 Data: #具体数据 [Expert Info (Warning/Undecoded): Trailing stray characters] [Trailing stray characters] [Severity level: Warning] [Group: Undecoded]
原文地址:https://www.cnblogs.com/smileglaze/p/13926489.html
推荐阅读
-
【2022新手指南】Java编程进阶之路 - 六、技术架构篇 ### MySQL索引底层解析与优化实战 - 你会讲解MySQL索引的数据结构吗?性能调优技巧知多少? - Redis深度揭秘:你知道多少?从基础到哨兵、主从复制全梳理 - Redis持久化及哨兵模式详解,还有集群搭建和Leader选举黑箱打开 - Zookeeper是个啥?特性和应用场景大公开 - ZooKeeper集群搭建攻略及 Leader选举、读写一致性、共享锁实现细节 - 探究ZooKeeper中的Leader选举机制及其在分布式环境中的作用 - Zab协议深入剖析:原理、功能与在Zookeeper中的核心地位 - RabbitMQ全方位解读:工作模式、消费限流、可靠投递与配置策略 - 设计者视角:RabbitMQ过期时间、死信队列与延时队列实践指南 - RocketMQ特性和应用场景揭示:理解其精髓与差异化优势 - Kafka详细介绍:特性及广泛应用于实时数据处理的场景解析 - ElasticSearch实力揭秘:特性概述与作为搜索引擎的广泛应用 - MongoDB认知升级:非关系型数据库的优势阐述,安装与使用实战教学 - BIO/NIO/AIO网络模型对比:掌握它们的区别与在网络编程中的实际应用 - Netty带你飞:理解其超快速度背后的秘密,包括线程模型分析 - 网络通信黑科技:Netty编解码原理与常用编解码器的应用,Protostuff实战演示 - 解密Netty粘包与拆包现象,怎样有效应对这一常见问题 - 自定义Netty心跳检测机制,轻松调整检测间隔时间的艺术 - Dubbo轻骑兵介绍:核心特性概览,服务降级实战与其实现益处 - Dubbo三大神器解读:本地存根与本地伪装的实战运用与优势呈现 ----------------------- 七、结语与回顾
-
抓包与分析Wi-Fi网络实战:无线局域网数据包探索(第四部分)
-
记录 TCP 队列满溢问题的故障排除过程-4.抓包数据分析
-
BGP 协议概述和数据包分析
-
在局域网环境中捕获数据包并解析相关网络协议
-
OpsnSSH 抓包器分析 | SSH 协议分析
-
SSH 协议基础和 wireshark 数据包分析
-
SSH 协议分析和 wireshark 数据包分析
-
ssh工作流程及原理-SSH(Secure Shell Protocol,安全的壳程序协议),它可以通过数据包加密技术将等待传输的数据包加密后再传输到网络上。ssh协议本身提供两个服务器功能:一个是类似telnet的远程连接使用shell的服务器;另一个就是类似ftp服务的sftp-server,提供更安全的ftp服务。 连接加密技术简介 目前常见的网络数据包加密技术通常是通过“非对称密钥系统”来处理的。主要通过两把不一样的公钥与私钥来进行加密与解密的过程。 公钥(public key):提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。 私钥(private key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。 SSH工作过程:在整个通讯过程中,为实现SSH的安全连接,服务端与客户端要经历如下五个阶段: 版本号协商阶段 SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本 密钥和算法协商阶段 SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法 认证阶段 SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证 会话请求阶段 认证通过后,客户端向服务器端发送会话请求 交互会话阶段 会话请求通过后,服务器端和客户端进行信息的交互 一、版本协商阶段 服务器端打开端口22,等待客户端连接; 客户端向服务器端发起TCP初始连接请求,TCP连接建立后,服务器向客户端发送第一个报文,包括版本标志字符串,格式为“SSH-<主协议版本号>.<次协议版本号>.<软件版本号>”,协议版本号由主版本号和次版本号组成,软件版本号主要是为调试使用。 客户端收到报文后,解析该数据包,如果服务器的协议版本号比自己的低,且客户端能支持服务器端的低版本,就使用服务器端的低版本协议号,否则使用自己的协议版本号。 客户端回应服务器一个报文,包含了客户端决定使用的协议版本号。服务器比较客户端发来的版本号,决定是否能同客户端一起工作。如果协商成功,则进入密钥和算法协商阶段,否则服务器断开TCP连接。 说明:上述报文都是采用明文方式传输。 二、密钥和算法协商阶段 服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表、加密算法列表、MAC(Message Authentication Code,消息验证码)算法列表、压缩算法列表等等。 服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法。 服务器端和客户端利用DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成会话密钥和会话ID。 由此,服务器端和客户端就取得了相同的会话密钥和会话ID。对于后续传输的数据,两端都会使用会话密钥进行加密和解密,保证了数据传送的安全。在认证阶段,两端会使用会话用于认证过程。 会话密钥的生成: 客户端需要使用适当的客户端程序来请求连接服务器,服务器将服务器的公钥发送给客户端。(服务器的公钥产生过程:服务器每次启动sshd服务时,该服务会主动去找/etc/ssh/ssh_host*文件,若系统刚装完,由于没有这些公钥文件,因此sshd会主动去计算出这些需要的公钥文件,同时也会计算出服务器自己所需要的私钥文件。) 服务器生成会话ID,并将会话ID发给客户端。 若客户端第一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户主目录内的~/.ssh/known_hosts。若是已经记录过该服务器的公钥数据,则客户端会去比对此次接收到的与之前的记录是否有差异。客户端生成会话密钥,并用服务器的公钥加密后,发送给服务器。 ****服务器用自己的私钥将收到的数据解密,获得会话密钥。 服务器和客户端都知道了会话密钥,以后的传输都将被会话密钥加密。 三、认证阶段 SSH提供两种认证方法: 基于口令的认证(password认证):客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务器,服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败消息。 基于密钥的认证(publickey认证):客户端产生一对公共密钥,将公钥保存到将要登录的服务器上的那个账号的家目录的.ssh/authorized_keys文件中。认证阶段:客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地该账号家目录下的authorized_keys中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一段随机字符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的一样,则认证通过,否则,认证失败。 注:服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。客户端从认证方法列表中选取一种认证方法再次进行认证,该过程反复进行。直到认证成功或者认证次数达到上限,服务器关闭连接为止。实例
-
SSH 协议基础和 wireshark 数据包分析