如何用wireshark查看网络流量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用wireshark查看网络流量相关的知识,希望对你有一定的参考价值。

公司里的人老是说网速慢之类的,我先看看到底是谁,或者是什么原因导致公司网速慢。
听说wireshark可以抓包,我想问一下如何用这东西查出来到底是什么导致公司的网速慢(比如有人下载,或者看网络视频),或者是那台主机在用什么协议导致网络慢。
请回的人帮忙解答一下。

(1)确定Wireshark的位置。如果没有一个正确的位置,启动Wireshark后会花费很长的时间捕获一些与自己无关的数据。
(2)选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
(3)使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获文件。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。

(4)使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。
(5)使用着色规则。通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用着色规则高亮显示。
(6)构建图表。如果用户想要更明显的看出一个网络中数据的变化情况,使用图表的形式可以很方便的展现数据分布情况。即可查看网络流量。
参考技术A 用wireshark抓包,然后Statistics菜单里选Protocol Hierarchy,看看哪种协议比较多。
抓包是次要的,主要是分析。本回答被提问者采纳
参考技术B 用wireshark抓包,然后Statistics菜单里选Protocol Hierarchy,看看哪种协议比较多。
抓包是次要的,主要是分析。

用Wireshark对Android应用的网络流量进行抓包

通过Wireshark、Charles、Burpsuite等工具分析网络流量的过程,又叫做抓包。

为何需要抓包

测试手机应用(如搜狗号码通、搜狗手机浏览器)的功能时,经常遇到与网络交互的场景,这时候我们往往需要通过分析客户端与服务端的网络交互来分析客户端的功能、定位BUG的原因(是来自客户端还是服务端)、解释不正常的客户端表现等等,而通过一般的测试手段并不能直接的分析手机发出的网络请求(主要是现阶段尚没有运行于Android或iOS的网卡分析工具)。

但是在PC或Mac上我们很容易通过不同软件(如本文介绍的Wireshark)来截获网卡的请求来分析,为此,我们可以通过在PC或者Mac上建立一个Wifi热点,然后用手机连接该热点,来通过分析该发射热点网卡的请求分析手机的请求。

如何建立一个Wifi热点

简单的原理和具体方法(Windows下和mac下抓包)如下:

  1. 首先要在PC/Mac上利用USB网卡建立无线Wi-Fi热点;
  2. 安装Wireshark抓包工具;
  3. 用手机连接对应的Wi-Fi;
  4. 手机端触发相关网络请求;
  5. 抓包分析;

Windows下设置虚拟wifi

前提:

  1. 运行Windows 7系统的PC已经含有一块可以正常联网的网卡在运行;
  2. 拥有一块USB无线网卡;
  3. 以管理员身份运行命令提示符:“开始”——在搜索栏输入“cmd”——右键,以“管理员身份运行”;

步骤1:建立虚拟wifi

启用并设定虚拟WiFi网卡
在启动的CMD中运行命令:

netsh wlan set hostednetwork mode=allow ssid=XXX key=XXXXXXXX keyusage=persistent#(可以不输入keyusage)[敲回车]

注意:上边命令“ssid”后XXX为网络名称即要设定的wifi名称,自己随便命名(最好用英文) “Key”后边XXXXXXXX为你要设定的wifi密码(至少8位)。
此命令有两个参数:
mode:是否启用虚拟WiFi网卡,改为disallow则为禁用。例如:只使用mode=disallow可以直接禁用虚拟Wifi网卡。
如果将 keyUsage 指定为永久,将保存安全密钥并在将来再次启动托管网络时使用。否则只有在当前或下一次启动托管网络时使用此密码。停止托管网络后,将从系统中删除临时安全密钥。如果未指定 keyUsage,默认情况下,它是永久性的。
运行netsh wlan set hostednetwork mode=allow ssid=XXX key=XXXXXXXX 命令之后看到成功的提示。

然后再打开“控制面板”—>“网络和共享中心”—>“更改适配器设置”
看看多出的这一项“Microsoft Virtual WiFi Miniport Adapter”。
(虚拟wifi是自己改的名字,原名叫:无线网络连接2)

 

步骤2:设置Internet连接共享

“网络连接”窗口中,右键单击已连接到Internet的网络连接(切记不一定是本地连接 ,是你上网的那个连接),选择“属性”→“共享”,勾上“允许其他……连接(N)”并选择“虚拟WiFi”。
确定之后,提供共享的网卡图标旁会出现“共享的”字样,表示“宽带连接”已共享至“虚拟WiFi。

步骤3:开启无线网络

  1. 继续在命令提示符中运行:netsh wlan start hostednetwork,(当然可以新建一个记事本文件复制:netsh wlan start hostednetwork 然后另存为:启动WIFI热点.bat ,下次开机的时候只需要以“管理员身份运行”就启动了。)
    虚拟WiFi的红叉叉消失,WiFi基站已组建好,主机设置完毕。
  2. 用手机连接该wifi
    如果想关闭wifi共享功能也是可以的,不用动电脑的wifi开关这么麻烦,只需要一条命令:netsh wlan stop hostednetwork
    (也可以像启动wifi热点那样,建立一个.txt文件,将命令netsh wlan stop hostednetwork复制到文件中,名字改为关闭WIFI热点.bat,以“管理员身份运行”)

mac上开启wifi热点方法

前提:必须插着网线且能上网;拥有一块USB无线网卡。

步骤1:设置互联网共享

  1. 点击mac上的右上角的小苹果,选择“系统偏好设置”
  2. 打开系统偏好设置,后点击“共享”
  3. 打开共享后,选择互联网共享,右侧共享来源链接选择“以太网”,端口选择“wi-fi”
  4. 然后勾选上“互联网共享”,同时会弹出提示,选择“启动”
    点击完启动,互联网共享被勾选
  5. 同时可以点击步骤3途中的“编辑”按钮,编辑热点名称,和密码
  6. 设置成功后,桌面最上方的bar上,wifi图标变为 向上的箭头,这时就可以连接该wifi,使用相应的抓包工具进行抓包了~
  7. 用手机连接该wifi

步骤2:开启共享无线网络

如何使用Wireshark进行抓包

Wireshark是什么

关于Wireshark的详细介绍可以阅读以下文档:

  1. 维基百科:http://en.wikipedia.org/wiki/Wireshark
  2. 官方文档:http://www.wireshark.org/docs/
    一句简单的介绍就是,Wireshark是一个广受好评的开源网络包协议分析工具。
    下载地址 http://www.wireshark.org/download.html,可以针对自己的操作系统类型(Windows,Mac,Linux),操作系统位数(i386,amd64)来选择合适的下载包。下载完成后安装即可。

使用Wireshark进行抓包

在已经建立并开启Wifi热点的前提下,安装完Wireshark后即可启动该软件。

1、 启动Wireshark后,通过依次点击菜单栏的“Capture”-“Interfaces”(或者直接按下Ctrl+I快捷键),弹出如下界面,可以在该界面选择要监控的网卡。

2、 此处默认显示的是各个网卡的IPv6地址,鼠标单击该IPv6地址可切换显示其IPv4地址。单从显示出来Description和IP地址有时候并不能判断哪一块网卡是需要监控的。可以通过以下方法是判断。
i.      通过按下“Windows徽标键”+R,输入cmd来启动DOS命令行;
ii.    输入以下命令,ipconfig /all,来查看系统中各网卡的信息,需要的信息如图中黄色部分显示
iii.   选择建立好的Wifi热点之后,点击Start即可开始抓包。

3、 wireshark抓包主界面
一个具体的抓包监控主界面如下图所示。

4、  选中你所要查看的请求记录,右键选择“Follow TCP Stream”查看具体内容
至此抓包成功。

常用的工具栏工具

常用的工具栏工具有两个,一个是停止抓包,一个是重新开始抓包(“清屏”)。

过滤器

过滤器的作用是从众多的网络请求中过滤出符合我们特定需求请求的工具。

由于Wireshark会记录每一条网络请求,不论是HTTP协议的每一次握手,还是FTP的每一次请求,不论是TCP,还是UDP都会被记录,这样的好处是可以记录每一条记录而不会有“漏网之鱼”,不好的地方在于,在大量的请求中找到我们需要的那一条就不容易了。

因此就有了过滤器工具。

过滤器的使用是:编写过滤器规则——应用过滤器规则。过滤器规则的应用可以通过过滤器栏的Apply来应用。如图

几个常用的简单过滤器规则

    1. 过滤出所有的HTTP包请求
      filter的输入框中输入“http”(不含引号),然后点击Apply
    2. 过滤出所有包含php关键词的请求
      filter的输入框中输入“http.request.full_uri contains php”(不含引号),然后点击Apply
    3. 过滤出所有含有特定域名的请求
      filter的输入框中输入“http.request.full_uri contains haoma.sogou.com”(不含引号,其中的haoma.sogou.com代指的是特定的域名),然后点击Apply
    4. 过滤出所有的GET方法请求
      filter的输入框中输入“http.request.method==”GET””(不含引号),然后点击Apply























以上是关于如何用wireshark查看网络流量的主要内容,如果未能解决你的问题,请参考以下文章

用Wireshark对Android应用的网络流量进行抓包

读<Wireshark数据包分析实战-第3版;之流量分类

Wireshark 如何捕获网络流量数据包

如何捕获所有无线网络流量wireshark和wpa2?

linux如何消耗网络流量?

用啥方法可以查看Java进程使用的内存空间和网络流量大小??