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中global用法实例分析
Apr 30 Python
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
Python中datetime常用时间处理方法
Jun 15 Python
Python去除、替换字符串空格的处理方法
Apr 01 Python
Python实现购物车程序
Apr 16 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
python实现抠图给证件照换背景源码
Aug 20 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
利用python进行文件操作
Dec 04 Python
Python的collections模块真的很好用
Mar 01 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跳转页面的几种实现方法详解
2013/06/08 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
php实现短信发送代码
2015/07/05 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
全面了解python中的类,对象,方法,属性
2016/09/11 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
如何给Python代码进行加密
2020/01/10 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
护理专业推荐信
2013/11/07 职场文书
个人求职信范例
2014/01/29 职场文书
黄河象教学反思
2014/02/10 职场文书
竞聘自述材料
2014/08/25 职场文书
2014年保管员工作总结
2014/11/18 职场文书
清明节寄语2015
2015/03/23 职场文书
物业保安辞职信
2015/05/12 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书