通过Wireshark、Charles、Burpsuite等工具分析网络流量的过程,又叫做抓包。
为何需要抓包
测试手机应用(如搜狗号码通、搜狗手机浏览器)的功能时,经常遇到与网络交互的场景,这时候我们往往需要通过分析客户端与服务端的网络交互来分析客户端的功能、定位BUG的原因(是来自客户端还是服务端)、解释不正常的客户端表现等等,而通过一般的测试手段并不能直接的分析手机发出的网络请求(主要是现阶段尚没有运行于Android或iOS的网卡分析工具)。
但是在PC或Mac上我们很容易通过不同软件(如本文介绍的Wireshark)来截获网卡的请求来分析,为此,我们可以通过在PC或者Mac上建立一个Wifi热点,然后用手机连接该热点,来通过分析该发射热点网卡的请求分析手机的请求。
如何建立一个Wifi热点
简单的原理和具体方法(Windows下和mac下抓包)如下:
- 首先要在PC/Mac上利用USB网卡建立无线Wi-Fi热点;
- 安装Wireshark抓包工具;
- 用手机连接对应的Wi-Fi;
- 手机端触发相关网络请求;
- 抓包分析;
在Windows下设置虚拟wifi
前提:
- 运行Windows 7系统的PC已经含有一块可以正常联网的网卡在运行;
- 拥有一块USB无线网卡;
- 以管理员身份运行命令提示符:“开始”——在搜索栏输入“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:开启无线网络
- 继续在命令提示符中运行:netsh wlan start hostednetwork,(当然可以新建一个记事本文件复制:netsh wlan start hostednetwork 然后另存为:启动WIFI热点.bat ,下次开机的时候只需要以“管理员身份运行”就启动了。)
虚拟WiFi的红叉叉消失,WiFi基站已组建好,主机设置完毕。 - 用手机连接该wifi
如果想关闭wifi共享功能也是可以的,不用动电脑的wifi开关这么麻烦,只需要一条命令:netsh wlan stop hostednetwork
(也可以像启动wifi热点那样,建立一个.txt文件,将命令netsh wlan stop hostednetwork复制到文件中,名字改为关闭WIFI热点.bat,以“管理员身份运行”)
在mac上开启wifi热点方法
前提:必须插着网线且能上网;拥有一块USB无线网卡。
步骤1:设置互联网共享
- 点击mac上的右上角的小苹果,选择“系统偏好设置”
- 打开系统偏好设置,后点击“共享”
- 打开共享后,选择互联网共享,右侧共享来源链接选择“以太网”,端口选择“wi-fi”
- 然后勾选上“互联网共享”,同时会弹出提示,选择“启动”
点击完启动,互联网共享被勾选 - 同时可以点击步骤3途中的“编辑”按钮,编辑热点名称,和密码
- 设置成功后,桌面最上方的bar上,wifi图标变为 向上的箭头,这时就可以连接该wifi,使用相应的抓包工具进行抓包了~
- 用手机连接该wifi
步骤2:开启共享无线网络
如何使用Wireshark进行抓包
Wireshark是什么
关于Wireshark的详细介绍可以阅读以下文档:
- 维基百科:http://en.wikipedia.org/wiki/Wireshark
- 官方文档: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来应用。如图
几个常用的简单过滤器规则
- 过滤出所有的HTTP包请求
在filter的输入框中输入“http”(不含引号),然后点击Apply - 过滤出所有包含php关键词的请求
在filter的输入框中输入“http.request.full_uri contains php”(不含引号),然后点击Apply - 过滤出所有含有特定域名的请求
在filter的输入框中输入“http.request.full_uri contains haoma.sogou.com”(不含引号,其中的haoma.sogou.com代指的是特定的域名),然后点击Apply - 过滤出所有的GET方法请求
在filter的输入框中输入“http.request.method==”GET””(不含引号),然后点击Apply