android抓包踩坑记录
由于需要公司业务需求,需要抓取APP中摄像机插件的网络包,踩了两天坑,这里做个总结吧。
事先准备
-
android-studio
- emulate
- sdk
需要android模拟器和adb调试工具。如果已经有其他模拟器的话,可以只安装adb调试工具即可
-
mitmproxy
一款代理抓包工具,本来是使用charles的,但是不知为何,我的ubuntu机器安装charles之后每个点击操作都要延迟三秒就换mitmproxy了
遇到的坑
网上寻找了大量的教程和视频,将下载代理工具的CA证书安装到Android之后,均无法抓取https的网络包。
之所以这样是因为在Android7.0及以上的系统中,应用只会任性系统预装的CA证书或应用指定的CA证书,而照网上教程安装的CA证书一般情况都会安装成用户证书,因此导致安装的CA证书,对于这些APP无法生效。
抓包原理
原先的网络请求是客户端向服务端发送网络请求,服务端返回的逻辑,如果需要抓取网络包的话,则需要在客户端与服务端中间代理一层,让客户端先给代理服务器发送网络请求,随后代理服务器可以将网络请求数据给记录下来之后再转发给服务器,同理服务端返回的数据也将有代理服务器记录下来,再转发给客户端。
而对于更加安全的https请求,使用这种中间人的方式则会困难许多 ,因为客户端只会信任一些权威机构认证过的CA证书(就是系统证书),因此如果想要抓取https的网络请求包,则需要将代理服务器伪造的CA证书,加入到客户端中(直接使用手机操作安装的证书是安装到用户信任证书中)而在Android7.0以及之后版本,再想抓取APP的https请求则需要将证书加入到系统证书
实操部分
由于安装系统证书需要具备root权限,因此安装使用的镜像不能带play,带play的正式版,正式版是不允许获得root权限的
博主采用的模拟器配置如下
开启mitmproxy代理服务器
进入官网根据自己的系统去下载对应的包
https://mitmproxy.org/
解压出来是如下的三个可执行文件
在当前路径下执行命令:
./mitmweb -p 8888 --set web_port=9000
- 其中-p后面的8888是指代理服务器用来代理客户端的端口,需要客户端连接这个端口
- web_port是指可在这个web服务器端口下查看抓取的数据包信息,数据包列表展示如下
配置客户端代理
客户端需要和代理服务器在同一网络下:
客户端的配置点击网络,WiFi
进入到wifi的高级选项下,设置代理,手动
其中代理主机名就是启动mitmproxy所在机器的ip,代理端口则为先前设置的8888
配置完成之后重连网络,此时应该可以抓取http请求了。
安装系统证书
连接上代理之后,需要使用连接代理的机器去访问,https://mitm.it/
博主这里使用手机去访问这个url,无法下载证书。后来切换至电脑端代理去访问这个url才下载成功的。
这边需要根据自身系统的不同下载不同的证书,此处需要抓android的包,所以下载的Android。
将下载后的文件mitmproxy-ca-cert.cer重命名成它的hash值.0,随后就可以加入到系统证书路径中了
使用如下命令计算出hash值
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer
输出如下:
将文件重命名
mv mitmproxy-ca-cert.cer c8750f0d.0
至此证书已经处理完成,需要将其加入到系统证书路径下,即可抓取https请求。
将CA证书加入至系统证书路径下
首先获取root权限
adb root
对模拟器启用写入权限
# 查看当前模拟器下有多少设备
emulator -avd -list-avds
# 以系统可写的形式启动名为米家的模拟器(执行命令,需要模拟器此时是关闭状态的)
emulator -avd "mijia" -writable-system
模拟器重启完成之后需要adb获取root权限
# 获取root权限
adb root
# 重新挂载
adb remount
# 重启模拟器
adb reboot
# 再次进入root
adb root
adb remount# 将证书上传至system中的系统证书目录下。上述所有操作都是为了让这一步可以写成功
adb push c8750f0d.0 /system/etc/security/cacerts/
随后可以进入到设置中,查看系统证书目录下是否存在刚才上传的CA证书。
至此再操作APP即可抓取到https的网络包,可以在代理服务器的网页端查看。
相关文章:

android抓包踩坑记录
由于需要公司业务需求,需要抓取APP中摄像机插件的网络包,踩了两天坑,这里做个总结吧。 事先准备 android-studio emulatesdk 需要android模拟器和adb调试工具。如果已经有其他模拟器的话,可以只安装adb调试工具即可 mitmproxy…...

Webpack其他插件
安装html打包插件 const path require(path); const HtmlWebpackPlugin require(html-webpack-plugin) module.exports {entry: path.resolve(__dirname,src/login/index.js),output: {path: path.resolve(__dirname, dist),filename: ./login/index.js,clean:true},Plugin:…...
如何正确地写出单例模式
如何正确地写出单例模式 | Jarks Blog 枚举方式: public class SingletonObject {private SingletonObject() {}/*** 枚举类型是线程安全的,并且只会装载一次*/private enum Singleton {INSTANCE;private final SingletonObject instance;Singleton() {…...
常见相机焦段的分类及其应用
相机焦段是指镜头的焦距范围,决定了拍摄时的视角、画面范围和透视效果。不同焦段适合不同的拍摄场景和主题,以下是常见焦段的分类及其应用: 一、焦段的核心概念 焦距:镜头光学中心到成像传感器的距离(单位:…...

Python Matplotlib 库【绘图基础库】全面解析
让AI成为我们的得力助手:《用Cursor玩转AI辅助编程——不写代码也能做软件开发》 一、发展历程 Matplotlib 由 John D. Hunter 于 2003 年创建,灵感来源于 MATLAB 的绘图系统。作为 Python 生态中最早的可视化工具之一,它逐渐成为科学计算领…...

C++ string数据查找、string数据替换、string子串获取
string查找示例见下,代码见下,以及对应运行结果见下: #include<iostream>using namespace std;int main() {// 1string s1 "hellooooworld";cout << s1.find("oooo") << endl;// 2cout << (in…...
入侵检测SNORT系统部署过程记录
原理背景知识: 一、入侵检测系统介绍 1、入侵检测系统 入侵检测(Intrusion Detection) 指通过对计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。 入侵检测系统(IDS) 是从网络和系统中收集…...
使用 Java 反射动态加载和操作类
Java 的反射机制(Reflection)是 Java 语言的一大特色,它允许程序在运行时检查、加载和操作类、方法、字段等元信息。通过 java.lang.Class 和 java.lang.reflect 包,开发者可以动态加载类、创建实例、调用方法,甚至在运行时构造新类。反射是 Java 灵活性的核心,广泛应用于…...

关于甲骨文(oracle cloud)丢失MFA的解决方案
前两年,申请了一个招商的多币种信用卡,然后就从网上撸了一个oracle的免费1h1g的服务器。 用了一段时间,人家要启用MFA验证。 啥叫MFA验证,类似与短信验证吧,就是绑定一个手机,然后下载一个app,每…...
vue3项目中使用CodeMirror组件的详细教程,中文帮助文档,使用手册
简介 这是基于 Vue 3 开发的 CodeMirror 组件。该组件基于 CodeMirror 5 开发,仅支持 Vue 3。 除了支持官方提供的各种语法模式外,还额外添加了日志输出展示模式,开箱即用,但不一定适用于所有场景。 如需完整文档和更多使用案例…...
C++ stl中的list的相关函数用法
文章目录 list的介绍list的使用定义方式 插入和删除迭代器的使用获取元素容器中元素个数和容量的控制其它操作函数 list的使用,首先要包含头文件 #include <list>list的介绍 1.list是一种可以在常数范围内在链表中的任意位置进行插入和删除的序列式容器&…...

【网络编程】七、详解HTTP 搭建HTTP服务器
文章目录 Ⅰ. HTTP协议的由来 -- 万维网Ⅱ. 认识URL1、URL的格式协议方案名登录信息 -- 忽略服务器地址服务器端口号文件路径查询字符串片段标识符 2、URL的编码和解码 Ⅲ. HTTP的报文结构1、请求协议格式2、响应协议格式🎏 写代码的时候,怎么保证请求和…...

[Java实战]Spring Boot 快速配置 HTTPS 并实现 HTTP 自动跳转(八)
[Java实战]Spring Boot 快速配置 HTTPS 并实现 HTTP 自动跳转(八) 引言 在当今网络安全威胁日益严峻的背景下,为 Web 应用启用 HTTPS 已成为基本要求。Spring Boot 提供了简单高效的方式集成 HTTPS 支持,无论是开发环境测试还是生产环境部署࿰…...
Spring Boot 中的重试机制
Retryable 注解简介 Retryable 注解是 Spring Retry 模块提供的,用于自动重试可能会失败的方法。在微服务架构和分布式系统中,服务之间的调用可能会因为网络问题、服务繁忙等原因失败。使用 Retryable 可以提高应用的稳定性和容错能力 1。 使用步骤 &…...
【React中useRef钩子详解】
一、useRef的核心特性 useRef是React提供的Hook,用于在函数组件中创建可变的持久化引用,具有以下核心特性: 持久化存储 返回的ref对象在组件整个生命周期内保持不变,即使组件重新渲染,current属性的值也不会丢失。无触发渲染 修改ref.current的值不会导致组件重新渲染,适…...
golang-ErrGroup用法以及源码解读笔记
介绍 ErrGroup可以并发执行多个goroutine,并可以很方便的处理错误 与sync.WaitGroup相比 错误处理 sync.WaitGroup只负责等待goroutine执行完成,而不处理返回值或者错误errgroup.Group目前虽然不能直接处理函数的返回值或错误。但是当goroutine返回错…...
17.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--loki
在微服务中,日志是非常重要的组成部分。它不仅可以帮助我们排查问题,还可以帮助我们分析系统的性能和使用情况。 一、loki简介 loki是一个开源的日志聚合系统,它可以帮助我们高效地收集、存储和分析日志数据。loki的设计理念是“简单、快速…...

CVPR计算机视觉顶会论文解读:IPC-Dehaze 如何解决真实场景去雾难题
【CVPR 2025】迭代预测-评判编解码网络:突破真实场景去雾的极限 摘要 本文提出了一种名为IPC-Dehaze的创新去雾方法,通过迭代预测-评判框架和码本解码机制,有效解决了现有去雾算法在复杂场景下的性能瓶颈。该方法在多个基准测试中取得了SOT…...

ppy/osu构建 ipad作为osu按键xz笔记2 deepwiki websokect
ipad当x和z键玩osu #无声打osu#没磁轴怎么打osu 下载 .NET (Linux、macOS 和 Windows) | .NET dotnet还行 构建:f5 运行:dotnet run --project osu.Desktop -c Debug deepwiki就是nb uinput是ubuntu的我现在没法调试,放着 import asyn…...
scons user 3.1.2
前言 感谢您抽出时间阅读有关 SCons 的内容。SCons 是一款下一代软件构建工具,或者称为 make 工具,即一种用于构建软件(或其他文件)并在底层输入文件发生更改时使已构建的软件保持最新状态的软件实用程序。 SCons 最显著的特点是…...
大语言模型主流架构解析:从 Transformer 到 GPT、BERT
📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4-turbo模型生成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认其准…...

.NET程序启动就报错,如何截获初期化时的问题json
一:背景 1. 讲故事 前几天训练营里的一位朋友在复习课件的时候,程序一跑就报错,截图如下: 从给出的错误信息看大概是因为json格式无效导致的,在早期的训练营里曾经也有一例这样的报错,最后定位下来是公司…...

nacos:服务注册原理
目录 NaCos服务注册原理1、AbstractAutoServiceRegistration功能和作用onApplicationEvent()方法start()方法 2、NacosAutoServiceRegistration功能和作用NacosAutoServiceRegistration.register()方法AbstractAutoServiceRegistration.register()方法 3、NacosServiceRegistry…...

基于开源AI大模型与S2B2C生态的个人品牌优势挖掘与标签重构研究
摘要:在数字文明时代,个人品牌塑造已从传统经验驱动转向数据智能驱动。本文以开源AI大模型、AI智能名片与S2B2C商城小程序源码为技术载体,提出"社会评价-数据验证-标签重构"的三维分析框架。通过实证研究发现,结合第三方…...
《React Native与Flutter:社交应用中用户行为分析与埋点统计的深度剖析》
React Native与Flutter作为两款备受瞩目的跨平台开发框架,正深刻地影响着应用的构建方式。当聚焦于用户行为分析与埋点统计时,它们各自展现出独特的策略与工具选择,这些差异和共性不仅关乎开发效率,更与社交应用能否精准把握用户需…...

polarctf-web-[简单rce]
考点: (1)RCE(eval函数) (2)执行函数(passthru函数) (3)/顶级(根)目录查看 (4)sort排序查看函数 题目来源:Polarctf-web-[简单rce] 解题: 代码审计 <?php/*PolarD&N CTF*/highlight_file(__FILE__);function no($txt){ # …...

深入理解 Cortex-M3 特殊寄存器
在上一篇文章中分享了 Cortex-M3 内核寄存器组的相关知识,实际上除了内核寄存器组外,CM3 处理器中还存在多个特殊寄存器,它们分别为 程序状态寄存器,中断/异常屏蔽寄存器 和 控制寄存器。 需要注意的是,特殊寄存器未经…...

[Java实战]Spring Boot 3 整合 Ehcache 3(十九)
[Java实战]Spring Boot 3 整合 Ehcache 3(十九) 引言 在微服务和高并发场景下,缓存是提升系统性能的关键技术之一。Ehcache 作为 Java 生态中成熟的内存缓存框架,其 3.x 版本在性能、功能和易用性上均有显著提升。本文将详细介绍…...

建筑物渗水漏水痕迹发霉潮湿分割数据集labelme格式1357张1类别
数据集中有增强图片详情看图片 数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):1357 标注数量(json文件个数):1357 标注类别数:1 标注类别名称:["water&qu…...
Doris和Clickhouse对比
目录 一、Doris和Clickhouse对比1. 底层架构**DorisClickHouse** 2. 运行原理DorisClickHouse 3. 使用场景DorisClickHouse 4. 优缺点对比总结 二、MPP架构和Shared-Nothing 架构对比1. 什么是 MPP 架构?定义特点典型代表 2. 什么是 Shared-Nothing 架构?…...