手机数据抓包以及wireshark技巧

本文介绍了一种方便的抓取Android和iPhone手机网络数据包的方法,利用Wireshark和随身WiFi建立热点实现全面的数据包捕获。同时分享了Wireshark的常用技巧。

转自:http://www.cnblogs.com/wangqiguo/p/4529250.html


本文主要讨论一种非常方便的抓取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了。

如下图:

1

1

对非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建立的网络连接:

1

1

里面可以看到该链接的网卡物理地址,以及ipv6的地址信息,这应该是随身wifi建立的一个网卡,之所以要查看这些信息,是因为我们要确定wireshark抓包的时候抓取那个网卡的信息,一般电脑上有多网卡或者是有虚拟机可能也会生成虚拟网卡。

打开wireshark,选择菜单“Capture”—“Interface”在弹出的对话框中有一列是IP栏,可以看到除了本机的网络连接以外,好像其他的网络链接这一栏显示的都是IPv6的地址,其中我们可以找到与上面网络连接信息中匹配的IP地址:

1

还可以点击该条目右边的“Details”按钮,打开详细信息对话框,在“802.3(Ethernet)”选项卡中,可以看到网卡的物理地址,该物理地址与上面的网络连接对话框中显示的物理地址是对应的:

1

这样可以确定我们需要抓取哪个网卡的数据,确定之后,直接点击该条目的“Start”按钮,使用连上该wifi的手机随便访问网络,就可以抓取所有包了,如果嫌查看网卡信息麻烦,你可以把这几个显示有数据包的网卡都抓包试一下,就应该可以看出来随身wifi对应的是那个网络连接了。

在手机上查看连接该wifi被分配的IP地址信息:

1

在wireshark的抓包结果中,通过地址与http协议过滤出该地址172.24.160.3相关的数据包得到如下的结果:

1

这些数据是我在小米手机上,通过UC浏览器浏览博格园电脑版网页抓获的所有数据包。

对于iphone手机的抓包过程没有任何区别。该方法可以抓获所有发送自手机的数据包,包括http与非http的所有数据包。

个人认为这种方式非常简单方便,抓取的数据包全面,而且通过随身wifi设置热点不需要任何繁琐的配置,仅仅是安装一个驱动而已,实际上随身wifi好像是新建了一个网卡。我们只要用wireshark抓获该随身wifi建立的网卡的数据就可以了。对于从事app开发的园友来说19块钱买一个wifi是非常值得的,这会为你的调试,以及研究别人的协议提供非常大的帮助。

Wireshark常用技巧

本节主要讲解wireshark使用的一些常用的技巧,其实主要是使用过程中,用的最为频繁的一些包的筛选规则。

Wireshark中有两种过滤器:

(1).捕获过滤器:告诉wireshark我们只需要捕获满足什么条件的包,而不满足条件的包则不需要捕获。由于捕获过滤器是在wireshark在捕获过程中采用的,所以捕获过滤器的过滤条件最多局限在传输层的协议,也就是可以通过ip和端口指定规则,而更加上层的应用层协议则不能用在捕获过滤器中。

语法: Protocol Direction Host(s) Value LogicalOperations Other expression

例子: tcp dst 10.1.1.1 80 or tcp dst 10.2.2.2 3128

解释:Protocol表示协议,Direction表示方向,Host指定IP地址,Value一般指定端口,可以使用逻辑操作连接其他的表达式来生成复合表达式。例如:

tcp dst port 8888

捕获目的tcp端口为8888的包

ip src host 10.1.1.1

捕获来源地址为10.1.1.1的包

host 10.1.1.1

捕获目的或者来源地址为10.1.1.1的包

not icmp

捕获除了icmp包的所有包

有关更多的捕获过滤器请参考wireshark的文档

(2).显示过滤器:该过滤器是在已经抓到的包中筛选出自己想分析的数据包,也就是说该过滤器是在捕获工作已经完成之后做的,其数据基础就是已经捕获到的那些数据包,该过滤器支持的协议就是wireshark能够识别的所有协议,由于是在已经捕获下来的包中进行筛选,所以该过滤器中的条件表达式可以支持所有的上层协议,其筛选条件也可以根据每个协议的不同部分进行筛选。下面以HTTP协议为例子:

3

查看所有http请求的数据包(包括GET,POST等等的请求,只要是web请求都算)

4

所有POST请求的数据包

5

所有请求的URL中包含字符串”.jpg”的包

6

所有http响应状态码为200的包

7

可以看到HTTP协议有很多字段提供筛选,wireshark还支持matches操作符,进行正则筛选

1

查找所有http请求URL中包含 /mvc/字符串并且请求的是带参数的aspx页面的包

关于各种协议的字段文档可以查阅wireshark的文档,都有详细说明,包括协议的每个字段部分的含义。其实对于做app或者是web开发的来说常见的http筛选字段已经足够用了

此外wireshark除了可以根据协议的每个字段的内容值进行筛选之外,还可以指定数据包中的第几个字节的二进制数据值进行筛选,这种通过包中二进制数据进行筛选的方法一般在socket的私有二进制协议中比较有用,这些协议一般是私有定义的,并且是基于二进制的协议,例如第几个字节表示什么意思,wireshark肯定是不能识别这些包的,那么我们可以自己根据二进制数据进行筛选

1

筛选出ip源或目标地址为172.16.1.126 并且udp端口为50798 并且rtp包的第2个字节的值是0xE0的包,这样的包是rtp数据包一帧结束的包。

当然上面的例子我们是可以通过rtp协议的字段rtp.marker==1为条件来进行筛选的,举上面的例子是为了说明如何根据包中的二进制数据值进行筛选。

Wireshark有非常强大的抓包与过滤功能,本节也仅仅列举了其中最常用的筛选规则,在显示过滤器的规则中wireshark可以根据每一层的协议进行筛选,例如网络层(IP,ARP,ICMP等协议),传输层(TCP,UDP)等协议,应用层(HTTP,RTMP,RTSP等协议),各层协议的字段可以通过逻辑与(&&,and),或(||,or),非(|,not)等运算符连接成复合表达式进行过滤。

更加详细的wireshark的过滤规则可以参考wireshark的官方文档。

对博客园提点建议:上传相册的图片要是能批量上传就好了,每次写篇文章,上传十几二十张图片非常痛苦


源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 在信息技术领域中,开发一个模仿微信客服交流平台的界面是一项普遍的需求,尤其是在构建企业级沟通工具时。这个名为"仿微信客服交流界面(具备聊天信息本地数据库存储功能)"的项目,致力于为用户创造一个类似于微信的互动体验,并且已经完成了聊天信息在本地数据库中的保存功能,以此保障信息的安全性和可恢复性。另外,项目还包含了网络传输的代码,旨在帮助开发者更好地理解和将此功能整合进自己的应用程序中。 现在让我们深入探究聊天界面的构建过程。微信客服交流界面通常由以下几个核心组件构成:用户个人照片、昵称展示、消息展示气泡、时间标记、输入区域以及发送控制键。这些组件需要经过细致的排布,以确保界面既清晰又便于使用。在用户界面设计方面,一般会采用 Material Design 或者 iOS 的 Human Interface Guidelines 来设计符合平台标准的界面。源代码文件 ChatUIDemo 可能包含了这一界面实现的代码,开发者可以通过查看和调整这个文件来个性化自己的聊天界面。 聊天信息在本地数据库中的存储是一项核心功能。在该项目中,或许选用了SQLite作为轻量级数据库,因为它易于集成,支持事务处理,适合存储结构化的数据,例如用户标识符、接收者标识符、消息内容、发送时刻等。通过运用SQL指令,能够执行数据的增加、删除、修改和查询操作,从而确保聊天记录的完整性和一致性。开发者可能需要关注如何将新接收到的消息添加到数据库中,以及如何从数据库中获取历史记录并在界面上进行展示。 在网络传输方面,可能通过HTTP或HTTPS协议来实现,并且使用了诸如AFNetworking(iOS)或O...
内容概要:本文围绕虚拟同步发电机(VSG)接入弱电网的序阻抗建模与稳定性分析开展研究,基于Matlab/Simulink平台搭建详细的仿真模型,系统复现并验证相关理论方法。研究重点包括VSG在弱电网条件下的正负序阻抗特性建模、基于小信号分析的扫频法建模流程、系统阻抗交互特性及潜在的失稳机理分析。通过具体仿真案例,深入探讨了VSG控制参数对系统稳定性的影响,旨在为新能源并网系统的稳定运行提供理论依据与技术支撑。该内容属于电力电子与电力系统稳定性交叉领域的前沿课题,具有重要的学术价值与工程应用前景。; 适合人群:具备电力系统分析、电力电子变换器控制等基础知识,熟悉Matlab/Simulink仿真环境,从事新能源并网、微电网控制、电力系统稳定性研究的研究生、科研人员及工程师;有志于复现高水平期刊论文中阻抗建模与稳定性分析方法的技术开发者。; 使用场景及目标:① 掌握虚拟同步发电机在弱电网中的序阻抗建模理论与实现方法;② 理解并实践基于扫频法的小信号稳定性分析全过程;③ 应用于构网型变流器、虚拟同步机等先进并网技术的稳定性研究与仿真验证。; 阅读建议:建议结合所提供的Simulink仿真模型与技术资料,按照文档结构循序渐进地学习,重点关注建模原理、仿真参数设置与结果分析过程,同时参考链接中的完整资源进行代码调试与深入探究。
内容概要:本文围绕高比例可再生能源电力系统的调峰成本量化与分摊问题,构建了基于Matlab的数学模型与仿真体系。针对可再生能源发电的强波动性和系统调峰压力大的特点,研究通过引入优化建模方法,科学量化调峰过程中的各项成本,并结合博弈论思想设计合理的成本分摊机制,以协调电源侧、电网侧与负荷侧之间的利益关系。模型充分考虑多方主体参与下的互动特性,旨在提升电力系统对可再生能源的消纳能力,同时保障运行的经济性与公平性。配套提供的Matlab代码实现了算法求解与仿真分析,便于读者复现与拓展研究。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力,从事新能源并网、电力市场机制设计、电网调度等方向研究的科研人员或研究生;; 使用场景及目标:①深入理解高比例可再生能源接入背景下电力系统调峰难题的建模思路;②掌握调峰成本量化与多主体利益协调的分摊机制设计方法;③利用Matlab开展双层优化、博弈模型等高级算法的仿真实践,服务于电力市场政策制定或电网运行策略优化;; 阅读建议:建议结合所提供的Matlab代码进行动手实践,重点剖析模型构建的数学逻辑与算法实现细节,同时可参考文中涉及的智能优化算法与博弈理论,进一步深化对复杂电力系统决策问题的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值