本帖最后由 药娘 于 2020-4-15 11:41 编辑
这个小说站的大部分小说都不支持下载txt,想要把自己喜欢的小说保存下来并不容易。
很久以前github上已经有了从网页版爬取小说的爬虫,但是付费章节爬下来是gif图片格式,不方便存储和查看。因此想要从app入手尝试看能找到什么有用的东西
首先的思路是去app的data目录里找,不出意料没有找到明显相关的文件。
通过文件大小判断,以及逐个删除后查看缓存内容是否消失的方法,最终确定了下载的小说保存在/data/data/<package name>/database/sf.green.orm.e.db中
但是用SQLite Editor无法打开,UE查看发现与一般的SQLite数据库文件头完全不同,应该是整个加密了
此外,还找到了一些log文件,其中记录了与服务器之间的请求数据,含有小说的原文。
这意味着可以通过抓包来获得原文,但是一部小说几百章,批量操作起来大概会很麻烦
log中记录的的HTTP请求头是这样的。以及带着自己账号的cookie一并发出
[Asm] 纯文本查看 复制代码 [INFO] - [SF]RealInterceptorChain.proceed#1 --> GET https://***/Chaps/<id>?expand=content%2CneedFireMoney%2CoriginNeedFireMoney%2Ctsukkomi%2Cchatlines&autoOrder=false http/1.1
[INFO] - [SF]RealInterceptorChain.proceed#1 Accept-Charset: UTF-8
[INFO] - [SF]RealInterceptorChain.proceed#1 [b]Authorization: Basic <base64(androiduser:1a#$52-ty69;*Axd@sce)>[/b]
[INFO] - [SF]RealInterceptorChain.proceed#1 Accept: application/vnd.sfacg.api+json;version=1
[INFO] - [SF]RealInterceptorChain.proceed#1 User-Agent: boluobao/4.4.56(android;28)/Google
[INFO] - [SF]RealInterceptorChain.proceed#1 [b]SFSecurity: nonce=<uuid>& timestamp=1586840492017&devicetoken=<uuid>&sign=<md5>[/b]
[INFO] - [SF]RealInterceptorChain.proceed#1 --> END GET
其中Authorization中的base64密文,以及SFSecurity中的device token,在不同的请求中是相同的。从名字可以推断出是设备标识符
nonce应该是一个随机数,然后和其他的参数一起MD5计算出sign作为校验。
于是有以下几条思路:
1、找出数据库密码,直接解密数据库
2、找到authorization、nonce、device token、sign等校验算法,模拟客户端提交数据进行爬取
3、直接抓包。但是这个app全部是https,并且手机端安装免root抓包抓不到(已装好根证书),很可能有HPKP
4、OCR(太没技术含量了……)
安装xposed框架,FDex2以及Xpu01模块。在Xpu01中打开该app显示有爱加密壳,设置hook后脱下两个dex
准备反编译扔进jd-gui里查看,但是在dex2jar的时候报了很多错误,以及代码都是严重混淆过的
找到两处生成Authorization的代码,以及一处生成MD5,但是Authorization的关键部分都没有显示出来
尝试搜索SFSecurity、nonce、sign、devicetoken等关键词,没有有用的东西
数据库加解密部分更是找不到
暂时就折腾到这了,以前没接触过Android开发也不知道哪里出了问题……
|