我在另外一篇博客里,介绍了一款比Wireshark更轻量、更好用的软件:Charles:
http://blog.csdn.net/lixing333/article/details/42776187
今天闲的没事干,想试着分析iOS应用的网络数据传输方式。以前就曾经想过这么做,但是由于无法得到iPhone的联网数据,一直没成功。今天尝试了一下,没想到居然比较顺利。
我的工具:Mac电脑一台(PC也行),Wireshark抓包工具,iPod Touch一台,网线一根。
步骤:首先配置电脑,让iPhone能够通过电脑联网,这样iPhone就通过电脑传输数据,就能抓到数据了。具体方法:http://www.cnblogs.com/ydhliphonedev/archive/2011/10/27/2226935.html。只要进行第一种方法的1、3两步就可以了,不需要用paros,我用的是Wireshark。用PC的自己配置。推荐使用ApWifi。
配置好之后,打开Wireshark,准备抓包。这里我要分析的是新浪出的《育儿专家问答》应用。
在开始之前,最好将所有可能联网的应用全部关掉,以免数据被淹没。在Wireshark里选择Capture-Interfaces,然后在网卡列表里选择最活跃的,一般是en0,然后选择start。
这时Wireshark里会出现许许多多的数据,如下图,
这时我点击《育儿专家问答》里的一些按钮,使它发送和接收请求。
由上图可以看出,网络连接的数据非常杂乱,这时我们要将不需要的包过滤掉,只留下有用的。
由常识,我们知道一般网络请求和接收的数据包都是http格式的,于是在Filter中输入http,然后点击Apply。 这时再随便点击几下应用里的按钮,让它发出网络请求,可以发现,网络传输包中增加了几条请求:
很明显,这几条黑色的包和它们下面的包,就是应用的请求和服务器的回应了。我们点击其中一条请求,看看它的请求格式:
看到没有?Full Request URI,就是请求的网址。双击它,在浏览器中打开,可以看到是一条json数据,哈哈,初步成功!
下面的工作其实基本上就差不多了,找到各种数据的请求地址,找到它们的规律。下面的细节工作我就不继续做了。如果http数据还是很多,不足以过滤到想要的数据,可以在Filter中增加IP地址过滤:http and ip.dst==202.205.3.**,这样找到的数据就更精准了。至于通信ip到底是什么,就需要仔细发现了。
另外,这里得到的http请求是get请求,所以直接打开就可以了。如果是post请求的话,还需要仔细查看post出去的数据是什么格式的。
总结一下基本方法:让iPhone通过笔记本联网,然后使用Wireshark抓包,通过过滤器过滤抓到的包,找到请求地址,分析请求格式。over!