• 注册
  • 玩机教程 玩机教程 关注:641 内容:720

    52pj正己大神分享:[白嫖大法]某影视邀请协议分析

  • 查看作者
  • 打赏作者
    • 11
    • 玩机教程
    • 我是真心不会技术,只能搬运过来,看看有没有豆友能动动手。

      以下为转发内容,文章内容未经正己大神首肯。


      # 一、抓包和算法助手定位
      ***
      1.黄鸟开启抓包,发现可疑封包,invited是受邀的意思,可见这条封包便是我们邀请的关键封包,其中我们需要关注的是sign的算法
      52pj正己大神分享:[白嫖大法]某影视邀请协议分析
      ```
      POST /api/public/init HTTP/1.1
      log-header: I am the log request header.
      app_id: xiaocao
      channel_code: xc_ds30
      cur_time: 1622713837238
      device_id: c253b61fae991642
      mob_mfr: huawei
      mobmodel: BRQ-AN00
      package_name: com.xiaocao.p2p
      sign: F90E98C3DD93D851D6FD4A002DD58A60
      sys_platform: 2
      sysrelease: 7.1.2
      token:
      version: 16100
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 11
      Host: xcapp.cyb365.cn
      Connection: Keep-Alive
      Accept-Encoding: gzip
      User-Agent: okhttp/3.10.0
      invited_by=
      ```
      2.复制sign中的值到算法助手中搜索,由此可知sign的值是由`36Q7tBqO3YqrMHf3c253b61fae9916421622713837238`进行md5加密得来的,在什么都不知道的情况下,盲猜`1622713837238`是时间戳
      52pj正己大神分享:[白嫖大法]某影视邀请协议分析52pj正己大神分享:[白嫖大法]某影视邀请协议分析
      # 二、MT管理器分析与注入验证
      ***
      1.直接搜数据啥也搜不到,所以我们根据算法助手的堆栈调用,定位到`com.xiaocao.p2p.util.AppUtils.md5`,由方法名我们可以知道,这个方法是进行了一次md5运算,因此要得到加密前的数值必须查看方法调用
      52pj正己大神分享:[白嫖大法]某影视邀请协议分析52pj正己大神分享:[白嫖大法]某影视邀请协议分析
      2.调用处有三个,前两个很明显不是,我们直接看第三个(因为被数字加固了,所以我们简单修复一下代码),第三个有`getDeviceId`(获取设备id)、`System.currentTimeMillis`(获取时间戳)
      ```
      public Response intercept(Interceptor.Chain chain) throws IOException {
      Request.Builder newBuilder = chain.request().newBuilder();
      String lowerCase = Build.MANUFACTURER.toLowerCase();
      String str = Build.MODEL;
      String str2 = Build.VERSION.RELEASE;
      String deviceId = AppUtils.getDeviceId(BaseApplication.getInstance());
      String appMetaData = AppUtils.getAppMetaData(BaseApplication.getInstance());
      String token = UserUtils.getToken();
      String upperCase = AppUtils.md5(AppUtils.normalSign(System.currentTimeMillis() + "")).toUpperCase();
      Response proceed = chain.proceed(newBuilder.build());
      f.d(proceed.code());
      return proceed;
      }
      }
      ```
      3.这个方法中我们来看看这一句代码,获取时间戳并传入normalSign这个方法中,然后再进行md5加密
      `String upperCase =AppUtils.md5(AppUtils.normalSign(System.currentTimeMillis() + "")).toUpperCase();`
      4.跟进一下normalSign方法,返回值是e.decode + 设备id + 时间戳(刚才传进来的),也验证了我们算法助手里找到的那个字符串`36Q7tBqO3YqrMHf3c253b61fae9916421622713837238`,`1622713837238`是时间戳,设备id:`c253b61fae991642`也就是我们的Android ID,也就是剩下一个`36Q7tBqO3YqrMHf3`目前还不知道是什么
      ```
      public class AppUtils {
      public static String normalSign(String str) {
      return e.decode(ConstantUtils.a) + getDeviceId(BaseApplication.getInstance()) + str;
      }
      }
      ```
      5.再跟进decode方法,很明显这是一个DES算法,我们在算法助手中搜一下`36Q7tBqO3YqrMHf3`,没想到是这个居然不是加密结果,失算了
      ```
      public class e {
      public static String decode(String str) {
      try {
      SecretKey generateSecret = SecretKeyFactory.getInstance(generateSecret(new DESedeKeySpec(getBytes()));
      Cipher instance = Cipher.getInstance();
      instance.init(2, generateSecret, new IvParameterSpec(getBytes()));
      return new String(instance.doFinal(Base64.decode(str, 2)));
      } catch (Exception e) {
      e.printStackTrace();
      return str;
      }
      }
      }
      ```
      52pj正己大神分享:[白嫖大法]某影视邀请协议分析
      6.这时我们不妨大胆猜测一下,这是一个固定的字符串。接下来我们用MT的注入来验证一下我们的猜测,注入方案如下:不会MT注入的可以看一下我之前的帖子,[点击跳转]( 链接)
      52pj正己大神分享:[白嫖大法]某影视邀请协议分析
      7.果不其然,这是一个固定的字符串,我又测试了不同的手机或者模拟器,都是这个,所以我们直接拿来用就可以了
      52pj正己大神分享:[白嫖大法]某影视邀请协议分析
      剩余内容回复可见。

      隐藏内容需要回复可以看见

      回复

      自己做个沙发,论坛技术帖子还是要加强一下,从我做起,搬运不怕苦~

      回复
      感谢楼主分享!
      回复
      带我进来也不打赏 [s-42]
      回复

      感谢楼主分享!

      回复

      感谢楼主分享!

      回复
      妙沉这篇烂贴。
      回复
      轻推楼主老婆。
      回复

      轻推楼主老婆。感谢楼主分享!

      回复

      52pj现在好像不给发布破解类的帖子了。希望多做点技术贴。以后不求人。增长技术

      回复

      感谢楼主分享!

      回复

      请登录之后再进行评论

      登录
    • 做任务
    • 实时动态
    • 偏好设置
    • 帖子间隔 侧栏位置: