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 相关文章推荐
记录Django开发心得
Jul 16 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
TensorFlow模型保存和提取的方法
Mar 08 Python
python的继承知识点总结
Dec 10 Python
浅谈python 中类属性共享的问题
Jul 02 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 Python
python在协程中增加任务实例操作
Feb 28 Python
python3实现Dijkstra算法最短路径的实现
May 12 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 empty函数判断mysql表单是否为空
2010/04/12 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
jQuery计算textarea中文字数(剩余个数)的小程序
2013/11/28 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
Python中的zip函数使用示例
2015/01/29 Python
Python SQLite3简介
2018/02/22 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
联想德国官网:Lenovo Germany
2018/07/04 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
专业销售业务员求职信
2013/11/18 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
离职证明标准格式
2014/09/15 职场文书
创先争优宣传标语
2014/10/08 职场文书
总经理岗位职责范本
2015/04/01 职场文书
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python