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在Console下显示文本进度条的方法
Feb 14 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
关于Python数据结构中字典的心得
Dec 04 Python
python如何将图片转换为字符图片
Aug 19 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
python爬取王者荣耀全皮肤的简单实现代码
Jan 31 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
python中列表的含义及用法
May 26 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
Laravel5中contracts详解
2015/03/02 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
django解决跨域请求的问题
2018/11/11 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
python设置随机种子实例讲解
2019/09/12 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
交通事故检查书范文
2014/01/30 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
集中整治工作方案
2014/05/01 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python