PinkD / corplink-rs

使用 rust 实现的飞连客户端
GNU General Public License v2.0
205 stars 27 forks source link

请教一下获取otp secret的原理 #42

Closed minQpple closed 1 month ago

minQpple commented 1 month ago

我通过安卓抓包,看到通过单点登录后返回 Location: corplink://login?token=xxxxx 然后飞连中就能读到那个totp的6位数字 后续就看不到其他http请求了, 我测试用这个token直接生成6位数的验证码, 和飞连的不一样

请教一下这个token怎么转换才能得到totp密钥?

PinkD commented 1 month ago

获取的逻辑在这里,获取的结果里有个 secrete 参数,才是 token ,是一个 32 长度的全大写的字符串。这个 token 在运行程序的时候也会打到 log 里, 搜 got 2fa token 可以搜到 https://github.com/PinkD/corplink-rs/blob/43623314016c0259dc94a2ec924e9b40ba48cfec/src/client.rs#L414-L444 使用的逻辑在这里 https://github.com/PinkD/corplink-rs/blob/43623314016c0259dc94a2ec924e9b40ba48cfec/src/client.rs#L650-L659 使用的时候可能会有个 offset