安卓逆向-豆瓣app签名算法分析与解密(上)

文章目录

  • 1、背景介绍
  • 2、工具准备
  • 3、Fildder抓包
    • 3.1 配置fiddler代理
    • 3.2 配置安卓模拟器的代理
    • 3.3 为安卓模拟器安装证书
  • 4、抓取豆瓣APP的网络请求

1、背景介绍

豆瓣上有很多精品的图片资源,但是豆瓣的网页端写的不咋地,在下发图片链接直接随着html一起下发了,造成了很大的资源浪费,对我们解析数据也带来了不必要的麻烦。
安卓逆向-豆瓣app签名算法分析与解密(上)_第1张图片

好的解决方式是数据通过json下发,豆瓣的移动端app就是通过下发json数据实现的通信,看到下面的图,是我抓包后得到的json数据,是不是更加清晰和好解析呢。

安卓逆向-豆瓣app签名算法分析与解密(上)_第2张图片

但是,豆瓣为了防止api被第三方使用,对api的使用做了校验。本文的目的就是逆向豆瓣app,获取豆瓣的签名算法,让我们可以自由地使用豆瓣API。

2、工具准备

本文中用到的软件和工具如下

项目 描述 链接
豆瓣app 我们逆向的app 各大应用市场
Fiddler 抓包工具 自行搜索
jadx Java反汇编程序 吾爱破解
AndroidStudio 编写app验证 android developer
夜神安卓模拟器 安卓模拟器 官网自行下载

注意,夜神安卓模拟器要用系统版本为5.1的,因为安卓6.0及以上版本的app不再信任我们自行设置的证书,也就没法抓到https请求

3、Fildder抓包

将必要的软件安装完成后,我们就可以使用Fildder抓包了,但是,为了抓到https请求,我们需要为夜深安卓模拟器安装证书。

3.1 配置fiddler代理

打开Fiddler的option 选项后,在HTTPS选项中选上解密https的选项

安卓逆向-豆瓣app签名算法分析与解密(上)_第3张图片
在connection这里把端口号改成你想要的端口号,这里我设置的8887(随便设置,不超过65535,不与其他程序占用的端口冲突即可)
安卓逆向-豆瓣app签名算法分析与解密(上)_第4张图片

设置完之后,把鼠标移动到右上角的online上面,可以看到我们在局域网的ip(最下面那个ip就是),这样我们得到fildder为我们建立的代理服务器的地址就是:

http://192.168.1.102:8887

到这里,Fiddler的设置就完成了
安卓逆向-豆瓣app签名算法分析与解密(上)_第5张图片

3.2 配置安卓模拟器的代理

打开夜神安卓模拟器,找到设置-WLAN。鼠标长按WiredSSID就会出现下图中的选项

安卓逆向-豆瓣app签名算法分析与解密(上)_第6张图片

我们点击修改网络,选择高级选项,把代理选到手动模式,再把我们刚刚获得的fildder代理服务器地址写入,然后保存。

安卓逆向-豆瓣app签名算法分析与解密(上)_第7张图片

3.3 为安卓模拟器安装证书

我们打开安卓模拟器的浏览器,在地址栏输入我们之前得到的Fiddler的ip地址

http://192.168.1.102:8887/

安卓逆向-豆瓣app签名算法分析与解密(上)_第8张图片
然后点击最下面的蓝色超链接,这样就可以下载Fiddler证书到本地,下载完成后,在系统的状态栏就会有提示信息

安卓逆向-豆瓣app签名算法分析与解密(上)_第9张图片
我们单击打开FiddlerRoot.crt(因为我之前下载了多份,所以浏览器自己给加了个编号)。点击之后,可能会让你设置pin码,你自己设置一个数字密码即可。
之后,会弹出下面窗口,证书名称可以随意填,点击确定之后,证书就安装完成了,就可以抓取app的https请求了。
安卓逆向-豆瓣app签名算法分析与解密(上)_第10张图片

4、抓取豆瓣APP的网络请求

我们在安卓模拟器上打开豆瓣app,搜一下我们想要下载的照片


在Fiddler这里,我们可以看到具体的请求

https://frodo.douban.com/api/v2/elessar/subject/27260217/photos?count=100&os_rom=android&apikey=0dad551ec0f84ed02907ff5c42e8ec70&channel=Yingyongbao_Market&udid=5165b4781e5830a4f29cb0acc89e8553b1e960cd&_sig=MpYKtfAAfO8mabwd5Qa684EvidQ%3D&_ts=1599455970

先过滤掉url中没用的信息,我们可以得到

https://frodo.douban.com/api/v2/elessar/subject/27260217/photos?count=100&apikey=0dad551ec0f84ed02907ff5c42e8ec70&_sig=MpYKtfAAfO8mabwd5Qa684EvidQ%3D&_ts=1599455970

选fildder的webform选项可以看得更清楚一些。里面的apikey是固定的,_sig是加密的验证签名,_ts是以秒为单位的请求时间,和加密有关,count则是请求的图片数量(设置一百也只能请求50个,不过,可以在链接中再加入一个参数start,带start的链接需要你滚动下鼠标,加载图片,然后在fildder里面就能看到了),dfid是追踪用户信息的一个标志,在这里并不需要。
安卓逆向-豆瓣app签名算法分析与解密(上)_第11张图片
上面所说的_sig就是我们需要攻克的签名。

你可能感兴趣的:(安卓,android)