由於專案需要
snmpv3
支援,但手中沒有現成的
v3庫,所以需要重新開發,現在將對v3開發說一下思路性的東西
在開發過程中,覺得包的結構不是重點,比較簡單,可以參考
)重點在加密上,
snmpv3
請參考http://www.ietf.org/rfc/rfc2271.txt
我硬是看了
rfc2
天,才揣摩出來,由於是公司**,不方便公布出來,說說
snmpv3
加密的思路
snmpv3
分為noauthnopriv, authnopriv
(), authpriv
noauthnopriv
為不驗證,其結構就是
snmpv3
的原始結構,其中
authparameters 為12
個0,authparameters
必須為12
位,怎麼才能得到這
12位,下面將闡述一下
這裡只是說一下
authnopriv 模式,
這個模式理解了,其他都好理解了
authnopriv
分為hmac -md5 -96
和hmac – sha-96
加密方式,
關於md5
可以參考
,網頁下面有
c語言的
demo
hmac -md5 -96
是在md5
基礎上進行
hash
運算的演算法,可以參考
,網頁下面有
c語言的
demo
這兩個文件,就可以寫出乙個下面的函式。
void
password_to_key_md5( u_char
*password,
/**/
/*in
*/ u_int passwordlen,
/**/
/*in
*/ u_char
*engineid,
/**/
/*in - pointer to snmpengineid
*/ u_int enginelength
/**/
/*in - length of snmpengineid
*/ u_char
*key)
/**/
/*out - pointer to caller 16-octet buffer
*/
password
為你設定的
authorpass , engineid
就是你收到的
engineid
了。注意:
rfc上的
demo
有點小失誤,就是
memcpy(password_buf+enginelength, key, 16);
原來是上面這行,通過我鬱悶的測試發現
應該為 memcpy(password_buf+enginelength+16, key, 16); 一定注意哈
大約就是這樣了,關於
sha加密,和
md5思路是一樣了,
authpriv
模式加密只有
des ,
就是把pdu
部分用des
加密,具體可以參考上面所提到的文件
希望對大家有所幫助。
在Ubuntu 上配置SNMPv3
步驟很詳細,敬上出處 在ubuntu 14.04中安裝snmp伺服器及客戶端 開啟終端執行下列命令 sudo apt get install snmpd snmp 安裝完成後需要做如下改變。配置snmpv3 獲得從外部守護程序訪問的許可權 預設的安裝僅提供本地的訪問許可權,如果想要獲得外部訪問許可權...
SNMPv3的加密和認證過程
前面的一些文章詳細講解了snmpv3的報文內容,下面主要的內容就是snmpv3的加密和認證過程!usm的定義為實現以下功能 鑑別 資料加密 金鑰管理 時鐘同步化 避免延時和重播攻擊 1 usmsecurityparameters 安全引數 安全引數存在於snmp訊息中的msgsecuritypara...
置頂 SNMPv3認證和加密過程
前面的一些文章詳細講解了snmpv3的報文內容,下面主要的內容就是snmpv3的加密和認證過程!usm的定義為實現以下功能 鑑別資料加密 金鑰管理 時鐘同步化 避免延時和重播攻擊 1 usmsecurityparameters 安全引數 安全引數存在於snmp訊息中的msgsecurityparam...