[逆向] IDExpert OTP算法分析 | 祭夜の咖啡馆
  • 欢迎光临,这个博客颜色有点多

[逆向] IDExpert OTP算法分析

猿之力 msojocs 2周前 (09-26) 51次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

前言

同事的手机是鸿蒙的,一家客户的远程环境需要OTP才能进入;

然后这个OTP软件的定制化的,第一次需要与服务器通信注册设备,而程序不支持鸿蒙,哈哈哈;

试了模拟器,程序会报错。。。

最后,用我手机注册,但是一直找我拿OTP手机是很麻烦的。

分析

1. 直接搜索otp

可以看到一个OneTimePassword文件,点进去看一下

[逆向] IDExpert OTP算法分析

一眼看到算法HmacSHA256,接下来就是要确认它是用什么来做计算密钥的;

[逆向] IDExpert OTP算法分析

2. 找计算密钥

去项目找generateTOTP发现只有这个文件里面自己调用的,可以看到是使用pushKey和当前时间进行计算的;
[逆向] IDExpert OTP算法分析

下一步就是找pushKey的生成了;

3. 找pushKey生成算法

可以看到是start在使用,继续溯源;

额,start不好找,直接找pushKey吧;
[逆向] IDExpert OTP算法分析

在Profile里面找到setPushKey的东西,继续溯源;
[逆向] IDExpert OTP算法分析

在Register里面找到了。
[逆向] IDExpert OTP算法分析

4. 分析pushKey生成算法

可以看到是deviceIdikSHA后拼接在一起的;

应用主界面开起来就是机器码xxxx,就是deviceId;
[逆向] IDExpert OTP算法分析

而ik的来源很简单,客户有提供一个二维码直接扫描内容就是json数据,里面就有一个ik。

例如这个二维码(来源官方教程视频)
[逆向] IDExpert OTP算法分析

生成OTP密钥

仿照反编译的代码写一个,跑一下;

然后转base32,在鸿蒙上下载一个F2A的软件,导入就行了。

 /**
         * 操作步骤:
         * 1. 使用idexpert扫描二维码注册设备
         * 2. 将界面的设备ID填入deviceId,去掉连字符
         * 3. 使用微信扫描二维码获取json数据,将ik复制出来,填到下方ik中
         */
        // 去掉连字符
        String deviceId = "";
        // 二维码内容
        String ik = "";
        String ikData = HexUtils.bytesToHex(DigestUtils.SHA(ik.getBytes(), 256));
        String deviceData = HexUtils.bytesToHex(DigestUtils.SHA(deviceId.getBytes(StandardCharsets.UTF_8), 256));
        String pushKeyFirst = ikData.substring(0, 32);
        String pushKeySecond = deviceData.substring(0, 32);
        System.out.println(pushKeyFirst);
        System.out.println(pushKeySecond);
        String otpKey = pushKeyFirst +  pushKeySecond;
        System.out.println(otpKey);
        /**
         * 1. 将hex转成base32 -> https://cryptii.com/pipes/hex-to-base32
         * 2. 在手机Auth(F2A)应用程序中添加
         * 3. 粘贴base32字符串到“密钥”
         * 4. 类型TOTP
         * 5. 哈希函数SHA256
         * */
https://github.com/msojocs/idexpert-algorithm/

总结

别买homo手机,哈哈哈。


祭夜の咖啡馆 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:[逆向] IDExpert OTP算法分析
喜欢 (0)
[1690127128@qq.com]
分享 (0)
发表我的评论
取消评论
OwO表情
贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址