python某漫画app逆向


Posted in Python onMarch 31, 2021

一工具的准备

1.fiddler抓包工具 ,夜神模拟器
2.python环境,Java环境
3.漫画app准备
4.java反编译工具

二项目思路

配置好抓包工具和夜神模拟器
豆瓣夹下载漫画applink.
安装到夜神模拟器
python某漫画app逆向

抓取app数据
python某漫画app逆向

解析抓取的数据:
post请求
变化的参数client-time, client-sign
client-time 比较明显是时间戳
client-sign 是加密数据
python某漫画app逆向

client_type = 'android'
app_devicetoken = "e571dd8bd67803995b9bdcfefb58662b"
phone_mark = "58D83850AA58CCB094954B30F9C4D3C4"
client_time = str(int(time.time() * 1000))

解析app
将apk安装包后缀修改为rar, 解压压缩包得到app对应文件
python某漫画app逆向

python某漫画app逆向
得到Java的classes文件
对获取的classes.dex进行反编译,工具可以自行查找,或者沟通群获取
将classes.dex 移动到解析的文件夹
进入windows powershell cd 到反编译的文件夹
执行命令 .\d2j-dex2jar.bat .\classes.dex
得到 classes-dex2jar.jar 文件 这个就是java的源代码了
python某漫画app逆向
python某漫画app逆向
python某漫画app逆向

python某漫画app逆向
将代码拖动到你的java反编译器 JD-GUI
就能得到全部的java代码python某漫画app逆向
python某漫画app逆向

搜索对应的加密参数:client-sign
确定生成client-sign 为b.class 打开对应文件
找到数据的加密规则
原来加密的方式是md5
加密的数据是由时间戳来决定的
python某漫画app逆向
python某漫画app逆向
python某漫画app逆向

content = '3.0.1' + client_type + str(client_time) + app_devicetoken + phone_mark + "0" + "" + "{54563A97-2BBA-7F31-D4C1-8EF72F4A98E6}"
client_sign = hashlib.md5(content.encode("utf-8")).hexdigest()

确定请求头的全部参数

headers = {
    'client-ver': '3.0.1',
    'client-type': client_type,
    'client-time': str(client_time),
    'phone-mark': phone_mark,
    'app-devicetoken': app_devicetoken,
    'sina-uid': '0',
    'sina-token': '',
    'VREADREFER': 'vmh_client',
    'client-sign': client_sign,
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
    'Content-Length': '223',
    'Host': 'api.manhua.weibo.com',
    'Connection': 'Keep-Alive',
    'Accept-Encoding': 'gzip',
    'User-Agent': 'okhttp/3.8.0',

}

需要传递的参数

data = "client_ver=3.0.1&client_type={}&client_time={}&phone_mark={}&app_devicetoken={}&sina_uid=0&sina_token=&client_sign={}".format(client_type, client_time, phone_mark, app_devicetoken, client_sign)

三简易代码提供参考

内容涉及该app, 只限技术探讨

扣扣群获取编译工具:731685275
import requests
import time
import hashlib
import os


client_type = 'android'
app_devicetoken = "e571dd8bd67803995b9bdcfefb58662b"
phone_mark = "58D83850AA58CCB094954B30F9C4D3C4"
client_time = str(int(time.time() * 1000))
content = '3.0.1' + client_type + str(client_time) + app_devicetoken + phone_mark + "0" + "" + "{54563A97-2BBA-7F31-D4C1-8EF72F4A98E6}"
client_sign = hashlib.md5(content.encode("utf-8")).hexdigest()
headers = {
    'client-ver': '3.0.1',
    'client-type': client_type,
    'client-time': str(client_time),
    'phone-mark': phone_mark,
    'app-devicetoken': app_devicetoken,
    'sina-uid': '0',
    'sina-token': '',
    'VREADREFER': 'vmh_client',
    'client-sign': client_sign,
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
    'Content-Length': '223',
    'Host': 'api.manhua.weibo.com',
    'Connection': 'Keep-Alive',
    'Accept-Encoding': 'gzip',
    'User-Agent': 'okhttp/3.8.0',

}
data = "client_ver=3.0.1&client_type={}&client_time={}&phone_mark={}&app_devicetoken={}&sina_uid=0&sina_token=&client_sign={}".format(client_type, client_time, phone_mark, app_devicetoken, client_sign)


def parse_data(url):
    response = requests.post(url, headers=headers, data=data).json()
    page_list = response["data"]["chapter_list"]
    for x in page_list:
        page_url = "http://api.manhua.weibo.com/client/comic/show?comic_id=68236/client/comic/play?chapter_id={}".format(x["chapter_id"])
        dir_name = r"漫画\\" + x["chapter_name"]
        page_data = requests.post(page_url, headers=headers, data=data).json()["data"]["json_content"]["page"]
        y = 0
        for i in page_data:
            if not os.path.exists(dir_name):
                os.makedirs(dir_name)
            result = requests.get(i["mobileImgUrl"]).content
            path = dir_name + "\\" + str(y) + ".jpg"
            with open(path, "wb")as f:
                f.write(result)
                print("正在下载", path)
            y += 1


def main():
    url = "http://api.manhua.weibo.com/client/comic/show?comic_id=68236"
    parse_data(url)


if __name__ == '__main__':
    main()
Python 相关文章推荐
Python实现在Linux系统下更改当前进程运行用户
Feb 04 Python
python处理按钮消息的实例详解
Jul 11 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
详解Python是如何实现issubclass的
Jul 24 Python
python系列 文件操作的代码
Oct 06 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 Python
Django Serializer HiddenField隐藏字段实例
Mar 31 Python
基于python实现可视化生成二维码工具
Jul 08 Python
python实现AdaBoost算法的示例
Oct 03 Python
python中的unittest框架实例详解
Feb 05 Python
python爬虫--selenium模块
Mar 31 #Python
【超详细】八大排序算法的各项比较以及各自特点
pandas 操作 Excel操作总结
Mar 31 #Python
字典算法实现及操作 --python(实用)
如何利用python和DOS获取wifi密码
python爬虫selenium模块详解
Mar 30 #Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
You might like
优化使用mysql存储session的php代码
2008/01/10 PHP
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
python使用循环实现批量创建文件夹示例
2014/03/25 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
Python反转序列的方法实例分析
2018/03/21 Python
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
留学推荐信中文范文三篇
2014/01/25 职场文书
给老师的检讨书
2014/02/11 职场文书
出国签证在职证明
2014/09/20 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
如何写新闻稿
2015/07/18 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js