资讯中心

联系我们

深圳市维立信电子科技有限公司
地址:深圳市福田区红荔路第一世界广场A座8D-E
咨询电话:0755-83766766
E-mail:info@welissom.com

如何通过SCPI命令查询双向直流电源文件系统是否支持加密?

2026-06-09 10:10:10  点击:

  一、核心结论(N6705C / N7900 / N6900 主流双向平台)

  仪器内置 INT:/ 本地文件系统无原生 AES / 密码加密 SCPI 功能,不存在SYST:FILE:ENCRYPT、FILE:SECURE、SYST:SEC这类标准加密指令;

  整机固件没有硬件文件加密模块,日志(ELOG/DLOG)、导出 CSV/BIN 文件均为明文存储;

  校验是否存在加密能力的标准判断方式:下发疑似加密指令,读取错误寄存器判定指令是否存在。

  二、SCPI 校验步骤:判断设备是否具备文件加密能力

  1. 测试通用加密头部指令

  scpi

  *CLS

  SYST:FILE:ENCRYPT?

  SYST:ERR?

  返回 -113."Undefined header":本机完全不支持文件系统加密(95% 常规功率模块都是此结果)

  返回数字 0/1 且无报错:代表固件支持加密开关配置

  2. 补充测试安全类扩展指令

  部分高端定制固件会用安全分组指令,一并校验:

  scpi

  SYST:SEC:STAT?

  SYST:FILE:SECURE?

  FILE:ENCR:MODE?

  SYST:ERR?

  只要任意一条报 - 113.说明无原生文件加密体系。

  3. 分区 / U 盘加密单独校验(极少机型选配)

  极少数高端定制机型支持 USB 盘硬件加密,可带盘符查询:

  scpi

  SYST:FILE:ENCRYPT? USB:

  SYST:ERR?

  INT 内置盘全线无加密支持。

  三、两类容易混淆的 “保护≠加密” 机制

  1. 文件锁定 SYST:FILE:LOCK

  仅禁止删除、覆盖、写入,文件内容依旧明文可读,不属于加密;

  scpi

  SYST:FILE:LOCK?

  锁定后可正常用SYST:TRANSFER?读取完整明文日志。

  2. ELOG 事件写保护 ELOG:PROT

  只防止 ELOG 被ELOG:CLE清空、防止新事件覆盖旧记录,数据全程明文存储,无加密。

  scpi

  ELOG:PROT?

  四、可行的替代安全方案(仪器无原生加密时)

  方案 1:上位机端加密(工业通用)

  SCPI 读取 ELOG/DLOG 明文文件流(SYST:TRANSFER?)

  Python/LabVIEW 在上位机做 AES 加密、加盐、密码打包保存本地 示例简易逻辑:

  python

  运行

  # 下载仪器明文文件

  inst.write('SYST:TRANSFER? "INT:/logs/limit.csv"')

  raw_data = inst.read_raw()

  # 上位机AES加密后存本地

  from cryptography.fernet import Fernet

  key = Fernet.generate_key()

  cipher = Fernet(key)

  encrypted = cipher.encrypt(raw_data)

  with open(r"C:safe_loglimit.enc","wb") as f:

  f.write(encrypted)

  方案 2:外接硬件加密 U 盘

  使用带硬件密码锁的工业加密 U 盘插入仪器 USB 口,仪器仅负责写入明文到 U 盘,U 盘硬件层自动加密存储。

  五、机型兼容划分

  完全无文件加密(标准量产机型) N6705C、N7970A~N7976A、N6950A/N6952A、E36xx 全系列双向电源;无任何加密 SCPI。

  仅特殊军工 / 定制固件可选加密 Keysight 定制改版 N7900 高功率机型,才会开放SYST:FILE:ENCRYPT系列指令,普通市售版本不搭载。

  六、自动化校验 Python 代码

  python

  运行

  import pyvisa

  rm = pyvisa.ResourceManager()

  inst = rm.open_resource("TCPIP::192.168.1.100::INSTR")

  inst.timeout = 3000

  inst.write("*CLS")

  # 测试核心加密查询指令

  try:

  enc_resp = inst.query("SYST:FILE:ENCRYPT?")

  err_msg = inst.query("SYST:ERR?")

  except Exception:

  err_msg = "-113.Undefined header"

  if "-113" in err_msg:

  print("设备不支持文件系统加密功能,文件全部明文存储")

  else:

  print(f"加密支持状态: {enc_resp}")

  # 区分锁定、写保护(不是加密)

  lock_state = inst.query("SYST:FILE:LOCK?")

  elog_protect = inst.query("ELOG:PROT?")

  print(f"文件锁定状态: {lock_state.strip()}")

  print(f"ELOG写保护状态: {elog_protect.strip()}")

  inst.close()

  速查判定规则

  下发 SYST:FILE:ENCRYPT?

  报错 - 113 → 无文件加密

  正常返回数值 → 支持加密开关

  文件锁定、ELOG 写保护只是防篡改,不能加密内容;

  量产商用双向电源默认无仪器端加密能力,加密必须上位机实现。