本章用到的工具有:

  1. AndroidStudio(配合xposed进行分析)
  2. xposed(对JAVA层的应用进行hook)
  3. 任意一款js调试工具,我这边用的是WT-JS
  4. 精易编程助手(只是为了使用里面的一些编码操作,还有一个自带的接口调试工具,用起来比较方便)
  5. HttpAnalyze(抓包)
    上一篇说到了这个课表数据(对某安卓应用进行分析爬取课表数据制作懒人课表(一)),它是一个AES加密。
    那我们需要怎么搞他呢?
    我们 祭出神器:xposed
    xposed怎么配置,这块应该不用多说了
    搜一下一搜一大片

    ps:由于夜神模拟器不知道这么个原因,xposed装上去就死机,我这边就直接换成了雷电模拟器。
    编写xposed的东西 我这边就用到了AndroidStudio
    在编写之前。我们要先了解一下在java里面 是怎么实现的aes加密
    java的aes加密,在这边文章里面,实现了一个带iv和key加密的方法:JAVA实现AES加密、解密
    我在上面那个文章中。扣了一个不带iv的加密方式来进行说明
    // 加密public static String Encrypt(String sSrc, String sKey) throws Exception {if (sKey == null) {System.out.print("Key为空null");return null;}// 判断Key是否为16位if (sKey.length() != 16) {System.out.print("Key长度不是16位");return null;}byte[] raw = sKey.getBytes("utf-8");SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"cipher.init(Cipher.ENCRYPT_MODE, skeySpec);byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。}

在上面的代码中,我们注意到了一个SecretKeySpec的对象。
这个东西传入了一个key。而这个key就是我们需要的东西。
而这个对象是在javax.crypto里面的,属于java层的东西,那我们就可以对这个对象进行hook,把他构造方法里的第一个参数给掏出来看看是个什么玩意
下面开始编写xposed模块

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public class HookMain implements IXposedHookLoadPackage {public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {XposedBridge.hookAllConstructors(XposedHelpers.findClass("javax.crypto.spec.SecretKeySpec", lpparam.classLoader), new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {byte[] mKey = (byte[]) param.args[0];int mSize = mKey.length;byte[] mShit = new byte[mSize];System.arraycopy(mKey,0,mShit,0,mSize);String mFlag = Base64.encodeToString(mShit,0);Log.d("加密","===============================================================");Log.d("加密","密钥=>" + mFlag);Log.d("加密","方式=>" +param.args[1].toString());}});}
}

最后编译安装到模拟器里,勾选激活然后重新启动即可。

启动后,直接启动目标应用
然后切换到AndroidStudio里。注意日志框 你会惊讶的注意到,这不是我们写的那个东西吗。没错你hook成功了

我们给他过滤一下。在上面那个框框里面输入加密俩字把我们那些东西过滤出来。

哇这么多密钥。到底是哪一个呢。我们不管 全部给删了先
因为我们需要的目标数据。不是这一块的。我们直接登录目标应用

你发现到,欸 这个密钥怎么长得一模一样。非常可疑
我们去到目标数据那里。抓包然后解一下看看。
由于我们这个雷电模拟器。抓不到https,所以我就采用了另一个抓包工具。叫HttpAnalyze

直接点击开始。就是这么傻瓜
在目标数据下面 发现四个数据包 我们对着响应数据一个一个看看是个什么情况

我会用一个比较方便的js调试工具:WT-JS 来进行aes的解密测试
由于我们打开了这个目标数据的时候
AndroidStudio一直在吐密钥

所以我严重怀疑R8C/jbk8r6+llWUZVPWc7w这个东西就是密钥
我们去试一下

打开wt-js 然后切换到aes的那块 我们会看到 aes有好几个方式 而且有一个key和iv 我们就先测试 ECB模式,因为ECB模式无需IV
记得密钥方式设置成base64

欸 成功解出来了.那我们看看这个最多数据的包解出来是不是有想要的数据


em???纳闷了 为啥子没有
不慌。如果这里没有的话 那就肯定是在刚开始进来的时候就已经加载完毕了,我们就重新打开这个目标应用进行抓包。反正加密的key已经拿到了
注意:目标应用每次重新启动的key都会变动 要时刻注意AndroidStudio的日志输出
本次重新启动 我的key是oON8uRrq7DkdBhfUtaR44g

然后我这次是在登录页面开始抓的 我们来看看数据包
在一个getdata的数据包中 发现了一块很像课表的数据

这块其实也不是我们的课表数据,因为量太少了
我们继续看看
接下来 我在一个monthlyData的表中 看到了一串让我卡到崩溃很长很长的数据。我严重怀疑 课表就放在里面

由于这数据太大了。我们只能无奈的通过手动去请求一次来获取数据

它是一个post请求 我们看一下提交的数据

是加密的。不怕 解出来就好了

嘶,我觉得这是课表无疑了。
直接请求一次看看

然后把返回的数据data拿去解密

成功拿到目标数据。我们来格式化看看

嗯 很棒
我们改下提交的数据 把他改成六月看看

懂了 这是一个一个月课表进行获取的

呼 通过这大费周章的可算把这课表数据提出来了
下一章就是没啥用的懒人课表制作了(ps:手机太卡打开个网页就能看课表。打开软件要卡好一会)

对某安卓应用进行分析爬取课表数据制作懒人课表(二)相关推荐

  1. 对某安卓应用进行分析爬取课表数据制作懒人课表(一)

    搞事情前 安卓模拟器(安卓版本最好为5.0) fiddler(抓包分析,配置fiddler详见:fiddler 抓取https配置) 精易编程助手 反射大师(脱壳用) dex2jar(把dex文件转成 ...

  2. python爬取岗位数据并分析_区块链岗位薪资高,Python爬取300个区块链岗位分析,龙虎榜出炉...

    原创: 菜鸟哥 菜鸟学Python 最近区块链技术再次被大家热议,既然区块链受到如此高的关注,我们就不妨去采集数据分析看看,目前所有与区块链相关的招聘信息吧. 1数据的爬取 首先是对于数据的爬取,由于 ...

  3. Python爬取天气数据及可视化分析!

    来源丨Python之王 Python爬取天气数据及可视化分析 说在前面 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本 ...

  4. 基于Python的网络爬虫爬取天气数据可视化分析

    目录 摘 要 1 一. 设计目的 2 二. 设计任务内容 3 三. 常用爬虫框架比较 3 四.网络爬虫程序总体设计 3 四. 网络爬虫程序详细设计 4 4.1设计环境和目标分析 4 4.2爬虫运行流程 ...

  5. Python爬取天气数据及可视化分析(附源码)

    大家好,我是辰哥(文末送书) 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本次使用python中requests和Be ...

  6. Python爬取天气数据及可视化分析

    Python爬取天气数据及可视化分析 文章目录 Python爬取天气数据及可视化分析 说在前面 1.数据获取 请求网站链接 提取有用信息 保存csv文件 2.可视化分析 当天温度变化曲线图 当天相对湿 ...

  7. 网络爬虫---抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享)

    抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享) 文章目录 抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享) 一.抓包分析 1.下载工具并安装 ...

  8. java爬取网页数据_利用Python做数据分析—对前程无忧数据类岗位进行分析

    引言 随着时代的发展,我国在各行各业都需要大量的人才引进,处于近几年最热门的行业也称"最火行业":大数据.数据分析.数据挖掘.机器学习.人工智能,这五门行业各有不同又互有穿插.近几 ...

  9. 一个月入门Python爬虫,轻松爬取大规模数据

    如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样一个月入门Python爬虫,轻松爬的编程语言提供越来越多的优秀工具,让爬虫 ...

最新文章

  1. c语言文件 加载内存吗,把文件中的数据加载到内存进行查找C语言实现.docx
  2. WinForm -- 为TextBox文本框添加鼠标右键菜单
  3. android系统 通知管理,Android的通知系统
  4. 18-mysql-数据类型
  5. Qt 学习笔记(5)绘图 五子棋游戏
  6. 停止预览时调用Camera.release(), 出现Method called after release()异常问题原因及解决办法...
  7. 使用百度地图绘制热力图
  8. 归并排序(MergeSort)
  9. 卓有成效的管理者——彼得·德鲁克
  10. 精睿ESET_VC52_UPID获取器(8.25更新4.2.2.0)
  11. android 半圆型菜单,Android-自定义view之圆形与“半圆形”菜单
  12. RFBnet论文翻译:感受野块网络对于精确的和快速的目标检测
  13. linux mate桌面主题下载_使用Mate Tweak配置Mate桌面
  14. Prometheus监控kubernetes
  15. 【不全】网络工程师术语表
  16. 分布式能源的不确定性——风速测试(Matlab代码实现)
  17. Unity初学:制作2D小游戏Sunny Land 1.游戏背景场景添加
  18. win2012 r2 iis php,Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建wordpress博客教程
  19. 用三年都不会卡,Reno5系列恋恋青风,这方面体验确实顶
  20. Android编译问题:java.util.zip.ZipException:duplicate entry...

热门文章

  1. 第四届橙瓜网络文学奖网文之王我吃西红柿竟然还不敌新人作者?
  2. 起点中文网月票等字体数据爬取Python
  3. Northwind中文版Access2000、MSSQL版也适用LinqPad学习
  4. 金鹰Authorware视频教程
  5. 营销型网站运营推广方法有哪些?最全的网站推广方式盘点!
  6. 万众期待: iebook超级精灵2008电子杂志制作套件全球发布
  7. 让FLASH动画轻松转换成GIF动画
  8. cad如何批量转换成pdf?
  9. 【如何选择云主机】云主机比较与测评
  10. Node.js联机游戏——gobang五子棋(客户端+服务端+websocket的双人游戏)