网站做3年3年包括什么软件吗,江门seo网站,河北住房建设厅官方网站,wordpress dux1.3导航目录 HTTP 原理HTTPS 原理TLS 原理网络抓包原理一. 什么是抓包#xff1f;二. 抓包的原理对HTTP请求进行抓包对HTTPS请求进行抓包 三. Android设备抓包问题Android6.0 及以下系统Android7.0 及以上系统方式一#xff1a;方式二 HTTP 原理
HTTP 详解 点击跳转
HTTPS 原理… 导航目录 HTTP 原理HTTPS 原理TLS 原理网络抓包原理一. 什么是抓包二. 抓包的原理对HTTP请求进行抓包对HTTPS请求进行抓包 三. Android设备抓包问题Android6.0 及以下系统Android7.0 及以上系统方式一方式二 HTTP 原理
HTTP 详解 点击跳转
HTTPS 原理
HTTPS 详解 点击跳转 PS 其中包含整个加密套件的工作流程讲解
TLS 原理
网络抓包原理
一. 什么是抓包
在应用的开发调试中查看软件实际运行时HTTP/HTTPS通信的请求数据和返回数据从而分析问题的过程就叫做抓包。 通常我们说的抓包主要是分为两种
使用 Wireshark 抓取传输层的 TCP/UDP 通信包。使用 Fiddler 或 Charles 抓取应用层的 HTTP/HTTPS 通信包。 在大部分场景下我们只是需要抓取应用层的HTTP/HTTPS数据包也就是第二种方式。 二. 抓包的原理
抓包的原理其实很简单例如PC上的Fiddler监听一个端口port: 8888在Android测试机上连接同一个局域网配置网络代理指向该PC的8888端口这样一来测试机的所有网络通信都会被转发到PC的8888端口进而被Fiddler捕获然后就可以对数据包进行分析。经常用的网络协议分为HTTP和HTTPSHTTPS在HTTP上进行了加密操作所以对这两种请求进行抓包也有不同。
对HTTP请求进行抓包
对于HTTP协议因为本身就是明文传输所以可以直接看到数据报文除非对这些明文在传输时进行二次加密但那是另一种情况这里暂不分析。
对HTTPS请求进行抓包
对于双向加密的HTTPS正常情况下即使能以中间人的方式拿到通信报文但是因为没有密钥同样也不能看到具体的传输内容。基于HTTPS加密通信的建立过程和密钥交换方式如果在加密通信建立之前截取服务端发送的包含证书的报文伪装成服务端把自己的证书发给客户端然后拿到客户端返回的包含对称加密通信密钥的报文以服务端自己的公钥加密后发给服务端这样一来双向加密通信建立完成而中间人实际拿到了通信的密钥所以可以查看、修改HTTPS的通信报文这就是典型的Man-in-the-middle attack即MITM中间人攻击。 这样似乎看起来HTTPS也不是那么安全当然不能这么说了实现MITM最关键的一点是中间人要把服务端证书替换成自己的证书发给客户端让客户端相信自己就是服务端那么问题是客户端为什么会信任而进行替换呢 HTTPS之所以安全是因为它用来建立加密通信的证书是由权威的CA机构签发的受信的CA机构的根证书都会被内嵌在Windows, Linux, macOS, Android, iOS这些操作系统里用来验证服务端发来的证书是否是由CA签发的。CA机构当然不可能随便给一个中间人签发不属于它的域名证书那么只有一个很明显的办法了把中间人的根证书导入到客户端的操作系统里以此来完成建立加密通信时对中间人证书的验证。
所以在一定的情况下HTTPS通信是可以被监听的抓包的实现基础是Android测试机导入Fiddler或者Charles的根证书。
无论是fidder和charles都是充当了一个中间人代理的角色来对HTTPS进行抓包:
截获客户端向发起的HTTPS请求佯装客户端向真实的服务器发起请求。截获真实服务器的返回佯装真实服务器向客户端发送数据。获取了用来加密服务器公钥的非对称秘钥和用来加密数据的对称秘钥。
如图
三. Android设备抓包问题
Android6.0 及以下系统
直接安装证书后 可以直接使用FIddler进行抓包。
Android7.0 及以上系统
在Android 7.0及以上的设备上测试时发现又抓不到HTTPS了 原因是Google在Android 7.0时更改了App对操作系统本地证书的信任机制在Android 7.0之前默认信任系统预置证书和用户自导入证书在Android 7.0(API 24)之后为了保障App的通信安全避免被第三方抓包做了些改动App默认只信任系统预置证书而不再信任用户自导入证书(把MITM的ssl证书安装到 受信任的凭据 - 用户)抓出来的https的请求都是加了密的无法看到原文了.解决的方式有如下几种:
方式一 修改App的AndroidManifest网络安全配置信任用户自导入证书。方式二 Root测试机或自编译系统把Fiddler根证书设置为系统预置证书。方式三 在Android 7.0以下的测试机中抓包。方式四 targetSDK版本设置为24以下。
方式一
如果是自己公司开发的应用那么在 Android 工程目录的 res 底下创建一个 xml 文件夹然后在内部创建一个名为 “network_security_config.xml” 的文件。 network-security-configbase-config cleartextTrafficPermittedtruetrust-anchorscertificates srcsystem overridePinstrue /certificates srcuser overridePinstrue //trust-anchors/base-config/network-security-config在 AndroidManifest 里的标签中添加代码:
android:networkSecurityConfigxml/network_security_config这种方式只适用于能自己修改源码的应用。
方式二
root手机Root手机将用户下载的CA协议移动到系统信任的证书目录下。
非root手机可以VirtualXposed插件
VirtualXposed 下载地址JustTrustMe 下载地址
PS 方式三和方式四用的比较少 • 略
借鉴
网络抓包原理及Fiddler的使用