iOS系统设备网络抓包工具介绍:越狱和不越狱的办法

对终端进行抓包是客户端测试中的一种重要手段。本文主要介绍了ios设备(iphone、ipad和ipodtouch)的几种常用的抓包方法。

 

  一、准备条件

   需要进行抓包的设备必须经过root,俗称越狱,主要利用redsn0w和各种iOSFirmwares进行,如越狱不用更换固件版本,只需使用 redsn0w安装Cydia即可,网上有详细教程,此处省略。安装完毕,在3G或WiFi环境下启动Cydia,确认身份为“开发者”,如下图。

  通过Cydia源,用户可以下载和安装比appstore更高权限的软件,但是在Cydia源中下载程序时,如果ios设备锁频待机就会中断下载。我们可以在“设置-通用-自动锁定”中把时间设置为“永不”来防止待机。此外如果有同学发现在简体中文环境下使用Cydia搜索会闪退,请不要惊慌,参见附录即可解决该问题。

  Root后的设备,如不及时修改密码,容易被他人破坏你的系统,因此作为抓包的准备条件之一,请修改root密码,初始密码为alpine,可通过SSH连接访问或者直接在ios设备上的MobileTerminal上进行密码修改。

  二、抓包方式

  方法1:SSH连接访问ios设备抓包(通过USB)--强烈推荐

  【准备工作】

  ios设备上安装tcpdump

  PC上安装iPhoneTunnel(集成终端工具putty功能,附近中为免安装版本)

  【操作步骤】

  1.用USB线缆连接手机与PC,确保手机连接正确,启动iPhoneTunnel,绿灯表示TunnelStatus正常,此时点击LaunchTerminal按钮即可SSH进入手机,如下图;

  2.Putty出现一个提示窗口,如果你不是经常使用SSH,请直接点击“否”即可,如下图;

  3.接着PuTTY会以root用户身份尝试登录设备,并输入root密码;

  4.使用tcpdump进行抓包(参见附录),如下图。

  【方法点评】

  通过USB方式直接SSH进入设备,无论设备在WiFi还是2G/3G下,都可以进行抓包,而且使用简单,方法无局限性,值得采用。

  方法2:SSH连接访问ios设备抓包(通过WiFi)

  【准备工作】

  ios设备上安装tcpdump(参见附录)

  PC上安装putty(附近中为免安装版本)

  ios设备连接WiFi网络,且与PC处于同一个网络中,如无WiFi网络,可使用PC作为热点虚拟一个WiFi网络供ios设备连接

  【操作步骤】

  1.在ios设备上查看ip地址(设置Wi-Fi中,点击已连接WiFi右侧的小箭头可看到);

  2.点击putty,输入设备的ip地址,并选择连接类型为SSH,点击打开,如下图;

  3.以下操作同方法1的2-4步。

  【方法点评】

  PuTTY是通过WiFi方式SSH进入到手机的,必须知道手机的IP地址,如果手机没有WiFi就不能使用这种方法,因此该方法有一定的局限性。

  方法3:直接在终端上操作进行抓包

  【准备工作】

  ios设备上安装MobileTerminal、tcpdump(参见附录)

  【操作步骤】

  1.点击设备桌面“Teminal”图标;

  2.切换至root用户登录;

  3.使用tcpdump进行抓包(参见附录),如下图。

  【方法点评】

  不受网络条件制约,但由于是在终端上操作抓包,对ios设备来讲,MobileTerminal切至后台就不再工作,因此该抓包方法可行性较低,尽管如此,MobileTerminal对终端测试人员来说依然是一款很实用的工具。

 三、导出及其它

  Pcap文件生成后可通过91手机助手(IOS版)将文件下载至PC,然后通过Wireshark或Ethereal打开文件,分析报文。

 

  四、附录

1.中文环境下Cydia搜索闪退问题解决方法

首先把系统语言改为英文,之后进入Cydia,添加第一中文源(

http://apt.178.com), 添加源的方法如下:进入Cydia,点击Manage,然后点击Source,进入后点击右上角的Edit,再点击左上角的Add,输入源地址,点击添 加,出现警告的话,点仍然添加。等待列表刷新完成即可,返回Cydia后在Manage>第一中文源下查找ios5Cydia中文崩溃解决补丁安装 即可,如下图。再次将系统切换至简体中文后可正常使用Cydia搜索功能。

 

 

  2.OpenSSH安装

   OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数据。安装完毕后,用户才可以使用PC通过远程访问来控制终 端。启动Cydia后点右下角的“搜索”,即可找到OpenSSH。进入安装页面,点击右上角的Install完成安装,如下图。

 

 

  3. MobileTerminal安装

   MobileTerminal是一款在iOS设备上使用的终端管理软件,采用类似于命令行的非图形界接口管理iOS设备的进程,运行并不依赖于 Openssh或者Telnet,是独立运行于系统上的app程序。进入Cydia后在Manage>第一中文源下查找能与系统适配的 MobileTerminal并进行安装,如下图。

 

 

 

  4.tcpdump安装

  通过91手机助手(IOS版)可在终端上安装tcpdump,下载地址:http://apt.saurik.com/debs/如不确定哪一个适用自己手机,可对附件中的tcp安装包进行全部安装。

  如果在安装完毕后执行tcpdump提示libpcap的错误,需安装libpcap,如不确定哪一个适用自己手机,可对附件中的lib安装包进行全部安装。

  5.ios设备上tcpdump的使用

  对于一些ios设备如iphone及ipad,既可以接入WiFi,也可以接入2G/3G,在使用tcpdump命令时请注意网口类型,WiFi接入时网卡为en0,而2G/3G接入时网卡为pdp_ip0,而网卡不指定时默认为pdp_ip0。举例来说,

  WiFi下抓包tcpdump -i en0 -X -s0 -wdata.pcap

  2G/3G下抓包tcpdump -i pdp_ip0 -X -s0 -w data.pcap或tcpdump-X -s0 -w data.pcap

  五、Q&A

  (Ⅰ)如果SSH连接ios设备时提示“ServerUnexpectedly Closed Network Connection”,该怎么办?

  A:可通过重新安装OpenSSH来尝试解决问题。

 

  (Ⅱ)如果在安装了tcp安装包和lib安装包后执行tcpdump仍提示失败,该怎么办?

  A:有可能是缺少libcrypto.0.9.8.dylib文件造成,可从其它ios设备usr/lib路径下copy至本机再进行尝试。

  在进行iOS开发过程中,经常会遇到各种各样的网络访问问题,以前苦于没有抓包工具,很多网络问题解决起来很痛苦。现在终于好了,本文提供两种方式进行网络抓包:

 

  1. 网络共享 + 可视化抓包工具

  基本原理

  原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在MAC系统上也可以使用Paros工具)。

  现在以MAC系统下Paros工具为例,详细描述下抓包过程:

  操作步骤:

  1) 首先将MAC电脑的以太网共享给airport,使iOS设备能够通过wifi连接

  打开系统偏好设置,找到共享,选择internet共享,在右侧“通过以下方式将”选择以太网,“连接共享给其他电脑”选择airPort。

  2) 打开paros ,设置paros的本地代理paros下载地址(http://www.parosproxy.org/)

   在paros的tools-》options中选择local proxy,在Address 中输入AirPort的ip地址。输入端口8080。打开系统偏好设置,找到网络,选择左侧的AirPort,可以看到AirPort的地址为 169.254.69.225,将该地址填入到上面提到的Address栏中。

  3) 使用ios设备连接mac共享出来的网络:在iOS设备中,选择设置-》通用-》网络-》wifi,找到共享的网络,加入。然后在该网络的纤细内容中的http代理部分,选择手动,输入paros中设置的代理ip和端口。

  4) 下面就可以使用paros来监控iOS设备的网络,我们打开Safiri,在paros中即可察看到网络的所有请求。

 

2. tcpdump命令 + 可视化抓包工具

  基本原理

  tcpdump命令是一个网络的抓包的命令行,他能指定具体的设备,也能制定具体的五元组进行捕获链路上的数据包。它可以再终端上打印出来也可以将捕获到得数据写入到一个文件,文件的格式是二进制形式,所以,我在打开该文件的时候才用的工具是UltraEdit。

当然也可以保存成Wireshark能够识别的pcap格式,然后使用Wireshark进行查看。

  操作步骤

  1) 采用ssh登陆iphone手机,使用top命令获取:

  具体步骤如下:

  a) 获取设备IP地址(wifi地址):

  b) 在PC上打开终端,输入ssh root@IP地址:

  输入密码:alpine (root用户的默认密码)

  2) 通过“tcpdump -X -s0 -w /data.pcap”命令将tcp数据包保存到iOS设备的根目录下。

  3) 通过91助手等工具取出pcap文件,在Windows下使用双击使用Wireshark打开查看。

  当然也可以不输出到文件,tcpdump的命令格式和参数说明:

  tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]

  [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]

  [ -T 类型 ] [ -w 文件名 ] [表达式 ]

  选型介绍:

  -a    将网络地址和广播地址转变成名字;

  -d    将匹配信息包的代码以人们能够理解的汇编格式给出;

  -dd   将匹配信息包的代码以c语言程序段的格式给出;

  -ddd   将匹配信息包的代码以十进制的形式给出;

  -e    将捕获的包数显示出来

  -f    将外部的Internet地址以数字的形式打印出来;

  -l    使标准输出变为缓冲行形式;

  -n    不把网络地址转换成名字;

  -t    在输出的每一行不打印时间戳;

  -v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

  -vv   输出详细的报文信息;

  -c    在收到指定的包的数目后,tcpdump就会停止;

  -F    从指定的文件中读取表达式,忽略其它的表达式;

  -i    指定监听的网络接口;

  -r    从指定的文件中读取包(这些包一般通过-w选项产生);

  -w   直接将包写入文件中,并不分析和打印出来;

  -T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

  在使用该命令的时候,我主要使用的主要选项是: -i [接口名] -w [文件名] -v -vv -c -X -e

  例如:

  我在从eth0捕获100个数据包的时候,并将数据写入到capture.cap文件中,命令格式为:

  tcpdump -i eth0 -w capture.cap -v -vv -c 100 -X -e

  抓取一个一个ip段之间的数据包:

  tcpdump –s 0 –w socket host 10.1.3.9 and host 10.1.3.84

  如果从eth0且通信协议端口为22,目标IP为192.168.1.100获取数据:

  tcpdump -i eth0 port 22 and src host 192.168.1.100

  此外还有其他的一些关键词:host,(主机) , net( 网关), port(端口) , src(源IP) , dst(目的IP), 正则表达式:and , or。

  未越狱ios设备的抓包方法

  2014-04-24 22:33 181人阅读 评论(0) 收藏 举报

  Remote Virtual Interface

  在iOS 5以后增加了RVI(Remote Virtual Interface),它让我们使用OS X来抓取ios device上数据包。

  基本的方法就是把设备通过USB连上mac上。然后为这台设备安装RVI,这个虚拟的在Mac上的网卡,就代表这台ios设备的使用网卡。然后在mac上跑抓包的工具,定位到这个虚拟的网卡上,来抓包。

  (1)安装RVI,需要使用rvictl工具,以下步骤在mac的终端中操作:

  $ # First get the current list of interfaces.

  $ ifconfig -l

  lo0 gif0 stf0 en0 en1 p2p0 fw0 ppp0 utun0

  $ # Then run the tool with the UDID of the device.

  $ rvictl -s 74bd53c647548234ddcef0ee3abee616005051ed

  Starting device 74bd53c647548234ddcef0ee3abee616005051ed [SUCCEEDED]

  $ # Get the list of interfaces again, and you can see the new virtual

  $ # network interface, rvi0, added by the previous command.

  $ ifconfig -l

  lo0 gif0 stf0 en0 en1 p2p0 fw0 ppp0 utun0 rvi0

  (2)安装成功后,此时其实可以用任何抓包工具来抓取。包括wireshark等。因为这时就会看到一个rvi0的网卡。不过今天我们介绍的是通过tcpdump来搞。

  在终端中输入如下命令:

  sudo tcpdump -i rvi0 -n -s 0 -w dump.pcap tcp

  解释一下上面重要参数的含义:

  -i rvi0 选择需要抓取的接口为rvi0(远程虚拟接口)

  -s 0 抓取全部数据包

  -w dump.pcap 设置保存的文件名称

cp 只抓取tcp包

  当tcpdump运行之后,你可以在iOS设备上开始浏览你想抓取的App,期间产生的数据包均会保存到dump.pcap文件中,当想结束抓取时直接终止tcpdump即可。然后在mac中找到dump.pcap文件。用wireshark打开就ok。

  (3)去掉RVI这个虚拟网卡,使用下面的命令:

  $ rvictl -x 74bd53c647548234ddcef0ee3abee616005051ed

  Stopping device 74bd53c647548234ddcef0ee3abee616005051ed [SUCCEEDED]

  整个流程就是这样的。自己动手操作一下吧。

posted @ 2015-04-01 18:28  Wp_一帆风顺  阅读(4939)  评论(0编辑  收藏  举报