Wireshark TS | Packet Challenge 之 FTP 案例分析

news2024/11/27 21:48:23

前言

来自于 Sharkfest Packet Challenge 中的一个数据包案例,Sharkfest 是 Wireshark 官方组织的一年一度的大会,致力于在 Wireshark 开发人员和用户社区之间分享知识、经验和最佳实践。印象中早期是一年一次,近几年发展成一年两次,一次貌似固定在美国,一次会在其他地区,像是欧洲或亚洲。Packet Challenge 是大会其中一个比较有意思的活动环节,通过一系列数据包案例设置关卡,参会人员进行分析挑战,测试综合分析能力。


题目信息

本次案例为 Sharkfest 2015 Packet Challenge 中的第三个题目 FTP ME, BABY(🙄 这名字真的是可以),数据包跟踪文件为 tcp-bigftp.pcapng

主要描述如下:

  1. What TCP options are supported by both client and server in this trace file?
  2. What Window Size(s) are advertised in each Window Update packet?
  3. What operating system must be supported to use the downloaded file?
  4. How much is the largest delay preceding a Window Update packet?
  5. Why does Wireshark indicate the Window Scaling factor is ‐1 in some of the packets?

数据包信息

数据包跟踪文件基本信息如下:

λ capinfos tcp-bigftp.pcapng
File name:           tcp-bigftp.pcapng
File type:           Wireshark/... - pcapng
File encapsulation:  Ethernet
File timestamp precision:  microseconds (6)
Packet size limit:   file hdr: (not set)
Number of packets:   6120
File size:           11 MB
Data size:           11 MB
Capture duration:    24.668708 seconds
First packet time:   2012-08-02 03:38:39.142142
Last packet time:    2012-08-02 03:39:03.810850
Data byte rate:      468 kBps
Data bit rate:       3748 kbps
Average packet size: 1888.69 bytes
Average packet rate: 248 packets/s
SHA256:              bfb28f553bea551a2023825ed6ec1aa2bb57a8893111c8baa804d2ee0a1b3929
RIPEMD160:           af787ba3f0cf4f933e35fba11b82276c482a1892
SHA1:                c416ef5f71076c7dc1dad7d5f4978d37b2ee41c6
Strict time order:   True
Capture oper-sys:    64-bit Windows 7 Service Pack 1, build 7601
Capture application: Dumpcap 1.8.1 (SVN Rev 43946 from /trunk-1.8)
Number of interfaces in file: 1
Interface #0 info:
                     Name = \Device\NPF_{6E79FEC0-FF79-4970-96E4-EEFF300A9B9F}
                     Encapsulation = Ethernet (1 - ether)
                     Capture length = 65535
                     Time precision = microseconds (6)
                     Time ticks per second = 1000000
                     Time resolution = 0x06
                     Operating system = 64-bit Windows 7 Service Pack 1, build 7601
                     Number of stat entries = 1
                     Number of packets = 6120

λ

Winows 7 系统上直接通过 Wireshark 捕获,无截断,文件大小 11MB,捕获数据包数量 6120 个,捕获持续时间为 24.67秒,平均速率 3748 kbps。

协议分层信息统计如下,FTP 控制连接和数据连接等信息。

FTP-01

专家信息显示如下,异常简洁,并且无 Warning 级别信息,只有较多数量的 TCP window update 消息。

FTP-02


数据包分析

数据包跟踪文件初步展开信息如下,实际 TCP Stream 2 条,一条为 FTP 控制连接,一条为 FTP 数据连接。

FTP-03

λ tshark -r tcp-bigftp.pcapng -T fields -e tcp.stream | sort -n | uniq
0
1

1. What TCP options are supported by both client and server in this trace file?

在这个跟踪文件中,客户端和服务器均支持的 TCP options 是什么?

分析步骤

说到 TCP options ,又想起 TCP 首部报文格式图了,经典~ 可以看到 TCP options 是一个可变长度的可选字段。

FTP-04

一般客户端和服务器之间的 TCP 交互以 TCP 三次握手开始,之间所共同支持的 TCP options 也在此阶段进行协商。通过显示过滤表达式过滤出 SYN 和 SYN/ACK 即可

tcp.flags.syn == 1

FTP-05

客户端 No.8 和服务器 No.9 TCP options 细节信息,可见共同支持的有 MSS, Window Scale, SACK, TCP Timestamps

FTP-06
FTP-07

分析答案

在这个跟踪文件中,客户端和服务器均支持的 TCP options 是:MSS, Window Scaling, SACK, TCP Timestamps。


2. What Window Size(s) are advertised in each Window Update packet?

在每一个 Window 更新数据包中所通告的 Window Size 是什么。

分析步骤

首先注意的是指定的数据包类别,它是 Window Update packet,这样先通过显示过滤式筛选,共有 245 个数据包,占比 4.0%。

tcp.analysis.window_update

FTP-08

其次 Window Size 来自于通告 Window 和 Window size scaling facotor(也是 1 中 TCP Options ,客户端和服务器共同支持的结果)的乘积,即 33304 * 2 = 66608

FTP-09

当然在 Packet List 视图中通过增加 Window size 信息列也可,全是 66608 。

FTP-10

分析答案

在每一个 Window 更新数据包中所通告的 Window Size 是:66608。


3. What operating system must be supported to use the downloaded file?

下载的文件必须支持什么操作系统?

分析步骤

首先分析在数据包跟踪文件中传输下载的是什么文件,通过控制连接可以看到客户端请求的是 kidsatbeach.jpg 文件。

FTP-11

问题中所描述的是下载,但实际 FTP 数据包中是上传,另外文件格式为 jpg,对于操作系统并没有多了解,必须支持什么操作系统?win 可以,linux 不行嘛?⁉️

分析答案

下载的文件必须支持什么操作系统:win。

答案暂且为 win 吧,也许是我的解题方向有问题。。。


4. How much is the largest delay preceding a Window Update packet?

在 Window 更新数据包之前的最大延迟是多少?

分析步骤

本题理解上同样会有点疑惑,以客户端某一个 Windows Update 数据帧为例 ,所说的之前延迟可能有几种:

  1. 上一个捕获数据帧的比较;
  2. 上一个显示数据帧的比较(基于TCP 流过滤);
  3. 上一个同方向显示数据帧的比较(基于TCP 流过滤)。

本次解题以第 2 种思路分析,首先过滤出 TCP Stream 1 中所有的数据包,导出成一个新的 pcapng 文件。之后在新的 pcapng 文件中通过显示过滤表达式过滤出Windows Updata packet

tcp.analysis.window_update

FTP-12

然后在 Packet List 视图中增加信息列,字段为 frame.time_delta ,如下,即为每一个 Window Update packet 与上一个捕获数据帧的时间差值。

FTP-13

此处是与上一个捕获数据帧的时间比较,是因为之前已经过滤出 TCP Stream 并另存为新文件,再经过 tcp.analysis.window_update 过滤出的结果。

通过从大到小排列,可知最大的延迟时间如下,为 0.006486 秒,No.6103 和 No.6102 的时间间隔。

FTP-14

分析答案

在 Window 更新数据包之前的最大延迟是:0.006486 秒。


5. Why does Wireshark indicate the Window Scaling factor is ‐1 in some of the packets?

为什么在某些数据包上 Wireshark 标识 Window Scaling Factor 值为 -1 ?

分析步骤

首先 Window Scaling Factor 为 TCP Options 中的一个字段,在 1 题中曾经说到一般客户端和服务器之间的 TCP 交互以 TCP 三次握手开始,之间所共同支持的 TCP options 也在此阶段进行协商。
而 Window Scaling Factor 的使用,有以下几种情况:

  1. 客户端和服务器两端均支持的情况下,那么各自 SYN 或 SYN/ACK 所通告的 WS 值在后续数据交互时使用即可, Window size Scaling Factor 标识为该值;
  2. 客户端和服务器,如有任意一端不支持或是两端都不支持的情况下, 那么在后续数据交互时使用时 Window size Scaling Factor 标识为 -2;
  3. 还有一种特殊情况,在数据包跟踪文件中并没有捕获到 SYN 和 SYN/ACK 的情况下,也就是 Wireshark 无法判断是否使用了 Window Scaling Factor,那么会在后续数据交互时 Window size Scaling Factor 标识为 -1。

通过显示过滤表达式 tcp.window_size_scalefactor == -1 过滤出的结果,实际上都是 FTP 控制连接的数据包,因为在这一条 TCP Stream 0 下并没有捕获到 TCP 三次握手阶段的报文,所以 Window size Scaling Factor 标识为 -1。而 No.1 的 Window 16114 字节,因为 Window size Scaling Factor 未知,所以 Calculated window size 也为 16114 字节。

FTP-15

Window size Scaling Factor 值为 -1 只是 Wireshark 基于数据包跟踪文件上下文判断,未知实际 Factor 值的情况下标识为 -1,并不代表实际客户端和服务器的 TCP 连接不支持。

分析答案

为什么在某些数据包上 Wireshark 标识 Window Scaling Factor 值为 -1:因为未捕获到 TCP 三次握手 。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【华为上机真题】工号不够用咋办

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

2D测量 Metrology——

基本流程: 1,创建计量模型 create_metrology_model (MetrologyHandle) 2,设置计量模型的图像大小 set_metrology_model_image_size (MetrologyHandle, Width, Height) 3,将计量对象添加至计量模型中.(矩形,直线,圆,椭圆) add_metrology_object_rectangle2_measure  //矩形…

【高并发】- 指标介绍

什么是高并发 高并发系统有哪些关键指标 高并发系统介绍 本文主要讲解高并发系统的概念,在实际开发过程中为什么要使用高并发系统,相比于传统系统,能带来怎样的改变。 1.1 高并发介绍 高并发(Hign Concurrency)&#…

Linux常用命令——sed命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) sed 功能强大的流式文本编辑器 补充说明 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存…

剖析“类和对象” (下) -------- CPP

学习完“类和对象”(上)【剖析“类和对象” (上) -------- CPP】和(中)【剖析“类和对象” (中) -------- CPP】,相信各位同学对CPP中类与对象的理解或多或少都加深了一点。 本篇博客将和大家一同再次学习CPP中类和对象的知识点,跟随本篇博客的脚步定能…

Java两大工具库:Commons和Guava(1)

您好,我是湘王,这是我的CSDN博客。值此新春佳节,我给您拜年啦~祝您在新的一年中所求皆所愿,所行皆坦途,展宏“兔”,有钱“兔”,多喜乐,常安宁!Java的成功很大…

Kettle(8):删除组件

删除组件能够按照指定条件,将表中的数据删除。 1 需求 有以下一个文本文件,文本文件包含了要删除的两个用户id: id 392456197008193000 267456198006210000 需要使用Kettle将文本文件中两个ID对应的t_user1表的数据删除。 2 构建Kettle数据流图 效果图: 1 将文本文件输…

【算法突击】动态规划系列 (一)| 程序员面试 | 最大子数组和 | 最长递增子序列 | 最长公共子序列

【算法突击】动态规划系列 (一)| 程序员面试 | 最大子数组和 | 最长递增子序列 | 最长公共子序列 文章目录【算法突击】动态规划系列 (一)| 程序员面试 | 最大子数组和 | 最长递增子序列 | 最长公共子序列1. 最大子数组和1.1 题目…

C 语言零基础入门教程(十三)

函数指针 函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。 函数指针可以像一般函数一样,用于调用函数、传递参数。 函数指针变量的声明: typedef int (*fun_ptr)(int,i…

ATAC-seq分析:Annotating Peaks(9)

1. 注释开放区域 将已识别的无核小体区域与基因组特征(如基因和增强子)相关联通常很有趣。 一旦注释到基因或增强子的基因,我们就可以开始将 ATACseq 数据与这些基因的特征相关联。 (功能注释、表达变化、其他表观遗传状态&#x…

瑞吉外卖实战

https://blog.csdn.net/weixin_43715214/category_12022798.html大佬记录项目介绍day01功能架构(1)用户层本项目中在构建系统管理后台的前端页面,我们会用到H5、Vue.js、ElementUI等技术。而在构建移动端应用时,我们会使用到微信小…

计算机网络连环炮40问

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

Day09 C++STL入门基础知识六——deque容器 构造函数-赋值操作-大小操作-插入删除-数据存储-排序操作【全面深度剖析+例题代码展示】

无人问津的日子,我为自己喝彩! 文章目录1. 基本概念1.1 功能1.2 与vector区别1.3 图解1.4 内部工作原理1.5 deque 容器的迭代器也是支持随机访问的2. 构造函数2.1 函数原型2.2 代码展示2.3 测试结果2.4 小think2.4.1 小问题2.4.2 思路2.4.3 修改2.4.4 测…

从零开始的数模(六)python在高等数学和线性代数中的应用

科学计算设计数值计算和符号计算,在python中作基础数值计算用numpy和scipy工具库,作符号运算用sympy工具库 sympy工具库–符号运算 符号运算基本知识 1.利用symbols函数创建符号变量构造多个符号变量时中间以空格分隔 2.利用符号变量创建表达式 3.利用…

Hive整合HBase,操作HBase表

Hive over HBase原理 Hive与HBase利用两者本身对外的API来实现整合,主要是靠HBaseStorageHandler进行通信,利用 HBaseStorageHandler,Hive可以获取到Hive表对应的HBase表名,列簇以及列,InputFormat和 OutputFormat类&…

STS:Surround-view Temporal Stereo for Multi-view 3D Detection——论文笔记

参考代码:None 1. 概述 介绍:这篇文章提出的方法是对LSS中深度估计部分进行改进,其改进的点是在深度估计部分引入立体匹配去估计周视相机下的深度信息,其中立体匹配使用前后视频帧进行构建(可以看作是时序信息的使用&…

node-sass安装失败的解决方案

Nodejs 新版安装过程需要安装node-sass模块,开始一直无法安装成功,网上找了很多方法都无法解决,找了很久才找到的解决方案。 1.1 node-sass安装前准备 Option 2: Install dependencies and configuration manually Install Visual C Build E…

Python处理zip压缩文件

文章目录ZipFile对象写入压缩文件读取和解压缩常用属性ZipInfoZipFile对象 顾名思义,zipfile是处理zip文件的模块,其中最重要的类是ZipFile,其构造函数为 ZipFile(file, moder, compressionZIP_STORED, allowZip64True, compresslevelNone,…

使用VGG网络训练发生错误RuntimeError: CUDA out of memory解决方案:

问题在使用VGG网络训练Mnisist数据集时,发生错误RuntimeError: CUDA out of memory. Tried to allocate 392.00 MiB (GPU 0; 2.00 GiB total capacity; 1.45 GiB already allocated; 0 bytes free; 1.47 GiB reserved in total by PyTorch) If reserved memory is &…

发布详解 | Flutter 3.7 稳定版发布

新年伊始,由 Flutter 3.7 正式版来「打头阵」!我们与整个 Flutter 社区成员们继续在 Flutter 3.7 中优化了框架,包括创建自定义菜单栏和层叠式菜单、更好的国际化工具支持、新的调试工具以及其他功能和特性等。新的稳定版里,我们在…