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中使用pngquant压缩png图片的教程
Apr 09 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
使用Python实现简单的服务器功能
Aug 25 Python
详解Python进程间通信之命名管道
Aug 28 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
pymysql模块的操作实例
Dec 17 Python
解决Pycharm 导入其他文件夹源码的2种方法
Feb 12 Python
使用Pycharm分段执行代码
Apr 15 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
python使用smtplib模块发送邮件
Dec 17 Python
Python实现石头剪刀布游戏
Jan 20 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 session 错误
2009/05/21 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
python概率计算器实例分析
2015/03/25 Python
Python实现字典依据value排序
2016/02/24 Python
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
python如何写出表白程序
2020/06/01 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
英国行业制服供应商:Alexandra
2019/09/14 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
电话客服专员岗位职责
2014/06/28 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
单位考核聘任报告
2015/03/02 职场文书
人口与计划生育责任书
2015/05/09 职场文书
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server