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中的choice()方法使用详解
May 15 Python
Python根据区号生成手机号码的方法
Jul 08 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
python队列queue模块详解
Apr 27 Python
python中的变量如何开辟内存
Jun 26 Python
python的pip安装以及使用教程
Sep 18 Python
python使用PIL模块获取图片像素点的方法
Jan 08 Python
python实现windows壁纸定期更换功能
Jan 21 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
Python实现大数据收集至excel的思路详解
Jan 03 Python
python切片作为占位符使用实例讲解
Feb 17 Python
只用50行Python代码爬取网络美女高清图片
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
PHP 命令行参数详解及应用
2011/05/18 PHP
php获取远程文件内容的函数
2015/11/02 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
javascript cookies操作集合
2010/04/12 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
js继承实现方法详解
2016/12/16 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
Python程序设计入门(3)数组的使用
2014/06/16 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
python编写爬虫小程序
2015/05/14 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python的装饰器用法学习笔记
2016/06/24 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
白色公司:The White Company
2017/10/11 全球购物
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
致跳远、跳高运动员广播稿
2014/01/09 职场文书
社区党建工作方案
2014/06/10 职场文书