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 相关文章推荐
python3实现读取chrome浏览器cookie
Jun 19 Python
Python编程之序列操作实例详解
Jul 22 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
python如何操作mysql
Aug 17 Python
实例代码讲解Python 线程池
Aug 24 Python
python/golang 删除链表中的元素
Sep 14 Python
python制作抽奖程序代码详解
Jan 15 Python
Python+Appium新手教程
Apr 17 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 URL验证正则表达式
2011/07/19 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
php实现文件上传基本验证
2020/03/04 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python类属性的延迟计算
2016/10/22 Python
简述Python2与Python3的不同点
2018/01/21 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
python之消除前缀重命名的方法
2018/10/21 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
python实现局域网内实时通信代码
2019/12/22 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
毕业生就业意向书
2014/04/01 职场文书
领导干部对照检查材料
2014/08/24 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
单位授权委托书范本
2014/09/26 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python
Python深度学习之实现卷积神经网络
2021/06/05 Python
Apache POI的基本使用详解
2021/11/07 Servers
nginx常用配置conf的示例代码详解
2022/03/21 Servers
zabbix配置nginx监控的实现
2022/05/25 Servers