11.2 App 抓包分析
说完PC客户端的抓包分析,接下来进入移动端App进行分析。App抓包分析以Android App为例,iOS的抓包分析大家可以自行探索,原理都是一样的。对Android应用进行抓包分析,使用的策略是在电脑上安装一个Android模拟器,将应用安装到模拟器中,这个时候Wireshark的作用就体现了。下面对Wireshark的功能进行简要介绍。
11.2.1 Wireshark简介
Wireshark是世界上最流行的网络分析工具,这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。官方下载网址为https://www.wireshark.org/download.html 。安装完成后,启动Wireshark,可以看到图11-8的界面。
图11-8 Wireshark启动界面
启动完Wireshark后,接下来讲解一下Wireshark的基本功能和操作。Wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。点击/Caputre→Interfaces../,出现如图11-9所示的对话框,选择正确的网卡。然后点击Start按钮,开始抓包。
图11-9 选择网卡
抓包开始后,效果如图11-10所示,下面介绍一下Wireshark窗口面板和功能。
Wireshark面板主要分为以下几个部分:
图11-10 Wireshark窗口面板
·1号框:Display Filter(显示过滤器),用于过滤数据,这个非常有用。
·2号框:Packet List Pane(封包列表),显示捕获到的封包,有源地址和目标地址、端口号。
·3号框:Packet Details Pane(封包详细信息),用于显示封包中的字段,可以查看封包的详细信息。
·4号框:Dissector Pane(16进制数据),使用16进制显示数据包的内容。
其实使用Wireshark抓包分析协议相对简单,但是作为初学者,使用Wireshark时最常见的问题,是当你使用默认设置时,会得到大量冗余信息,以至于很难找到自己需要的部分。这就是为什么过滤器会如此重要。它们可以帮助我们在庞杂的结果中迅速找到我们需要的信息。Wireshark主要支持两种过滤器:
·捕捉过滤器:用于决定将什么样的信息记录在捕捉结果中,需要在开始捕捉前设置。
·显示过滤器:在捕捉结果中进行详细查找,可以在得到捕捉结果后随意过滤。
·这两种过滤器我们该使用哪一种呢?一般采取的措施是两种结合起来使用,两种过滤器的目的是不同的。
·捕捉过滤器是数据经过的第一层过滤器,它用于控制捕捉数据的数量,以避免产生过大的数据包文件。
·显示过滤器是一种更为强大的过滤器,它允许你在数据包文件中迅速准确地找到所需要的记录。
这两种过滤器的语法完全不同,接下来依次对过滤器的语法进行讲解。
1.捕捉过滤器
捕捉过滤器的语法与其他使用Libpcap(Linux)或者Winpcap(Windows)库开发的软件一样。捕捉过滤器必须在开始捕捉前设置完毕。设置捕捉过滤器的主要分为三步:
1)在Wireshark的菜单栏中选择Capture->Options。
2)将过滤表达式填写到Capture filter输入框或者点击Capture filter按钮为过滤器表达式命名,以便下次使用。
3)点击Start进行捕捉。
如图11-11所示,用于将目的或来源IP地址为10.1.2.3的封包进行捕获显示。
图11-11 设置捕捉过滤器
捕捉过滤器的语法如下:
Protocol Direction Host(s) Value Logical Operations Other expression
一个过滤表达式可以包括Protocol、Direction、Host(s)、Value、Logical Operations和Other expression等6个部分,中间以空格相连。
·Protocol代表着协议,可能的值:ether、fddi、ip、arp、rarp、decnet、lat、sca、moprc、mopdl、tcp and udp。如果没有特别指明是什么协议,则默认使用所有支持的协议。
·Direction代表着数据包方向,可能的值:src、dst、src and dst、src or dst。如果没有特别指明来源或目的地,可以不用添加,Wireshark默认使用“src or dst”作为关键字。
·Host(s)可能的值:net、port、host、portrange。如果没有指定此值,则默认使用host关键字。例如,src 10.11.12.1与src host 10.11.12.1含义相同。
·Logical Operations为逻辑运算符,可能的值:not、and、or。not具有最高的优先级,or和and具有相同的优先级,运算时从左至右进行。如果想改变运算范围,可以使用()进行包裹。例如表达式not tcp port 80and tcp port 21与(not tcp port 80)and tcp port 21含义相同,而not tcp port 80and tcp port 21与not(tcp port 80and tcp port 21)不同。
·Other expression意思是其他表达式,也就是说可以使用逻辑运算符将两个过滤表达式进行连接。
下面使用一个非常完整的例子和上面的语法顺序进行一一对应:
tcp dst 10.11.1.1 80 and tcp dst 10.22.2.2 801
这个表达式的意思就是捕获目的IP为10.11.1.1,端口为80和目的IP为10.22.2.2,端口为801的tcp数据包。
2.显示过滤器
有时候经过捕捉过滤器后,数据包的数量还是很大,这个时候就要用到显示过滤器。它的功能比捕捉过滤器更为强大,可以更加细致地查找,而且修改过滤器条件时,并不需要重新捕捉一次,可以做到即时生效。显示过滤器表达式的位置如图11-12所示,使用线框圈起来,输入表达式之后回车,过滤会立即生效。
图11-12 设置显示过滤器
显示过滤器的语法如下:
Protocol.String 1.String2 Comparison operator Value Logical Operations Other expression
下面对每个字段进行讲解:
Protocol(协议):可以使用大量位于OSI模型第2至7层的协议。如图11-13所示,点击“Expression...”按钮后,可以看到它们的取值。比如:IP、TCP、DNS。
图11-13 显示过滤器支持协议
String1、String2:这两个字段是可选项,这个是对协议子类的表述,可以对协议中的某个字段进行过滤。如图11-14所示,点开相关父类旁的+号,然后选择其子类。这就是为什么String1,String2和Protocol是使用“.”相连接。
图11-14 协议子类
Comparison operators:代表着比较运算符,有两种不同写法,可以取表11-1所示的值。
表11-1 比较运算符
Logical expressions:代表逻辑运算符,同样有两种写法,如表11-2所示。
表11-2 逻辑运算符
由于显示表达式相对比较复杂,下面通过表11-3来展示一些常用的例子帮助大家学习。
表11-3 常用例子
如果过滤器的语法是正确的,显示过滤器框的背景呈绿色。如果呈红色,说明表达式有误。
11.2.2 酷我听书App端API实战分析
讲解完Wireshark的使用,开始对App进行实战分析。首先需要在电脑上装一个Android模拟器。Android模拟器有很多种,比如天天模拟器,Bluestacks模拟器和Windroye模拟器。我使用的是天天模拟器,将酷我听书App安装到模拟器中,如图11-15所示。
下面就以已经安装的酷我听书App为例子,进行API分析。启动Wireshark,并在模拟器中启动酷我听书App,开始抓包。图11-16为启动酷我听书后的界面。
图11-15 安装酷我听书
图11-16 酷我听书的界面
这时候已经抓获了很多数据包,在显示过滤器中填入:http.host contains“kuwo.cn”,将域名中包含kuwo.cn的请求过滤出来,如图11-17所示。
大家可以从封包信息框中查看封包中的详细信息,包括请求的链接、参数和相应信息。请注意Response inframe:621这句话,这部分是请求响应的位置,右键点击链接,选择show Packet Reference in New Window,就可以查看相应数据包的信息,如图11-18所示。
图11-17 过滤kuwo.cn的请求
图11-18 查看响应请求
通过查看响应内容,发现酷我听书使用JSON进行传输,爬虫解析器的编写方式基本可以确定。通过以上方法就可以找到自己所需的API接口。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论