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集合类型用法分析
Apr 08 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
详解基于django实现的webssh简单例子
Jul 17 Python
python的常用模块之collections模块详解
Dec 06 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
Python3内置模块pprint让打印比print更美观详解
Jun 02 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 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
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
PHP微信分享开发详解
2017/01/14 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
vue观察模式浅析
2018/09/25 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
python插入排序算法实例分析
2015/07/03 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
python数据结构之列表和元组的详解
2017/09/23 Python
python实现分页效果
2017/10/25 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
python实现图片素描效果
2020/09/26 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
企业节能减排实施方案
2014/03/19 职场文书
幼儿园安全责任书
2014/04/14 职场文书
园林系毕业生求职信
2014/06/23 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
公司行政管理制度范本
2015/08/05 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA