重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
只能抓 http(s) 的包,不能抓自定义协议的包,如果要分析到更底层的包,像TLS handShake 这种就没办法了
创新互联建站是一家专业提供望都企业网站建设,专注与网站设计、网站制作、H5技术、小程序制作等业务。10年已为望都众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
功能相对强大一些,可以针对某个网卡抓到所有的的数据包,类似于 tcpdump, 也可以抓自定义协议的包,可以分析到 TLS handShake 包
iOS 5 之后, iPhone 带了一个 Remote Virtual Interface (RVI) 功能,我们可以通过 RVI 把数据从 iOS 设备上转发到我们 Mac 机器上的一个虚拟网卡
连接手机到电脑上, 获取到设备的 UUID,Xcode-Window- Devices And simulators
在命令行中查看当前已有网络接口
接下来使用 rvictl 创建虚拟网络接口
再次查看网络接口
可以看到虚拟接口已经创建成功。
虚拟网络接口已经创建完毕,接下来使用抓包工具抓到原始包分析
RVI 设置好以后,我们可以在 Mac 上直接利用 tcpdump 查看数据包。
输入完密码后可以,抓包已经可以开始
按下 Ctrl + G 可以结束抓包
tcpdump 很强大,但是可读性不太高,我们尝试用Wireshark 分析原始数据包。
AirPlay 是Apple 私密协议,但也被很多商业破解收费,但每个版本 Apple 都有可能再加密一次,这边有一份 non-official AirPlay 协议,大致描述了 AirPlay 的一个过程, non-official AirPlay protocol , 接下来看一下 iOS 12 上 AirPlay 协议
工具: airServer 可以将 手机通过 AirPlay 投到 mac 上
以下分析过程都采用 wireShark
启动 wireShark
选择抓 rvi0 网络接口数据,点击开始
airplay 非正式版的协议
发送端 :30.40.200.4
接收端:30.40.202.17
我们在 wireShark 上看下具体原始数据包:
30.40.200.4 -- 30.40.202.17
发送端向接收端查询AirPlay 和 RAOP 的信息,拿到数据包原文如下:
接收端回复数据包:
30.40.202.17 -- 30.40.200.4
里面包含了很的信息我们都可以解析。
实现iOS应用底层所有网络请求拦截(如ajax请求拦截),包含http-dns解决方法,有效防止DNS劫持,用于分析http,https请求,禁用/允许代理,防抓包
用到第三方库 ZXRequestBlock
1,安装
通过CocoaPods安装
手动导入
将ZXRequestBlock拖入项目中。
导入头文件
使用方法
拦截全局请求
禁止网络代理抓包(开启后将无法通过网络代理抓包,通过Thor,Charles,Burp等均无法抓取此App的包,且在代理网络下App内部请求不受任何影响)
允许网络代理抓包【默认为允许】
启用HTTPDNS(将会直接从本地或 进行DNS解析,是一种避免DNS劫持的措施)
关闭HTTPDNS【默认为关闭】
禁止所有网络请求
恢复所有网络请求
本地开发项目的时候,我们可以通过谷歌浏览器的debug模式来看request以及response的数据,但是如果我们开发移动端真机项目呢?或者真机线上出现问题如何抓取数据查看接口入参和出参呢?这就需要用到“抓包”
抓包就是通过工具抓取应用的接口数据然后通过分析数据得出问题结论的一种常用的工作方法。下面简述一下在iOS上面安装Charles并且实现抓包的过程,抓取范围包括web/APP内嵌web/小程序原生/小程序内嵌web等
【1】获取PC的IP地址和端口
在Charles菜单栏 - Help - Local IP Address中可以查看PC的IP地址。
一般Charles端口是默认的8888,可以从Charles菜单栏 - Proxy - Proxy Settings查看
【2】配置iPhone代理
设置 - 无线局域网 - 局域网信息(i) - 配置代理 - 手动
在配置iPhone代理完毕后,就可以通过Structure或者Sequence窗口预览HTTP请求的数据了。但由于HTTPS请求被加密过,预览请求时只能预览到乱码数据。要预览到HTTPS请求的数据明文,需要PC和iPhone安装证书授权。
【1】PC安装证书
在Charles菜单栏 - Help - SSL Proxying - Install Charles Root Certificate中可以为PC安装证书
这样,就可以使用Charles中抓包iPhone发出的HTTPS请求并预览明文数据了。
【3】 启动抓包SSL权限
在Charles菜单栏 - Proxy - SSL Proxying Settings中勾选Enable SSL Proxying,然后在Locations中添加需要抓包的Host和Port即可。或者直接写*端口写443图示如下:
可以抓取对应添加的域名的Https的接口的数据
app开发中会遇到接口抓包的需求,可以使用三方抓包工具charles、mitmproxy 进行抓包。
抓包前,请做一下设置。
mitmproxy
4.安装证书,手机浏览区访问 mitm.it
我先择apple 安装,安装完成后需要信任证书。通用-关于本机-证书信任设置 信任mimtproxy证书。
charles
实现iOS应用底层所有网络请求拦截(如ajax请求拦截),包含http-dns解决方法,有效防止DNS劫持,用于分析http,https请求,禁用/允许代理,防抓包
用到第三方库 ZXRequestBlock
1,安装
通过CocoaPods安装
pod 'ZXRequestBlock'
手动导入
将ZXRequestBlock拖入项目中。
导入头文件
使用方法
拦截全局请求
[ZXRequestBlock handleRequest:^NSURLRequest *(NSURLRequest *request) {
//拦截回调在异步线程
NSLog(@"拦截到请求-%@",request);
dispatch_async(dispatch_get_main_queue(), ^{
self.blockTv.text = [self.blockTv.text stringByAppendingString:[NSString stringWithFormat:@"拦截到请求--%@\n",request]];
});
//在这里可以将request赋值给可变的NSURLRequest,进行一些修改(例如根据request的url过滤单独对一些请求的请求体进行修改等)然后再return,达到修改request的目的。
return request;
}];
禁止网络代理抓包(开启后将无法通过网络代理抓包,通过Thor,Charles,Burp等均无法抓取此App的包,且在代理网络下App内部请求不受任何影响)
[ZXRequestBlock disableHttpProxy];
允许网络代理抓包【默认为允许】
[ZXRequestBlock enableHttpProxy];
启用HTTPDNS(将会直接从本地或 进行DNS解析,是一种避免DNS劫持的措施)
[ZXRequestBlock enableHttpDns];
关闭HTTPDNS【默认为关闭】
[ZXRequestBlock disableHttpDns];
禁止所有网络请求
[ZXRequestBlock cancelAllRequest];
恢复所有网络请求
[ZXRequestBlock resumeAllRequest];
iOS是由苹果公司开发的移动操作系统。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等产品上。下面是我收集整理的ios开发用Charles进行抓包的方法,欢迎阅读。
ios开发用Charles进行抓包的方法
首先,我们可以去一些网站下载安装一下这个软件。安装完毕后, 我们能看到这个漂亮的青花瓷。
现在,我们需要将我们的电脑配置成手机的.代理服务器,这样才能让我们的 MAC 顺利的拦截到手机软件的网络接口。我们先看一下自己的电脑ip。
在系统偏好设置 -- 网络 -- 查看当前 IP。
然后我们来配置一下手机网络设置,前提是你要确保你的手机和你的电脑在同一个局域网中。打开手机无线网的配置。就是点击这个图标。
接着,我们就看到配置页面啦,找到到代理这个栏目,选择“手动”,在服务器一项,填写刚才查看的电脑的ip,这里就是10.930.93.115,端口添加8888,然后返回就行了。
接着,我们在电脑上打开 Charles。然后配置一下,主要是配置端口,按照图示点击。
然后,在弹出框中找到端口,输入8888,和你手机输入的端口号保持一致。
到这里,配置就完成了。现在你可以打开你的手机进行上网,这是会看到Charles 在刷刷的显示数据,并在右侧面板中以黄色字体显示出来。