在合天王安实验环境中,通过模拟局域网的两台机器之间的数据传输,来抓取和分析HTTP数据,用到HFS软件

1. 配置HFS软件

在局域网环境中,使用一个小工具来实现HTTP服务器。先在服务器上配置HFS,获取HTTP的GET数据和POST数据

右键以管理员身份运行hfs,打开界面如下:

配置端口8080

在虚拟文件系统区域,右键,选择“从磁盘添加目录”,选择一个真实存在的目录(此处注意务必是真实存在的),弹出的选择目录类型中选择”真实目录”,添加后的目录显示为红色。

右键目录,点击设置”用户名及密码”,在弹出的对话框中输入用户名和密码(demo/demo),点击确定。

在右键目录,点击”属性”,选择”上传”sheet页,选中任何人。点击确定,如下

这样我们就配置好了HFS工具,可以在客户端通过浏览器访问了。

2. 获取HTTP的GET数据和POST数据

下面我们在测试者机器上,打开Wireshark抓包工具,过滤条件输入ip.addr == 10.1.1.33,然后输入服务器中HFS给出的网址,等待服务器响应。成功之后,可以在测试者机器的浏览器上看到页面,如下:

这时候,我们已经获取到了HTTP的GET方法。我们将Wireshark获取的数据包保存为HTTP-Get。

点击页面的登录,在对话框中输入用户名密码(demo/demo),确定之后等待服务器响应。成功如下

点击hfs2_3b287文件后可看到如下界面:

如上图,会在左侧看到按钮,点击”上传”按钮,选择文件,这里我们选择桌面上的“http-post.txt”,点击上传。等待服务器响应。提示上传成功,如下

我们保存抓包文件,名字为HTTP-Post

3.分析HTTP数据包

1. HTTP报文格式

HTTP由请求和响应两部分组成,所以对应的也有两种报文格式。下面分别介绍HTTP请求报文格式和HTTP响应报文格式。

HTTP请求报文格式

以上表格中,第1行为“请求行”,第2、3、4行为“请求头部”,第5行为空行,第6行为“请求正文”。下面分别介绍这4部分:

1.请求行:由3部分组成,分别为:请求方法、URL(见备注1)以及协议版本,之间由空格分隔,请求方法包括GET、POST等。协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1。

2.请求头部包含很多客户端环境以及请求正文的有用信息。请求头部由“关键字:值”对组成,每行一堆,关键字和值之间使用英文“:”分隔。

3.空行,这一行非常重要,必不可少。表示请求头部结束,下面就是请求正文。

4.请求正文:可选部分,比如GET请求就没有请求正文;POST比如以提交表单数据方式为请求正文。

HTTP响应报文格式

以上表格中,第1行为“状态行”,第2、3、4行为“响应头部”,第5行为空行,第6行为“响应正文”。下面分别介绍这4部分:

(1)状态行由由3部分组成,分别为:协议版本,状态码,状态码描述,之间由空格分隔。状态代码为3位数字,200~299的状态码表示成功,300~399的状态码指资源重定向,400~499的状态码指客户端请求出错,500~599的状态码指服务端出错(HTTP/1.1向协议中引入了信息性状态码,范围为100~199)。这里列举几个常见的:

(2)响应头部与请求头部类似,也包含了很多有用的信息。

(3)空行,这一行非常重要,必不可少。表示响应头部结束

(4)响应正文,服务器返回的文档,最常见的为HTML网页。

2. HTTP的头域

在HTTP的请求消息和应答消息中,都包含头域。头域分为4种,其中请求头域和应答头域分别只在请求消息和应答消息中出现,通用头域和实体头域在两种消息中都可以出现,但实体头域只有当消息中包含了实体数据时才会出现。下面分别介绍这4种头域中的域名城和功能。

HTTP请求头域

应答头域只在应答消息中出现,是Web服务器向浏览器提供的一些状态和要求。如下

HTTP 应答头域

通用头域既可以用在请求消息中,也可以用在应答消息。

HTTP通用头域

只有在请求和应答消息中包含实体数据时,才需要实体头域。请求消息中的实体数据是一些由浏览器向web服务器提交的数据,如在浏览器中采用POST方式提交表单时,浏览器就要把表单中的数据封装在请求消息的实体数据部分。应答消息中的实体数据是web服务器发给浏览器的媒体数据,如网页,图片和文档等。实体头域说明了实体数据的一些属性。如下表

HTTP实体头域

4.分析GET方法的HTTP数据包

我们以HTTP-Get数据包为例,分析GET方法的HTTP请求和响应数据包。

4.1.分析HTTP请求包

前三个是TCP的三次握手,第四个数据包则是客户端向服务器发送的HTTP请求包,我们来学习分析下, 

来看下HTTP协议:

Hypertext Transfer Protocol

GET / HTTP/1.1\r\n                    #请求行信息

Expert Info (Chat/Sequence): GET / HTTP/1.1\r\n    #专家信息

GET / HTTP/1.1\r\n

Severity level: Chat

Group: Sequence

Request Method: GET                #请求方法为GET

Request URI: /                       #请求的URI

Request Version: HTTP/1.1       #请求的版本为HTTP/1.1

Host: 10.1.1.33:8080\r\n               #请求的主机

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0\r\n        #浏览器类型

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n  #请求的类型

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\r\n  #请求语言

Accept-Encoding: gzip, deflate\r\n     #请求的编码格式

Connection: keep-alive\r\n                #使用持久连接

\r\n                               #空行

Full request URI: http://10.1.1.33:8080/         #请求的URI为10.1.1.33:8080

HTTP request 1/8

Response in frame: 2770               #应答是第2770帧

Next request in frame: 2775       #下一个请求是第2775帧

以上就是HTTP请求包的相关信息,可以看到客户端使用HTTP/1.1版本向服务器发送了GET请求,请求访问10.1.1.33的服务器。将以上信息填入到报文格式中,如下

GET方法的HTTP请求报文格式

3.2. 分析HTTP响应包

根据请求包的信息,我们已经知道,响应包是第2770帧,下面我们来看下

在HTTP之前,我们看到了下图显示的,TCP重组片段,这些片段共有2270个字节,由于超过了TCP数据包的最大数据分段(MSS),所以将数据在TCP层进行了分段。从下面的信息,可以看到分断后的数据包及包大小,如#2767(247),其中2767表示帧号,大小为247个字节。

下面来看HTTP的具体部分

Hypertext Transfer Protocol

HTTP/1.1 200 OK\r\n          #响应行信息

Expert Info (Chat/Sequence): HTTP/1.1 200 OK\r\n    #专家信息

HTTP/1.1 200 OK\r\n          #HTTP响应信息,响应码为200

Severity level: Chat

Group: Sequence

Request Version: HTTP/1.1     #请求版本

Status Code: 200       #状态码

Response Phrase: OK       #响应短语

Content-Type: text/html\r\n         #响应的内容类型

Content-Length: 2023\r\n     #包的长度

Content length: 2023

Accept-Ranges: bytes\r\n       #服务器支持的请求:字节

Server: HFS 2.3 beta\r\n    #服务器类型

Set-Cookie: HFS_SID=0.248448607278988; path=/; \r\n   #设置Http Cookie

Cache-Control: no-cache, no-store, must-revalidate, max-age=-1\r\n  #缓存控制

Content-Encoding: gzip\r\n   #实体数据的压缩格式

\r\n        #空行

HTTP response 1/8                 #HTTP响应

Time since request: 0.015248000 seconds #响应使用的时间

Request in frame: 2763     #请求的帧号为2763

Next request in frame: 2775   #下一个请求的帧号2775

Next response in frame: 2778  #下一个响应的帧号是2778

Content-encoded entity body (gzip): 2023 bytes -> 4375 bytes  #内容编码(gzip)

Line-based text data: text/html   #基于行的文本数据

根据以上信息,可以知道服务器使用HTTP/1.1 200 OK响应了客户端的请求。将信息填入到报文格式中,如下

GET方法的HTTP响应报文格式

4. 分析POST方法的HTTP数据包

4.1. 分析HTTP请求包

下面我们以HTTP-Post为例,分析POST方法的HTTP请求和响应。打开数据包,输入过滤条件ip.addr ==10.1.1.33,显示出的HTTP中,Info列中还有POST的即可,如下

我们展开分析下

Hypertext Transfer Protocol        #HTTP协议

POST /hfs2_3b287/ HTTP/1.1\r\n       #请求行

Expert Info (Chat/Sequence): POST /hfs2_3b287/ HTTP/1.1\r\n   #专家信息

POST /hfs2_3b287/ HTTP/1.1\r\n

Severity level: Chat

Group: Sequence

Request Method: POST                 #请求方法为POST

Request URI: /hfs2_3b287/                # 请求的URI

Request Version: HTTP/1.1               #请求的版本

Host: 10.1.1.33:8080\r\n                        #使用的主机

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0\r\n         #使用的浏览器类型

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n  #浏览器接受的类型

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\r\n  #希望使用的语言

Accept-Encoding: gzip, deflate\r\n   #可使用的编码格式,这里是gzip和deflate

Referer: http://10.1.1.33:8080/hfs2_3b287/\r\n   #从包含的URL页面发起请求

Cookie: HFS_SID=0.248448607278988\r\n           #Cookie信息

Cookie pair: HFS_SID=0.248448607278988

Authorization: Basic ZGVtbzpkZW1v\r\n  #授权证书信息

Credentials: demo:demo        #登录的用户名密码

Connection: keep-alive\r\n         #使用持久连接

Content-Type:multipart/form-data;boundary=---------------------------54542580413055\r\n     #请求的内容类型

Content-Length: 367\r\n   #包的长度

Content length: 367

\r\n     #空行

Full request URI: http://10.1.1.33:8080/hfs2_3b287/   #请求的URI为http://10.1.1.33:8080/hfs2_3b287/

HTTP request 1/6

Response in frame: 3800   #响应的帧号

Next request in frame: 3802   #下一个请求的帧号

以上就是使用POST方法的HTTP请求包,可以看到请求的连接及登录的用户名密码等。将上面的信息填入到报文格式中,如下

POST方法的HTTP请求报文格式

另外,我们在HTTP的下面,看到了如下的内容

类型的Multipart/form-data是上传文件的一种方式。Multipart/form-data其实就是浏览器用表单上传文件的方式。最常见的情境是:在写邮件时,向邮件后添加附件,附件通常使用表单添加,也就是用multipart/form-data格式上传到服务器。我们实验中向服务器上传了一个文件,所以就是此类型。

再看Wireshark中的使用

首先看wireshark中字段与Multipart/form-data的对应关系: MIME Multipart Media Encapsulation:代表整个Multipart/form-data上传文件中的数据。

Encapsulated multipart part:代表表单中不同部分的数据。

Boundary:用来隔开表单中不同部分的数据。

其次,

1) MIME Multipart Media Encapsulation, Type: multipart/form-data, Boundary: "---------------------------54542580413055"

这行指出这个请求是multipart/form-data格式的,且boundary是“----------54542580413055”这个字符串。

2)关于Boundary:  Boundary:用来隔开表单中不同部分的数据。实际上,每部分数据的开头都是由“--”+boundary开始的(这是MIME标准中讲述的标准内容)。

3)  Encapsulated multipart part:紧跟着boundary的是该部分数据的描述:

Content-Dispostion:form-data;name="Filename"\r\n

每一个part至少一个name和一个content部分。

可以从上面的multipart/form-data中,看到我们上传的文本名字为http-post.txt,内容为“This is demo for HTTP POST”。

4.2. 分析HTTP响应包

根据Wireshark现实的响应包帧数,我们来看下第3800帧。

Hypertext Transfer Protocol     #HTTP协议

HTTP/1.1 200 OK\r\n                 #响应行

Expert Info (Chat/Sequence): HTTP/1.1 200 OK\r\n #专家信息

HTTP/1.1 200 OK\r\n       #响应信息

Severity level: Chat

Group: Sequence

Request Version: HTTP/1.1      #请求版本

Status Code: 200               #状态码

Response Phrase: OK          #响应短语

Content-Type: text/html\r\n         #响应包类似

Content-Length: 570\r\n        #响应包长度

Content length: 570

Accept-Ranges: bytes\r\n        #服务器支持的请求:字节

Server: HFS 2.3 beta\r\n  #web服务器类型

Content-Encoding: gzip\r\n    #实体数据的压缩格式

\r\n     #空行

HTTP response 1/6      #响应

Time since request: 0.008774000 seconds    #响应请求的时间

Request in frame: 3798        #请求的帧号

Next request in frame: 3802           #下一个请求的帧号

Next response in frame: 3804        #下一个响应的帧号

Content-encoded entity body (gzip): 570 bytes -> 866 bytes  #内容编码(gzip)

Line-based text data: text/html #文本内容

以上就是POST方法的HTTP响应包,可以看到服务器向客户端发送了HTTP/1.1 200 OK响应了HTTP请求包。服务器类型为HFS 2.3 beta,将数据填入到报文格式中

POST方法的HTTP响应报文格式

Wireshark数据抓包分析之HTTP协议相关推荐

  1. 实验十四:Wireshark数据抓包分析之ARP协议

    实验十四:Wireshark数据抓包分析之ARP协议 目录 一.实验目的及要求 二.实验原理 1.什么是ARP 2.ARP工作流程 3.ARP缓存表 三.实验环境 四.实验步骤及内容 实验步骤一 1. ...

  2. Wireshark数据抓包分析之域名系统协议

    目录 预备知识 什么是DNS DNS的系统结构 DNS系统解析过程 DNS问题类型 实验目的 实验环境 实验步骤一 实验步骤二 预备知识 什么是DNS DNS是域名系统(Domain Name Sys ...

  3. Wireshark数据抓包分析之UDP协议

    目录 预备知识 1.UDP协议概述 2.什么是UDP协议 3.UDP协议的特点 实验目的 实验环境 实验步骤一 1.配置TCP&UDP测试工具 2.配置服务器端 3.配置客户端 4.获取UDP ...

  4. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark

    Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...

  5. Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述

    Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...

  6. Wireshark数据抓包分析——网络协议篇

    Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...

  7. 【愚公系列】2022年02月 wireshark系列-数据抓包分析之DNS协议

    文章目录 一.题目一 二.题目二 一.题目一 根据实验环境,本实验的步骤如下: 1.测试环境中获取DNS数据包. 2.分析DNS数据包. 任务描述:获取两种类型的DNS数据包 (1)通过浏览器访问域名 ...

  8. 【愚公系列】2023年04月 wireshark系列-数据抓包分析之ARP协议

    文章目录 前言 一.使用Netsh和ARP命令来绑定IP和MAC地址 二.使用Wireshark抓取ARP数据包 前言 ARP协议属于TCP/IP协议族中的底层协议,与常见的应用层协议不同,其了解程度 ...

  9. 【愚公系列】2022年02月 wireshark系列-数据抓包分析之IP协议

    文章目录 一.题目一 二.题目二 一.题目一 任务描述:使用Wireshark抓取IP数据包以及IP分片数据包 1.使用Wireshark抓取IP数据包 启动Wireshark,Filter选择IP协 ...

最新文章

  1. python读取excel数据并饼图_python生成excel表格以及饼图 示例源码
  2. XML在JAVA项目中的作用
  3. 美国进入“非结构化”数据分析新时代
  4. FI功能增强业务说明书
  5. linux——管理系统存储之设备的识别、发现、挂载
  6. 工业级以太网交换机跟普通商用网络交换机有啥区别?
  7. 作业 输出演练 1751
  8. 从0开始架构一个IOS程序 ——04— UITabBarController和自定义TabBar 搭建主页面
  9. GC原理---对象可达判断
  10. 优化的意义,不仅在于业绩的提升
  11. select选择框在谷歌火狐和IE样式的不同
  12. 100阶乘c语言如何实现,求10000的阶乘(c语言代码实现)
  13. ML--HMM(隐马尔可夫模型及python的实现2)
  14. OpenGauss数据库的安装与运行
  15. ZFS的ashift参数解读
  16. ​软考高项论文写作这些雷区,千万要避开
  17. 什么是照度 照度的标准值介绍
  18. 玩转基因组浏览器之初识IGV
  19. 分享一个自用的zsh主题
  20. NOJ ACM-ICPC Scoring

热门文章

  1. Wireshark 抓包理解 FTP 传输过程
  2. 基于WEB的HTML5购物网站、H5电商购物平台网上商城网站毕业设计(2)商城分类
  3. 基于轨迹优化的自动驾驶汽车跟随自行车模型动力学控制(Matlab代码实现)
  4. Block 1:什么是Blocks
  5. onos在公有云应用
  6. pyqt5实现桌面便签及提醒——逐步更新
  7. python opencv车道线检测
  8. mysql 修改表字段裂隙_1、在考生文件夹下,samp1.accdb数据库文件中已建立表对象tStud。试按以下操作要求,完成表的编辑修改:...
  9. 区块链软件:谈溯源问题
  10. pc端android端 倒数日,倒数日电脑版下载-倒数日电脑版下载 v4.5.2--PC6电脑版