dddfr 发表于 2025-3-4 17:57

烽火HG680-KA盒子IPOE认证研究

本帖最后由 dddfr 于 2025-3-4 15:30 编辑

为了实现全屋IPTV,针对这个盒子做了一系列研究,前期发的贴子有:
打开ADB:传送门
ROOT:传送门
准备工作都做全了,这次主要分享一下IPOE认证过程。
这款盒子DHCPv4和v6都有认证,主要研究v4,经抓包后发现option60是伪动态的,所谓伪动态是指每次开机验证码是变化的,但通过抓包重放后仍能通过验证,从使用层面抓到数据之后就可以了,但作为职业强迫症患者必需得给它整明白。
一般安卓的DHCP服务都放在init.rc里,但开发者可能为了避免破解不知道给藏哪了,通过PS查到DHCPv4用的是udhcpc,v6用的是dhclient,v4的文件在/system/bin/opt/bin中。
option60加密过程无非放在两个地方,一是java层,二是native层。java层经大量反编译,没找到有价值的代码,仅是将用户名和密码存到prop里,这是services.jar中EthernetService.java的片段
public void setDhcpOption60(boolean setEnable, String login, String password) {
      if (checkPermission()) {
            if ("aosp".equals(SystemProperties.get("ro.product.target", "aosp"))) {
                Log.e(TAG, "dhcpplus is not enabled");
                return;
            }
            if (this.DEBUG) {
                Log.d(TAG, "setDhcpOption60(" + setEnable + ", " + login + ", " + password + ")");
            }
            ContentResolver cr = this.mContext.getContentResolver();
            Settings.Secure.putInt(cr, "option60_on", setEnable ? 1 : 0);
            Settings.Secure.putString(cr, "option60_login", login);
            Settings.Secure.putString(cr, "option60_password", NetworkUtils.passwdEncode(password));
      }
    }
中间通过大量的Binder绕来绕去,最终来到这里。目前的状况可能是java层把相关数据放到prop里,再由native层计算option60密文。
先查了一下libnetutils.so,java层是通过这个文件里的dhcp_do_request调用DHCP服务的

没有发现加密过程,只是把相关参数压到prop里,确认DHCP确实是udhcpc。继续反编译udhcpc,这个文件export函数只有一个start入口函数,没什么参考了,继续查找string,关键字dhcp, option, aes, des, md5等,找到3des和md5的字串,经反复核查,最终锁定黄色函数。


整理一下加密流程:
**** Hidden Message *****


下一步准备研究EPG验证过程


谁像你 发表于 2025-3-4 18:51

感谢分享{znds1}

xinlan999 发表于 2025-3-5 17:16

这个不是一般的NB了

skyzgh 发表于 2025-3-5 17:59

谢谢楼主分享哈

king662us 发表于 2025-3-5 18:47

小白看得一头雾水,学习了也不一定懂,感谢大神分享。

80910083 发表于 2025-3-6 14:40

我需要学习

tgnycunmin 发表于 2025-3-8 09:40

楼主历害!

徐州维修 发表于 2025-3-10 22:37

求B0X一V10固件

dddfr 发表于 2025-3-12 20:38

徐州维修 发表于 2025-3-10 22:37
求B0X一V10固件

box-v10是什么

ltlt 发表于 2025-3-15 17:58

谢谢分享
页: [1] 2
查看完整版本: 烽火HG680-KA盒子IPOE认证研究