我目前居住在中国,我使用各种 VPN 服务来访问国际互联网。但是 VPN 往往会被屏蔽,所以我自然而然地就摆弄了路由器和其他东西。
我目前使用的 ISP 是中国电信,调制解调器是 HS8145C5,每次我使用 LOID 注册调制解调器时,他们都会更改管理员密码,他们随时通过 TR069 ACS 阻止我的 VPN 连接,而且他们没有提供 LOID、我的 PPPoE 密码,甚至 PPPoE 帐户!
但是我可以物理访问调制解调器,这意味着我可以按下重置按钮,每次重置调制解调器时,我都会失去互联网访问权限,但我可以使用默认帐户telecomadmin
和密码获得管理员访问权限nE7jA%5m
,当然 ISP 没有提供给我。
我能够获得 LOID,但每次我注册调制解调器时,我都会获得互联网访问权限并失去对调制解调器的管理员访问权限,因为一旦您注册调制解调器,他们就会将管理员密码更改为随机字符串。
但是我能够使用我发现的这个混乱情况来启用 telnet 并获取 Web 管理员密码:
telnet 192.168.1.1
root
adminHW
su
shell
cp /mnt/jffs2/hw_ctree.xml /mnt/jffs2/mycfg.xml.gz
cd /mnt/jffs2
aescrypt2 1 mycfg.xml.gz tem
gzip -d mycfg.xml.gz
grep WebUserInfoInstance mycfg.xml
rm mycfg.xml
账户为root
,密码为adminHW
。倒数第二行输出如下内容:
<X_HW_WebUserInfoInstance InstanceID="1" ModifyPasswordFlag="0" UserName="useradmin" Password="$2!ZM$Idyl@J~}>8'n6KWMF|-@Koy>C,;ofJBq_'V5$" UserLevel="1" Enable="1" Alias="cpe-1"/>
<X_HW_WebUserInfoInstance InstanceID="2" ModifyPasswordFlag="1" UserName="telecomadmin" Password="$2:8jUNk0n|HenK~CB|'^&Aopi"<v~xJmC&<!TXx`3$" UserLevel="0" Enable="1" Alias="cpe-2" PassMode="0"/>
密码是加密的,我不知道格式,但我能够使用此密码解密工具我发现(将密码粘贴到“文本解密”标签下的文本框中,然后单击$2),我能够获得新的管理员密码。
然后,我将输入框从F12更改为,就能找到 PPPoE 帐户和密码。type
"password"
"text"
但是我得到的密码是一个 64 位十六进制字符串,经过一番挖掘后发现是SHA256(MD5(pwd))
,所以我编写了这个 Python 程序来暴力破解密码:
from hashlib import md5, sha256
count = 0
reversemap = dict()
def guess(s):
if s in reversemap:
return reversemap[s]
global count
for n in range(count, 1000000000):
i = str(n)
digest = sha256(md5(i.encode()).hexdigest().encode()).hexdigest()
reversemap[digest] = i
if digest == s:
count = n + 1
break
return i
我可以获取密码,但是这毫无用处,因为无论如何我都无法删除 TR069 WAN 连接...
但是我有su
telnet 访问权限,并且我能够使用我找到的这个脚本将 ISP 接口更改为工厂接口:
cp -f /mnt/jffs2/hw_ctree.xml /mnt/jffs2/hw_ctree_bak.xml
cp -f /mnt/jffs2/hw_boardinfo /mnt/jffs2/hw_boardinfo_bak
cp -f /etc/wap/hw_default_ctree.xml /mnt/jffs2/hw_ctree.xml
sed -i 's/^.*obj.id = "0x0000001a" ; obj.value =.*$/obj.id = "0x0000001a" ; obj.value = "COMMON";/' /mnt/jffs2/hw_boardinfo
sed -i 's/^.*obj.id = "0x0000001b" ; obj.value =.*$/obj.id = "0x0000001b" ; obj.value = "COMMON";/' /mnt/jffs2/hw_boardinfo
sed -i 's/^.*obj.id = "0x00000031" ; obj.value =.*$/obj.id = "0x00000031" ; obj.value = "NOCHOOSE";/' /mnt/jffs2/hw_boardinfo
reboot
然后,我可以通过将调制解调器设置为桥接模式并使用路由器拨号来访问互联网,并删除 TR069 WAN 连接并禁用 ACS 和定期报告并使自动报告登录无效......
然后我的 VPN 连接就畅通无阻了!但这并没有持续多久……
不知何故,ISP 可以更改我的调制解调器的设置,这是有道理的,因为我没有更改密码,而且我还没有找到更改密码的方法……
但是根据代码,配置存储在中/mnt/jffs2/hw_ctree.xml
,这是一个经过 gzip 压缩然后经过 aes 加密的 .xml 文件,所以如果我可以更改那一行,对 .xml 进行 gzip 压缩,使用 AES 加密,然后将生成的文件重命名为/mnt/jffs2/hw_ctree.xml
,这样就可以了。
我发现我可以使用以下几行来aescrypt2(gzip())
替换原始文件:
gzip /mnt/jffs2/mycfg.xml
aescrypt2 0 /mnt/jffs2/mycfg.xml.gz tem
cp -f /mnt/jffs2/mycfg.xml.gz /mnt/jffs2/hw_ctree.xml
但我不知道如何编辑该文件...
更重要的是,更改界面后,包含登录信息的两行是不同的:
<X_HW_WebUserInfoInstance InstanceID="1" ModifyPasswordFlag="0" UserName="useradmin" Password="$2*P#<Rm12MIRDkTTWT1NLn01YXTlMwFM]>d=_$|A$0&VND3OIl~fvHI$bbo8Su>jVP)^v]MiPG>.u9'{N6n)]=cIhB0+>tG1IS|9R$" UserLevel="1" Enable="1" Alias="cpe-1" Salt="deeb9e44dc1b96caaa9c312d" PassMode="3"/>
<X_HW_WebUserInfoInstance InstanceID="2" ModifyPasswordFlag="0" UserName="telecomadmin" Password="$2ha17UJ3)&/*k,o-D8Y1PJF:(4b^vWVK}$5:+UQ_0BJLWCDy:AGaY:~!_dBc'*E5DRc#De56S=r'dUHwUMP=b/h3V3:Fd^XB_MQ`N$" UserLevel="0" Enable="1" Alias="cpe-2" Salt="180cf7332c754daddf2d42f2" PassMode="3"/>
密码加密显然是加盐的,使用我找到的工具无法解密它们,但我知道它们是加密的而不是散列的,第一个解密为zvsmc
第二个解密为nE7jA%5m
,我猜加密是 AES。
我需要知道如何使用与调制解调器相同的加密方式来加密密码。
而且我也无法更改 telnet 密码,根据提示,调制解调器是 BusyBox v1.26.2(Dopra Linux),下面是我尝试更改密码时发生的情况:
Login:root
Password:
WAP>passwd
ERROR::Command is not existed
WAP>su
success!
SU_WAP>passwd
ERROR::Command is not existed
SU_WAP>shell
BusyBox v1.26.2 () built-in shell (ash)
Enter 'help' for a list of built-in commands.
profile close core dump
WAP(Dopra Linux) # passwd
passwd: no record of srv_ssmp in /etc/shadow, using /etc/passwd
Changing password for srv_ssmp
Old password:
Incorrect password
passwd: password for srv_ssmp is unchanged
WAP(Dopra Linux) #
WAP(Dopra Linux) # passwd root
passwd: srv_ssmp can't change password for root
我获得了调制解调器中存在的命令列表:文件
我如何更改密码,以便我的 ISP 无法更改我的调制解调器的设置?调制解调器还有一个 USB 端口,可用于备份和恢复设置。
我能够获得调制解调器的配置文件,并且知道如何将其放回。
我可以对它做哪些改变?
我发现华为采用的是DES加密,解密方法如下:脚本
我正在尝试对其进行逆向工程。