You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SNMP V3 CBC-DES:如何用8字节密钥生成PDU加密所需参数?

SNMPv3 CBC-DES 16字节隐私密钥推导方法

你遇到的核心问题是忽略了SNMPv3 USM(用户安全模型)中密码到隐私密钥的标准推导流程,多数工具要求输入的8字节值是用户密码(或预共享短语),而非直接作为DES密钥或IV,需结合目标设备的EngineID生成完整16字节隐私密钥,具体步骤遵循RFC2274附录A.2的规范:

标准推导步骤(CBC-DES隐私密钥)

    1. 将输入的8字节密钥(密码)转换为UTF-8字节序列(若为ASCII字符则直接取字节)。
    1. 重复该字节序列,直到总长度≥20字节(160位),然后截断为恰好20字节,记为P。
    1. 获取目标SNMP设备的权威引擎ID(EngineID)(可通过SNMPv3 Get请求获取,或设备配置界面查看)。
    1. 计算MD5哈希:MD5(P || EngineID || P),得到的16字节结果即为完整隐私密钥:
    • 前8字节:DES加密密钥
    • 后8字节:CBC模式所需的Prev InitVector

测试失败的原因

你直接将8字节值作为DES密钥/IV,跳过了EngineID参与的KDF(密钥派生)步骤,而Paessler等工具严格遵循USM标准,必须结合EngineID生成密钥,因此加密结果无法匹配。

验证建议

  1. 抓取Paessler与目标设备通信时的SNMPv3报文,提取报头中的EngineID字段。
  2. 用上述推导步骤生成16字节隐私密钥,再按RFC2274的CBC-DES算法加密PDU,即可与Wireshark抓取的结果一致。

内容的提问来源于stack exchange,提问作者e4mica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:53:17