關於SNMPV3協議開發

2021-04-12 14:56:49 字數 2094 閱讀 8804

由於專案需要

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...