免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
内容参考于:微尘网校
上一个内容:4.Android逆向协议-详解二次打包失败解决方案
从现在开始正式进入协议分析了。
首先客户端与服务端之间是如何通信的?实际上就是客户端向服务端发送一个网络请求(HTTP、UDP、TCP请求),服务端收到请求之后一般会给客户端返回一些数据(服务端给客户端发送一些数据),然后客户端收到这些数据之后一般会解析、处理这些数据,这就是客户端与服务端之间的通信。
最常见的就是浏览器,当输入一个网址,浏览器会显示一些画面(图片、文字、视频),这些画面就是服务端返回的数据。
比如输入 CSDN计算机王然后按搜索按钮,按了搜索按钮就会给服务端发送请求,浏览器都是HTTP、HTTPS请求,然后服务端会根据 CSDN计算机王 这个关键字返回与它相关的数据
返回的相关数据(不打马赛克会被搬),如下图的画面就是服务端返回给客户端数据之后,客户端处理之后的结果
然后协议是什么?协议就是一种规则,客户端与服务端通信,客户端给服务端发送请求,请求中会告诉服务端它想要什么,比如给服务端发送一个1表示要搜索的数据,2表示每天热点新闻的数据,这个1和2这种的数据就是规则的实现,只要都按照这个规则那数据就是正常的。
然后是客户端与服务端的连接,连接实际上是访问服务器的ip地址和端口(它就是一个数字,等后面分析过程中就可以看到了现在没法解释的有画面感),比如 www.baidu.com 这个是百度搜索引擎的网址,但它实际上是访问的百度公司的服务器上的ip和端口
然后网络协议一般指的是osi七层模型,它只是个理论,如下图客户端给服务端发请求 与 服务端给客户端发请求协议的过程,经过这样的过程(规则、协议)客户端与服务端就可以正常的通信了
然后基于osi七层模型实现出了TCP/IP协议,最常用的就是TCP/IP协议,它只用了osi模型中的4个,分别是应用层、传输层、网络层、链路层
应用层实际上的协议实现:
http、ftp、tftp、dns、smtp等,常用的就是http协议
传输层实际上的协议实现:
TCP、UDP
网络层实际上的协议实现:
IP等
链路层实际上的协议实现:它是与网络连接有关
帧中继 (Frame Relay)、点对点、以太网、无线局域网
上方每层具体的实现没有细说,原因对于逆向来说没啥用,只要知道有这种东西就行,就算现在知道是什么了也不会用
然后常用的请求方式,POST、GET
POST:用于客户端提交数据给服务端,它的数据在body中,可传输大数据
GET:用于客户端获取服务端上的数据,它的数据在header中(网址连接里),不能传输大数据
如下图,输入www.baidu.com然后回车,这就属于GET请求,GET、POST后面开始分析协议的时候会经常见到,所以现在不理解也没事,后面分析的时候看看它们具体是什么东西就能懂了
然后是服务器返回数据的状态码,就是说给服务端发送一个请求,这个请求有没有发送成功?状态码就是用来解决这个问题的
创建的状态码
HTTP协议简单说明
http它是应用层,使用tcp协议建立连接,也就是客户端与服务端通过tcp进行连接,连接之后使用http协议 发送请求、接收请求
http分两种:普通协议(http)、安全协议(https)
http通俗讲就是数据(请求)明文传输、https是数据(请求)加密之后传输
下图中ssl、tls知道有这个东西就行,我们用不到,操作系统都实现好了
加密算法,在协议分析非常常见
它有对称加密、非对称加密、哈希算法
对称加密:
有流式、分组两种,加密和解密都是使用同一个秘钥,一般使用分组
它的加密常见的有:DES、AES-GCM、ChaCha2--Poly1305等,常用DES、AES-GCM
非对称加密:
加密使用的秘钥和解密使用的秘钥是不一样的,分别称为公钥、私钥,公钥和算法是公开的,私钥是保密的,它性能低、安全性超强、加密的数据长度有限
它的加密常见的有:RSA、DSA、ECDSA、DH、ECDHE,常用RSA、DSA
对称加密相当于一个门用一把钥匙开门和锁门,非对称加密相当于锁门有锁门的钥匙,开门有开门的钥匙
哈希算法:
将任意长度的信息转换为较短的固定长度的值,通过数据加密后会变小,它的算法不可逆,就是只能加密不能解密
常用算法:MD5、SHA-1、SHA-2、SHA-256,常用的是MD5、SHA-1
数字签名:
数字签名就是在数据的后面再加上一段内容(这个内容是经过哈希后的,这个内容被称为数字签名),这样可以证明信息没有被修改过
在HTTPS协议中它会使用非对称加密算法加密对称加密的秘钥,然后用对称加密算法加密数据,这样的结合使用