美文网首页程序员
【网络学习笔记】使用Wireshark抓取HTTP报文

【网络学习笔记】使用Wireshark抓取HTTP报文

作者: 抬头看见猫 | 来源:发表于2018-09-06 20:28 被阅读403次

前言

最近在学习计算机网络知识,学习过程中使用抓包工具Wireshark抓取网络数据包,来辅助理解网络协议。

Wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

目录

文章目录

基本使用

下载地址https://www.wireshark.org/

支持系统:Windows、macOS

基本使用 基本使用 主要功能区

主要功能区:

  1. 显示过滤器
  2. 抓获的封包列表
  3. 封包详细信息
  4. 封包16进制数据

抓取HTTP报文

抓取http报文-目录

1.开启捕捉任务

2.浏览器访问http://www.lizhengyang.cn/

3.停止捕捉任务

4.设置显示过滤条件

开启捕捉任务后,封包列表可能会出现很多无用的数据包,设置显示过滤器过滤掉冗余数据。

如下图,在显示过滤器中输入:http and ip.addr == 39.107.127.222 (IP地址替换为目标网站的IP)

按回车键,只剩下两个数据包:请求包、响应包。

设置过滤条件

5.查看HTTP报文

在任意数据包上点击右键:追踪流-->HTTP流

弹出窗口就是完整的HTTP报文,红色字体为HTTP请求报文,蓝色字体为HTTP响应报文

查看HTTP报文

过滤器

如果不设置过滤器,会抓取很多杂乱冗余的数据,以至于很难找到自己需要的部分。使用过滤器可以帮助我们精准找到需要的信息。

过滤器分两种:

  • 捕捉过滤器。只捕捉符合过滤规则的封包,其它数据不会存在封包列表中。在捕捉前设置。
  • 显示过滤器。用来过滤抓取后的结果,可以随意更改过滤规则。

注意:两种过滤器的规则语法是不一样的,不要混淆。

捕捉过滤器

捕捉过滤器的语法与其它使用Lipcap(Linux)或者Winpcap(Windows)库开发的软件一样,比如著名的TCPdump。捕捉过滤器必须在开始捕捉前设置完毕,这一点跟显示过滤器是不同的。

设置捕捉过滤器的步骤是:
- 工具栏 -> 捕捉 -> 选项
- WLAN -> 捕捉过滤器中输入规则
- 点击开始(Start)进行捕捉

设置捕捉过滤器

过滤公式

语法: Protocol Direction Host(s) Value Logical Operations Other expression
例子: tcp dst 10.1.1.1 80 and tcp dst 10.2.2.2 3128

Protocol(协议):

可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp

如果没有特别指明是什么协议,则默认使用所有支持的协议。

Direction(方向):

可能的值: src, dst, src and dst, src or dst

如果没有特别指明来源或目的地,则默认使用 "src or dst" 作为关键字。

例如,host 10.2.2.2src or dst host 10.2.2.2是一样的

Host(s)

可能的值: net, port, host, portrange

如果没有指定此值,则默认使用"host"关键字。

例如,src 10.1.1.1src host 10.1.1.1`相同。

Logical Operations(逻辑运算):

可能的值:not, and, or

否(not)具有最高的优先级。或(or)和与(and)具有相同的优先级,运算时从左至右进行。

例如

  • not tcp port 3128 and tcp port 23(not tcp port 3128) and tcp port23相同。
  • not tcp port 3128 and tcp port 23not (tcp port 3128 and tcp port23)不同。

案例

//显示目的TCP端口为3128的封包。
tcp dst port 3128

//显示来源IP地址为10.1.1.1的封包。
ip src host 10.1.1.1

//显示目的或来源IP地址为10.1.2.3的封包。
host 10.1.2.3

//显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。
src portrange 2000-2500

//显示除了icmp以外的所有封包。(icmp通常被ping工具使用)
not imcp

//显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。
src host 10.7.2.12 and not dst net 10.200.0.0/16

//显示来源IP为10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络10.0.0.0/8内的所有封包。
(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

//显示目的TCP端口为3128的封包。
tcp dst port 3128`

//显示来源IP地址为10.1.1.1的封包。
ip src host 10.1.1.1

//显示目的或来源IP地址为10.1.2.3的封包。
host 10.1.2.3

//显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。
src portrange 2000-2500

//显示除了icmp以外的所有封包。(icmp通常被ping工具使用)
not imcp

//显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。
src host 10.7.2.12 and not dst net 10.200.0.0/16

显示过滤器

刚才抓取HTTP报文使用的就是显示过滤器。

过滤公式

语法: Protocol . String 1 . String 2 Comparisonoperator Value LogicalOperations Otherexpression
例子: http request uri == "/index" xor ip.dst != 10.4.5.6

看到这里有是不是有点蒙,每个符号都认识,但为啥要这样组合呢?

不要怕,这个公式不需要记住,熟悉一下公式的结构即可,因为Wireshark中可已通过表达式工具来动态生成规则。

动态生成过滤规则

点击“表达式”

表达式

弹出“显示过滤器表达式”窗口

滤器表达式窗口

上图圈住的五个模块对应着五个步骤:

第一步:搜索网络协议

第二步:选择协议(Protocol)

可以使用tcp、ip、udp等位于OSI模型第2至7层的协议。点击协议列表,可以选择需要参与过滤的协议。

举例:http.request.uri (http请求中的uri)

其中http为协议,request.uri是协议的子类,通过 .连接。Wireshark的官网提供了对各种 协议以及它们子类的说明

第三步:选择比较运算符(Comparison operators)

英文写法: C语言写法: 含义:
eq == 等于
ne != 不等于
gt > 大于
lt < 小于
ge >= 大于等于
le <= 小于等于
contains contains 包含
matches matches 正则表达式匹配
in in 在指定集中

第四步:选择比较的值

第五步:校验规则是否合法

以上的每一步操作都会在下方输入框自动生成过滤规则,合法的规则显示绿色背景,不合法的规则显示红色背景。

校验完成点击ok,显示过滤器规则设置完成。

多个过滤条件

若需要通过过个条件筛选数据,比如:只显示80端口和8080端口的封包。就要用到逻辑运算符(Logical expressions),把多个条件连接。

英文写法: C语言写法: 含义:
and && 逻辑与
or || 逻辑或
xor ^^ 逻辑异或
not ! 逻辑非

被程序员们熟知的逻辑异或是一种排除性的或。当其被用在过滤器的两个条件之间时,只有当且仅当其中的一个条件满足时,这样的结果才会被显示在屏幕上。
举个例子:

//只有当目的TCP端口为80或者来源于端口1025(但又不能同时满足这两点)时,这样的封包才会被显示。
tcp.dstport 80 xor tcp.dstport 1025

案例

//显示HTTP或UDP议封包
 http || udp

//显示来源或目的IP地址为10.1.1.1的封包
ip.addr == 10.1.1.1

//显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。换句话说,显示的封包将会为:
//来源IP:除了10.1.2.3以外任意;目的IP:任意
//以及
//来源IP:任意;目的IP:除了10.4.5.6以外任意
`ip.src != 10.1.2.3 or ip.dst != 10.4.5.6` 

//显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。换句话说,显示的封包将会为:来源IP:除了10.1.2.3以外任意;同时须满足,目的IP:除了10.4.5.6以外任意 
ip.src != 10.1.2.3 and ip.dst != 10.4.5.6

//显示来源或目的TCP端口号为25的封包
tcp.port == 25

//显示目的TCP端口号为25的封包 
tcp.dstport == 25

//显示包含TCP标志的封包
tcp.flags    

//显示包含TCP SYN标志的封包
tcp.flags.syn == 0x02`

//显示HTPP域名中包含'baidu'的封包
http.host contains "baidu"

结束语

至此,Wireshark的基本功能和使用方法已经介绍完了。如果有错误的地方恳请留言指出。

参考资料

https://wiki.wireshark.org/DisplayFilters

https://wiki.wireshark.org/CaptureFilters

http://openmaniak.com/cn/wireshark.php

相关文章

  • 【网络学习笔记】使用Wireshark抓取HTTP报文

    前言 最近在学习计算机网络知识,学习过程中使用抓包工具Wireshark抓取网络数据包,来辅助理解网络协议。 Wi...

  • Wireshark使用

    Wireshark基本用法 抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中...

  • Mac端WireShark抓移动端包

    参考文档 www.wireshark.org Mac OS X上使用Wireshark抓包 (抓取手机网络)使用w...

  • Wireshark 抓取 tcp 报文

    The display filter to show only SYN packets is: 参考资料 Wire...

  • wireshark抓取https报文

    环境:windows10专业版(64 位)Chrome浏览器版本 77.0.3865.75(正式版本) (64 位...

  • Wireshark使用教程

    抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名,然后开始在此接口...

  • Wireshark学习(一)Wireshark基本用法

    按照国际惯例,从最基本的说起。 抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列...

  • 【渗透神器系列】WireShark

    wireshark是一款网络流量抓取分析神器,也是安全工具使用排行中排名第一的工具。使用wireshark必须要牢...

  • wireshark工具使用

    iOS一般使用charles进行http、https的抓包,如果要抓取tcp包,可以使用wireshark。使用方...

  • 网络资料总结1

    应用层相关 一 HTTP:超文本传输协议 HTTP学习笔记1:HTTP报文 请求报文和响应报文结构请求报文是由请求...

网友评论

    本文标题:【网络学习笔记】使用Wireshark抓取HTTP报文

    本文链接:https://www.haomeiwen.com/subject/chlfgftx.html