Python 逆向抓取 APP 数据

今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固,所以除了抓包之外,还需要对 APP 进行查壳脱壳反编译等操作。

接下来由「小帅b的朋友:Houser」 给大家演示一下,如何逆向抓取 APP 数据,给你参考一下思路:

所需设备和环境:
设备:安卓手机
抓包:
fiddler+xposed+JustTrustme
查壳:ApkScan-PKID
脱壳:frida-DEXDump
反编译:jadx-gui
hook:frida
抓包
手机安装app,设置好代理,打开 fiddler 先来抓个包,发现这个 app 做了证书验证,fiddler 开启之后  app提示连接不到服务器:
那就是 app 做了 SSL pinning 证书验证,解决这种问题一般都是安装 xposed 框架,里面有一个 JustTrustme 模块,它的原理就是hook,直接绕过证书验证类,安装方法大家百度吧。
之后再打开app,可以看到成功抓到了包:
先简单分析一下,可以看到请求体中 formdata 是密文,响应内容也是密文,这个请求和响应中有用信息非常少,甚至都不知道在 jadx-gui 里怎么搜索,请求体中 formdata 是以两个等号结尾的,应该是个 base64 编码,其他一概不知。。。
脱壳反编译
那先来反编译,在这之前,通常是先用查壳工具检查一下 app 是否加固,打开 ApkScan-PKID ,把 app 拖入:
可以看到这个 app 使用了 360 加固,真是层层设限啊!!这里使用frida-DEXDump来脱壳,可以到 github 上下载 frida-DEXDump 的源代码,完成之后打开项目所在文件夹,在当前位置打开命令行运行以下命令:
python main.py
等待脱壳完成,可以看到当前项目中生成了一个对应文件夹,里面有很多dex文件:
下面用 jadx-gui 打开 dex 文件,一般先从最大的文件开始依次搜索关键字,我们知道 java 中使用 base64 是有 BASE64Encoder 关键字的,因为抓包得到的信息非常少,在这里就只能搜索这个关键字了,搜到第四个dex中,得到了疑似加密处:
可以看到是使用了一个 aes 加密,密钥是固定的字符串。
Frida Hook
Java不太熟,分析不来,直接使用 frida 来写一段 hook 代码看一看 encrypt 函数入参和出参的内容:
同时来抓包对比:
就得到了这里的请求 data 入参数据:
pageIndex:当前页码
pageSize:当前页对应的数据条数
typeId 和 source 是固定的, 接下来再来 hook decrypt 函数,对比抓包和 hook 结果:
结果是一样的,至此,我们逆向分析就完成了。
总结一下请求和响应过程,就是请求体中的 data 经过 encrypt 函数加密传参,改变 pageIndex 就可以得到每页数据,响应是经过 decrypt 函数加密显示,那我们只需要在 python 中实现这个 aes 加密解密过程就行了,从反编译的 java 代码中可以看出密钥是固定的:wxtdefgabcdawn12,没有 iv 偏移。

请求

直接上代码:
运行代码,成功拿到数据:
ok,以上就是逆向 app 爬虫的全部内容,可以看到,现在数据加密已经很普遍了,随便一个很小的 app 都有好几道数据保护机制,这次只涉及到 java 层的加密,下次来讲讲 native 层加密的 hook 方法、frida-rpc 主动调用以及逆向神器 inspeckage 的应用。
最后,以上内容仅供学习交流,小帅b今天的分享希望能给你带来一点帮助,那么我们下回见,peace!

扫一扫

收获更多骚操作

(0)

相关推荐

  • 数据加密就绕过去嘛,Python采集喜马拉雅音频!

    数据加密就绕过去嘛,Python采集喜马拉雅音频!

  • 关于数据抓取很多新人的误区

    个人写博客习惯没什么理论偏向于实战 一.为什么我解析数据明明就是这个位置为什么拿不到 博问:https://q.cnblogs.com/q/132792/ 错误寻找内容方法: 在Element中定位寻 ...

  • 电脑常识Android逆向分析实例(四)-米读极速版日志植入

    准备: 1. 配置Fiddler抓包环境 2. 下载米读极速版(密码:d0r2) 3. Android手机/模拟器与电脑连同一个网络 1. Fiddler配置 首先去官网下载最新版的Fiddler: ...

  • Python爬虫入门,快速抓取大规模数据(第二部分)

    通过第一部分的练习,我们已经有了一个可运行的爬虫.这一部分我们详细的看看如何使用BeautifulSoup从网页中提取我们需要的数据,学习的目标是能够使用BeautifulSoup从网页中提取任意的数 ...

  • Python爬虫入门,快速抓取大规模数据

    大到各类搜索引擎,小到日常数据采集,都离不开网络爬虫.爬虫的基本原理很简单,遍历网络中网页,抓取感兴趣的数据内容.这篇文章会从零开始介绍如何编写一个网络爬虫抓取数据,然后会一步步逐渐完善爬虫的抓取功能 ...

  • Python爬虫入门,快速抓取大规模数据(第四部分)

    如果没有读过前两部份的读者,建议先看前面几部份: 当前大部分网站都使用JS动态的加载内容,浏览器执行JS并生成网页内容.因为Python的requests库不会像浏览器一样执行JS,所以抓取到的内容并 ...

  • 利用python抓取页面数据

    利用python抓取页面数据

  • 怎么用Python写爬虫抓取网页数据

    机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...

  • 如何让Python爬虫一天抓取100万张网页,爬虫抓取网页数据

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 王平 源自:猿人学Python PS:如有需要Python学习资料的 ...

  • Python爬虫抓取动态加载数据

    本节讲解如何抓取豆瓣电影"分类排行榜"中的电影数据(https://movie.douban.com/chart),比如输入"犯罪"则会输出所有犯罪影片的电影名 ...

  • Selenium2+python自动化58-读取Excel数据(xlrd)

    前言 当登录的账号有多个的时候,我们一般用excel存放测试数据,本节课介绍,python读取excel方法,并保存为字典格式. 一.环境准备 1.先安装xlrd模块,打开cmd,输入pip inst ...

  • 如何零编程抓取网页数据

    市面上有很多的爬虫软件,如今有很多的爬虫软件,在我尝试之后,我觉得八爪鱼采集器是比较简单的对于我来说, 我给大家操作下 1.首先下载安装 2.安装好后,打开软件,新建任务(填写任务名称 然后下一步) ...