鼎阳SDG810带宽升级
背景
前段时间在网上发现了有sdg810升级sdg830的案例,搜索更多信息后,发现eevblog也有售后回来成功升级的,但是没有并找到到底如何升级,只知道810升级830是可行的。
据信只需要在机器上纯按键操作就可以升级,不需要联机进行复杂操作,怀疑升级相关内容是完全存在固件中的,于是去鼎阳官网查看固件信息。
鼎阳支持页面做的还不错,不但可以下载各个版本的固件升级包,甚至还写了更新内容。最新固件V1.08.01.15R8更新内容明晃晃写着:“1. 解决SDG800升带宽无法立即生效需要重启才能生效问题”。证实了升级带宽是固件真实存在的功能,并且还存在了不止一个版本。截止本文起草,这个固件就是最新固件。
既然这个固件更改了相关功能,那其内部肯定有相关的变动,也许可以从中获得一些信息。
让AI分析了一下固件,有了一些收获,进一步研究后得到了升级方法。具体内容担心合规性,不做展示,感兴趣的朋友可以去自行尝试。
悄悄话
(相信鼎阳差价几千的sds都允许随便升,那差价才几百的sdg800系肯定更不会管x)
容器解包: plain = reverse(raw) ⊕ A ⊕ B
A = { k(k+1)/2 : k = 1,2,3,… , p < n }
B = [ n − n//2 − 56 , n )
后面就是使用GNU-tools和Unicorn的常规操作了,让ai完成即可
操作方法
下面是具体操作方法,包括升级和降级
方法1
访问本站这个小工具,里面包含操作方法,全部计算在本地完成,信息不会上传服务器。
方法2
进入仪器Utility-系统界面,获取机器序列号,计算授权码。
在仪器Utility-系统界面上,用数字键盘连按
745896,弹出授权输入框。用方向键 / 旋钮在屏幕字符表里逐字选出上面这 16 位码,
Select确认、Delete删字。按
Done,出现 License right! 即完成(失败显示 License error!)
授权码使用下面的python脚本进行计算,可在这里执行,SERIAL后面引号中的内容换成你的序列号。
#!/usr/bin/env python3
import hashlib
SERIAL = "SDGXXXXXXXXXXX" # 替换成你的序列号
SEED = (b"5zao9lyua01pp7hjzm3orcq90mds63z6zi5kv7vmv3ih981vlwn06txnjdtas3u2wa8msx"
b"61i12ueh14t7kqwsfskg032nhyuy1d9vv2wm925rd18kih9xhkyilobbgy")
PRODUCT = b"MD5_PR SDG800\n"
BAND_STR = {5: b"5M", 10: b"10M", 30: b"30M"}
MODEL = {5: "SDG805", 10: "SDG810", 30: "SDG830"}
FIXUP = {ord("0"): "2", ord("1"): "3", ord("l"): "m", ord("o"): "p"}
def pad(data, size):
return data[:size].ljust(size, b"\x00")
def map_byte(b):
if 48 <= b <= 57 or 97 <= b <= 122:
c = b
else:
r = b % 36
c = 48 + r if r <= 9 else 97 + r - 10
return FIXUP.get(c, chr(c))
def license_code(serial, band):
srl = b"MD5_SRLN " + serial.encode() + b"\n"
blob = (SEED
+ pad(PRODUCT, 32)
+ pad(BAND_STR[band], 5)
+ pad(srl, 32)
+ pad(srl, 32)
+ b"\x00" * 16)
return "".join(map_byte(b) for b in hashlib.md5(blob).digest()).upper()
def main():
print("序列号 %s" % SERIAL)
for band in (5, 10, 30):
print("%-7s %2d MHz %s" % (MODEL[band], band, license_code(SERIAL, band)))
if __name__ == "__main__":
main()注意事项
1.本人只在硬件版本0b-00-00-15-00软件版本1.08.01.15R8的sdg810上经过测试,升级到sdg830再降级到sdg810均成功,理论上不怎么挑版本。
2.不建议频繁升降级,此操作会有flash写入,而flash是有寿命的。