手机数据抓包以及Wireshark技巧

发表于:2018-3-30 11:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:ParanoiaApe    来源:博客园

  本文主要讨论一种非常方便的抓取Android和iphone手机网络数据包的办法,以及介绍wireshark最常用的技巧
  抓包工具介绍
  (1).网页抓包工具
  · Chrome浏览器插件
  · FireBug 插件
  · HttpWatch
  · Fiddler
  在浏览器chrome和firefox中可以使用插件抓取网络包,httpwatch会以插件的形式安装在IE和firefox浏览器中,对web请求进行抓包。而Fiddler则是一个独立的程序,其原理是在启动之后开启对127.0.0.1:8888的端口进行监听,并将计算机上的浏览器的代理设置为指向其监听的8888端口,这样当浏览器请求网页的时候,会通过fiddler监听的8888端口,这样fiddler会获取到所有请求的数据和web服务器回复的数据。Fiddler可以自动对IE和非IE浏览器的代理进行设置,打开fiddler之后,点击IE的“工具”— “Internet选项”—“连接”选项卡 – 点开“局域网设置”  在弹出的对话框中你会发现 “代理服务器”设置中的“为LAN使用代理服务器”这个复选框是勾选上的,点击下面的“高级”按钮,可以看到代理服务器已经被设置为127.0.0.1:8888了。
  如下图:
  对非IE浏览器的设置也是自动的,在fiddler的选项中可以看出来
  点击fiddler的菜单“Tools”—“Fiddler Options…” 可以看到如下图:
  点击图中的“Copy BrowserProxy Confiuration URL”得到一个路径,也就是BrowserPAC.js的路径,该文件是fiddler用来设置非IE浏览器的代理的,至于是什么原理,不太清楚,但是根据该js的注释,以及fiddler选项链接的Tools tips提示,可以看出其作用就是设置非IE浏览器的代理的
  这是fiddler软件的智能之处,每当开启fiddler软件之后,他会自动对系统中安装的浏览器进行代理设置,关闭fiddler之后,他也会还原这些浏览器的代理设置。
  从这点上来讲我觉得fiddler比httpwatch更加好用。而浏览器的插件也可以满足大部分的web抓包需求。
  (2).网络抓包工具
  Wireshark
  Sniffer
  这类工具主要原理是通过底层驱动,监视网卡上流过的数据,而这个数据包含网络上所有的数据,包括从链路层一直到最上层应用层的所有数据包。这种抓包工具获取的网络数据包是最全面的,可以抓获除了http协议之外的其他数据包。针对网卡捕获,不需要设置。
  Wireshark手机抓包
  从网络上面搜索到的资料看,要抓取手机中app的网络包有下面几种方式:
  (1).将tcpdump移植到Android平台,然后在命令行下启动tcpdump进行抓包。Tcpdump程序实际上可以看作是wireshark的命令行版本,将该程序移植到Android平台直接抓包,这是一种最直接的抓包方式,然后将抓获的数据包文件,从手机传到windows系统上用wireshark打开进行分析,这种方式貌似不能用于苹果手机。
  (2).使用fiddler,在windows系统上打开fiddler软件,该软件会将我们的电脑变成一个代理,然后在手机上设置wifi网络,将代理指定为开启fiddler的那台电脑,并且端口设置为fiddler侦听的8888端口,这时候使用手机访问的数据,就会通过该代理,在fiddler中就可以看到http的数据包。这种方法我试了半天怎么都看不到数据包,不知道哪里出问题了,根据原理,这种方式支持可以通过代理访问网络的手机。所以从原理上说是支持Android和苹果手机的。
  (3).通过各种方式在pc电脑上建立wifi热点,然后使用wireshark在pc电脑上监视该wifi热点,通过手机连接该热点访问网络。这样wireshark会获取所有流经该热点的数据包这种方式适用于所有能够无线访问的手机,也就是说所有的Android和苹果手机。
  那么如何在pc电脑上建立wifi热点呢,有这么几种办法:
  (1).Win7电脑经过设置,可以将无线网卡设置为wifi热点,这种方法我以前用过,可以成功,但是步骤繁琐,而且不一定能够成功,其他的windows系统估计就没戏了。
  (2).使用软件自动建立wifi热点,不需要自己手工配置,这样的软件有Connectify Hotspot,猎豹免费wifi,360免费wifi软件,这几个软件我都使用过,比较好用,这种方式同样也只能针对有无线网卡的笔记本电脑,原理也是将笔记本电脑上的无线网卡建立热点了,只不过是软件自动的,不需要人工设置,比方法1要方便。
  注意:经过实验发现,手机连接这种方式建立的热点,所发送的数据,用wireshark去抓包,需要捕获电脑上本身联网的那个“网络连接”,例如我的笔记本上面有一个“本地连接”,该连接是使用有线网络的。我用猎豹免费wifi软件建立一个热点之后,我的电脑上多出一个“无线网络连接3”,可以看到该“无线网络连接3”是猎豹生成的,但是我抓包的时候,wireshark需要捕获“本地连接”上的包,也就是我的手机访问的数据实际上还是使用的“本地连接”,通信IP也是“本地连接”上的IP地址,而在手机的wifi连接设置中看到的ip地址,在我抓的包中也搜不到,也就是说手机通过该热点访问网络,实际上还是使用的“本地连接”的IP地址,至于是什么原理,我目前也不太清楚。但是下面要说的随身wifi硬件则与此不同,随身wifi是建立了网卡。
  (3).使用随身wifi硬件。这种也是很方便的方法,而且比较稳定,对笔记本电脑和台式机都可以使用。我之前买了一个360的随身wifi(不是打广告,本人对360公司不感冒,但是他的随身wifi做的确实还可以,同事中有买小米wifi的,不太稳定)。只要在360的官网上下载驱动,直接插上随身wifi就可以使用,我推荐使用这种方法。
  如果你用的是笔记本电脑可以使用方法2,如果是台式机器可以使用方法3。
  下面重点说明,通过随身wifi建立热点,然后使用wireshark抓包的办法,其他方式建立热点抓包的原理一样,只不过是建立热点的方式不同而已,抓包过程没有区别:
  首先插入随身wifi:
  使用手机连接上面的wifi,然后打开“网络和共享中心”,在里面点击我们使用随身wifi建立的网络连接:
  里面可以看到该链接的网卡物理地址,以及ipv6的地址信息,这应该是随身wifi建立的一个网卡,之所以要查看这些信息,是因为我们要确定wireshark抓包的时候抓取那个网卡的信息,一般电脑上有多网卡或者是有虚拟机可能也会生成虚拟网卡。
  打开wireshark,选择菜单“Capture”—“Interface”在弹出的对话框中有一列是IP栏,可以看到除了本机的网络连接以外,好像其他的网络链接这一栏显示的都是IPv6的地址,其中我们可以找到与上面网络连接信息中匹配的IP地址:
  
  还可以点击该条目右边的“Details”按钮,打开详细信息对话框,在“802.3(Ethernet)”选项卡中,可以看到网卡的物理地址,该物理地址与上面的网络连接对话框中显示的物理地址是对应的:
  
  这样可以确定我们需要抓取哪个网卡的数据,确定之后,直接点击该条目的“Start”按钮,使用连上该wifi的手机随便访问网络,就可以抓取所有包了,如果嫌查看网卡信息麻烦,你可以把这几个显示有数据包的网卡都抓包试一下,就应该可以看出来随身wifi对应的是那个网络连接了。
  在手机上查看连接该wifi被分配的IP地址信息:
  
  在wireshark的抓包结果中,通过地址与http协议过滤出该地址172.24.160.3相关的数据包得到如下的结果:
  这些数据是我在小米手机上,通过UC浏览器浏览博格园电脑版网页抓获的所有数据包。
  对于iphone手机的抓包过程没有任何区别。该方法可以抓获所有发送自手机的数据包,包括http与非http的所有数据包。
  个人认为这种方式非常简单方便,抓取的数据包全面,而且通过随身wifi设置热点不需要任何繁琐的配置,仅仅是安装一个驱动而已,实际上随身wifi好像是新建了一个网卡。我们只要用wireshark抓获该随身wifi建立的网卡的数据就可以了。对于从事app开发的园友来说19块钱买一个wifi是非常值得的,这会为你的调试,以及研究别人的协议提供非常大的帮助。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号