首页
论坛
课程
招聘
[原创]小米APP登录接口hashedEnvFactors属性溯源
2021-3-7 16:53 4400

[原创]小米APP登录接口hashedEnvFactors属性溯源

2021-3-7 16:53
4400

0x00 前言

继上一次小米APP登录接口遇到的几个参数加密算法分析后, 发现其中env中是通过读取一串叫hashedEnvFactors的数组字符串进去拼接加密的,这次我们主要讲讲是如何找出hashedEnvFactors的赋值过程。 原帖

#01 溯源

我们回到之前的loginByPassword方法,也就是登录时触发的方法,我们知道,它只有一个传参 PasswordLoginParams ,直接跟进查看这个类。

我们可以直接右键这个属性来看看是在哪里赋值的,因为我当初学习JAVA的时候书中曾就讲过,最好不要直接给类里面的属性直接用 = 号赋值,都是直接在新建一个方法来赋值,所以这也跟了我们逆向带来的便捷。。。

1
2
3
4
public Builder setHashedEnvFactors(String[] strArr) {
          this.hashedEnvFactors = strArr;
          return this;
      }

我们看到这个类下面有一个set方法了,然后在进行调用用例看看是哪个地方执行了该方法。

我们看到有好几个,其中第一个的方法名称跟我们的登录接口是一样的,就先点进去看看。

1
2
3
static AccountInfo loginByPassword(String str, String str2, String str3, String str4, String str5, String str6, MetaLoginData metaLoginData, boolean z, String[] strArr, PassportCATokenManager passportCATokenManager, boolean z2) throws InvalidResponseException, InvalidCredentialException, InvalidUserNameException, NeedVerificationException, NeedCaptchaException, IOException, AccessDeniedException, AuthenticationFailureException, NeedNotificationException, PassportCAException {
       return loginByPassword(new PasswordLoginParams.Builder().setUserId(str).setPassword(str4).setDeviceId(str3).setCaptCode(str5).setCaptIck(str6).setServiceId(str2).setMetaLoginData(metaLoginData).setNeedProcessNotification(z).setIsReturnStsUrl(z2).setHashedEnvFactors(strArr).build());
   }

它这里就是一行语句的方法。而且参数贼长,从单个字符串传参变成了封装成一个PasswordLoginParams类进行传参。。那么我们看到其中strArr就是我们要找的,继续看看是谁调用了这个方法。

依旧点击第一个进去

还是熟悉的配方熟悉的味道,继续往上跟。。

这里注意,我们不要选第一行了,因为我们要的参数是最后一个,而它传的是NULL,肯定不是我们要的,我们可以点第3个看看

可以看到是调用了getEnvInfoArray()获取到的,继续跟进。

我看可以看是通过getEnvInfoArray返回的,继续跟进。

我们可以看到通过调用getAllLinkedEnvInfos方法获得List然后枚举出来插入到arrayList里面的。
并且我们看到一个小细节,之前抓出来有些数组是空字符串,然而这里正好看到它有一个如果是null则赋值空字符串的判断语句,更加证实了该方法是我们需要的。
我们继续跟入getAllLinkedEnvInfos

跟到这里,基本可以宣告结束了,这里他就是获取了手机的一些基本设备信息,并且我们数了一下他add的数量跟hashedEnvFactors正好一样。。(我也是够闲的)

0x02 总结

总的来说这个字符串还是挺好跟进去的,只要思路比较清晰就行了,写的也不是非常野,最后我们只需要知道把他的hash和base64方法拿出来自己就可以定义这个字符串了。


[注意] 欢迎加入看雪团队!base上海,招聘安全工程师、逆向工程师多个坑位等你投递!

收藏
点赞2
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回