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 相关文章推荐
压缩包密码破解示例分享(类似典破解)
Jan 17 Python
一个计算身份证号码校验位的Python小程序
Aug 15 Python
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
python连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
python常用排序算法的实现代码
Nov 08 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
Python实现弹球小游戏
Aug 01 Python
Python中logging日志的四个等级和使用
Nov 17 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
python 实现两个变量值进行交换的n种操作
Jun 02 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
怎么在Windows系统中搭建php环境
2013/08/31 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
微信支付扫码支付php版
2016/07/22 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
js实现随机点名程序
2020/09/17 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
Python正则简单实例分析
2017/03/21 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
艺术设计专业个人求职信
2013/09/21 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
合作协议书怎么写
2014/04/18 职场文书
保护环境演讲稿
2014/05/10 职场文书
市场营销毕业求职信
2014/08/07 职场文书
2015年超市工作总结
2015/04/09 职场文书
通知范文怎么写
2015/04/16 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python