方法来自eevblog
https://www.eevblog.com/forum/testgear/siglent-sds-sdg-hack-script/
因为要使用SCPI功能,所以首先需要使用网页连接到示波器,具体方法见官方用户手册,可在官网找到。
SDS800X HD 系列示波器支持用户通过 Web 浏览器访问和控制示波器。在网页服务界面下可以设
置访问的密码。用户在浏览器地址栏输入示波器 IP 地址,即可访问示波器。
在SCPI命令行输入MD5_SRLN?获取示波器ID
在SCPI命令行输入MD5_PR?获取示波器型号
在Home界面查询SN码
在线运行python脚本网站: https://www.json.cn/runcode/run_python3/
如果未升级前的本机带宽秘钥与脚本生成的一样,说明参数没有错误,
则可以使用脚本生成的更高带宽的带宽秘钥替换原来的秘钥,完成带宽破解。
# Keygen program for Siglent oscilloscopes
import hashlib
# 运行MD5_SRLN? 命令获得SCOPEID
# 将下面的SCOPEID替换为本机ID
SCOPEID = '0000000000000000'
# 将下面的SN替换为本机代码
SN = 'SDS00000000000'
# 运行MD5_PR?命令获得本机型号
# 将下面的Model 替换为本机型号"
Model = 'SDS800X-HD'
bwopt = ('70M', '100M','200M')
otheropt = ('AWG', 'MSO', 'PWA',)
# 不要修改这里 !!!
hashkey = '5zao9lyua01pp7hjzm3orcq90mds63z6zi5kv7vmv3ih981vlwn06txnjdtas3u2wa8msx61i12ueh14t7kqwsfskg032nhyuy1d9vv2wm925rd18kih9xhkyilobbgy'
def gen(x):
h = hashlib.md5((
hashkey +
(Model+'\n').ljust(32, '\x00') +
opt.ljust(5, '\x00') +
2*(((SCOPEID if opt in bwopt else SN) + '\n').ljust(32, '\x00')) +
'\x00'*16).encode('ascii')
).digest()
key = ''
for b in h:
if (b <= 0x2F or b > 0x39) and (b <= 0x60 or b > 0x7A):
m = b % 0x24
b = m + (0x57 if m > 9 else 0x30)
if b == 0x30:
b = 0x32
if b == 0x31:
b = 0x33
if b == 0x6c:
b = 0x6d
if b == 0x6f:
b = 0x70
key += chr(b)
return key.upper()
print('INFO: 在输入新密钥之前检查生成的密钥 !!!' + '\r')
print('您可以通过在SCIP提示符下运行 “PRBD?” 来获得带宽' + '\r')
print('您可以通过在SCIP提示符下运行 “MCBD?” 来获得带宽密钥' + '\r')
print('将您的密钥与生成的密钥进行比较')
print('INFO: 本机带宽查询到的秘钥必须与脚本生成的带宽秘钥是相同的 !!!')
print('--------------------------------')
print('以下是带宽代码,通过SCIP提示输入这些代码')
for opt in bwopt:
print('{:5} {}'.format(opt, gen(SCOPEID)))
print('--------------------------------')
print('以下是选件代码,在示波器UI上输入这些代码')
print('SDS800XHD-FG 选件输入AWG后代码')
print('SDS800XHD-16LA 选件输入MSO后代码')
print('SDS800XHD-PA 选件输入PWA后代码')
for opt in otheropt:
print('{:5} {}'.format(opt, gen(SN)))