抓取数据包
【一】抓包工具选择
Wireshark:Wireshark
- 是一个开源的网络抓包工具
- 可以在多个平台上运行
- 支持多种协议的抓取和分析。
Fiddler:Fiddler
- 是一个跨平台的抓包工具
- 可以用于捕获和分析 HTTP 和 HTTPS 流量
- 它提供了强大的调试和排查功能。
Charles Proxy:Charles Proxy
- 是一款跨平台的代理服务器工具
- 可以捕获并分析 HTTP 和 HTTPS 流量
- 它具有图形化界面和丰富的功能,适用于移动设备和桌面应用程序的抓包。
Tcpdump:Tcpdump
- 是一个命令行抓包工具
- 适用于 Linux 和 Unix 系统
- 它可以捕获和分析网络流量,并提供灵活的过滤和输出选项
【二】charles
安装和配置
【1】mac安装配置
1 下载软件:Charles_4.5.6_xclient.info.dmg
2 双击安装
3 打开软件,输入sn码破解
【2】win安装配置
1 下载软件:charles-proxy-4.5.6-win64.msi
2 一路下一步安装
3 打开软件,输入sn码破解
【3】sn账号
Name: Just For Testing
Serial: 230ADA2020DFBD108E
Name: TEAM MESMERiZE
Serial: FC91D362FB19D6E6CF
Name: MSJ
Serial: 1101CAF6A1989C62AC
为什么使用抓包软件抓手机包
- 1 本来 手机直接发送请求到服务端
- 2 现在咱们在电脑上装了抓包软件,使用电脑作为手机的代理,以后所有请求,都会走电脑,就会被抓包软件抓住,我们就可以分析数据包
【三】使用charles
抓取手机http包
【1】配置步骤
- 【电脑】
- 安装并运行抓包工具
charles
- 安装并运行抓包工具
- 【手机】
- 配置手机系统代理
【2】配置模拟器抓包
- 打开
charles
- 点击:proxy--》proxy Settings---》如下图1
- 打开
charles
- 点击:help--》Local ip address-->查看本机地址--》
- 或执行命令查看:
win:ipconfig
mac:ifconfig
演示为:192.168.1.173
- 打开mumu模拟器---》设置--》wlan---》长按---》配置代理
【3】配置真机抓包
- 打开
charles
- 点击:proxy--》proxy Settings---》
- 打开
charles
- 点击:help--》Local ip address-->查看本机地址--》
- 或执行命令查看:
win:ipconfig
mac:ifconfig
演示为:192.168.1.173
- 打开真机---》设置--》wlan---》长按---》配置代理
【4】案例
- 抓取http包案例(爱学生app)
import requests
data={"code":"","password":"lqz12345","username":"18953675221","uuid":""}
res=requests.post('http://parentsystem.aixuesheng.net/app/v1/patriarchLogin/1',json=data)
print(res.text)
【四】使用 charles
抓取手机https包(手机需要root)
【1】模拟器安装 charles
证书
- 手机或模拟器只能抓取http请求的数据包,https无法抓取。
- 想要抓取,就需要在手机上安装
charles
的证书。
注意:
安卓7 以下设备,安装完证书就可以使用,不用移动证书
安卓7以上设备,安装完证书后,为用户证书,必须把用户证书,移动成系统证书,需要借助于magisk刷move cert模块,需要root权限
-
模拟器安装(模拟器版本低于7,不需要做证书迁移)
- 1 打开
charles
-->help
--->SSLProxying
--->nstallCharles Root Certificate on a Mobile...
- 2 访问网址
chls.pro/ssl
- 3 手机设置完代理,才能访问
- 4 下载安装证书
- 5 就可以抓取http的包了
- 1 打开
【2】真机安装charles
证书
- 1 真机配置好代理后
- 2 浏览器访问:
chls.pro/ssl
- 3 下载后,手机打开:安全--->加密与凭据--->安装证书--->安装完成
- 4 手机打开:安全-->加密与凭据--->信任的凭据
- 此时可以看到用户证书和系统证书
【3】用户证书和系统证书解释
-
在 Android 系统中,有两种类型的证书:
- 用户证书(User Certificates)和系统证书(System Certificates)。
-
用户证书(User Certificates):
- 用户证书是由特定用户生成或颁发的数字证书。
- 这些证书通常用于用户身份验证和安全通信。
- 用户证书可以用于加密和解密数据,数字签名以及建立安全连接。
- 用户证书通常由用户自己创建,例如,用于加密电子邮件、VPN连接或身份验证。
-
系统证书(System Certificates):
- 系统证书是由 Android 系统或设备制造商预装的证书。
- 这些证书通常用于系统级别的安全功能,如应用程序签名验证、SSL/TLS 连接等。
- 系统证书通常用于验证应用程序的真实性和完整性,以确保它们没有被篡改或恶意修改。
- 这些证书由 Android 操作系统或设备制造商管理和维护。
-
系统证书包括以下几种类型:
- 代码签名证书:
- 用于验证应用程序的签名,以确保应用程序的真实性和完整性。
- 安全通信证书:
- 用于建立 SSL/TLS 连接,保护设备和服务器之间的通信安全。
- 根证书:
- 根证书用于验证其他证书的真实性。Android 系统预装了一组根证书,用于验证 SSL/TLS 通信中的服务器证书。
- 代码签名证书:
-
用户证书和系统证书在安全和身份验证方面扮演不同的角色。
- 用户证书由用户自己管理,用于个人身份验证和加密通信。
- 而系统证书由操作系统或设备制造商管理,用于验证应用程序和保护系统级别的通信安全。
【4】把用户证书转成系统证书
1 将move cert压缩包传到手机
- (任意好找的一个目录
/sdcard/Download/
)
adb push /Users/lqz/soft/movecert-1.9-4.zip /sdcard/Download
2 使用面具,刷入
- 按照下图步骤
3 重启手机
4 手机打开:安全--》加密与凭据---》信任的凭据
- -此时可以看到用户级别证书移动到系统级别了
5 此时可以愉快抓https包了
【5】案例:抓取https包(今日南川app)
import requests
data = {
'appId': '32',
'hashSign': '133bcb5e7330257a8823747b492d28b2',
'imgUrl': '',
'lat': '29.568295',
'lng': '106.559123',
'loginName': '18953645221',
'nickName': '',
'openId': '',
'place': '重庆',
'pwd': '827ccb0eea8a706c4c34a16891f84e7b',
'sessionId': '392032c5-09c8-4c3c-bb17-16a1dc49f7fc',
'token': "",
'type': '',
}
headers = {
'appid': '32',
'sessionid': '392032c5-09c8-4c3c-bb17-16a1dc49f7fc',
'token': '',
't': '1686650472124',
'sign': '90b5afeaed045a4c5ac9b13f693c7023',
'cqlivingappclienttype': '1',
'cqlivingappclientversion': '2029',
'content-type': 'application/x-www-form-urlencoded',
'content-length': '249',
'accept-encoding': 'gzip',
'user-agent': 'okhttp/4.10.0',
}
res = requests.post('https://api.cqliving.com/login.html', data=data, verify=False,headers=headers)
print(res.text)