2014-06-27 46 views
2

我正在開發「GetDeviceInformation」的ONVIF。這是所需的wsse:UsernameToken。 權威搜索數據之後,有兩個faormula:ONVIF的公式是什麼#PasswordDigest

(1)由 「ONVIF核-規格-v241.pdf」, 「5.12.2.1密碼導出」

PE_UA = base64(HMAC_SHA-1(UA+P_UA,NEP+」ONVIF password」)) 

(2) WEB協議皁

Digest = B64ENCODE(SHA1(B64DECODE(Nonce) + Date + Password)) 

我很困惑!!哪一個是正確的?

而且,當我通過Wireshark的

的XML作爲我測試了ONVIF測試工具:

<wsse:UsernameToken> 
<wsse:Username>admin</wsse:Username> 
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">lu9ywjDwSt8oW7M4tMjCb50/xRg=</wsse:Password> 
<wsse:Nonce>TgBYFHxSc3Oo8yPzwnQn8A==</wsse:Nonce> 
<wsu:Created>2014-06-20T04:41:45Z</wsu:Created> 
</wsse:UsernameToken> 

OK,然後我試圖通過這些數據找出公式。

一個>用戶名:「管理員」

b>密碼:「通過」(未熵)

C>隨機數:「TgBYFHxSc3Oo8yPzwnQn8A ==」

d> created:「2014-06-20T04:41:45Z」

不知何故,升密碼: 「lu9ywjDwSt8oW7M4tMjCb50/XRG =

的 「現時」 可以被轉換的Base64使得原本應該是 「4E0058147C527373A8F323F3C27427F0」

我已經嘗試使用

base64(SHA1("TgBYFHxSc3Oo8yPzwnQn8A==2014-06-12T04:03:45Zpass")) 

base64(SHA1("4E0058147C527373A8F323F3C27427F0==2014-06-12T04:03:45Zpass")) 

但我仍然無法獲得由測試工具發送的密碼爲「lu9ywjDwSt8oW7M4tMjCb50/xRg =」

任何人都可以幫我弄清楚ONVIF測試工具使用的確切公式是什麼?

需要你的幫助!謝謝!!

回答

1

終於,設備發送給我!

參照gSOAP的

在第一後,其公式爲:

Digest = B64ENCODE(SHA1(B64DECODE(Nonce) + Date + Password)) 

的隨機數,它應該是20個字節隨機 「數字」 值爲:

char caNonceTest[20]={0x9E,0xBD,0xBB,0x53,0x7C,0x96,0xB4,0xC1,0xCE,0xEB, 
         0xFB,0x06,0x17,0x31,0x41,0x4E,0x5B,0x68,0x86,0x93}; 

它可以通過任何方法生成(事件可能會使它)

得到後,caNonceTest,像上面,字符串應當看起來像 「艋|?蹉鋿1AN並[h昍昍昍昍」

和XML發送到設備,以base64應該像「nr27U3yWtMHO6/gGFzFBTltohpPMzMzMzMzMzBQ = 「

這是正確答案的關鍵點! (不是ASCII字符串!) 此外,只給到SHA-1的功能完全相同的caNonceTest(無需轉換爲Base64)

的創建和密碼,只給到SHA-1作爲串格式(例如「2014-07-08T09:26:13Z」和「通過」)

然後,世界和平!

+0

謝謝!這幫助我弄清楚了我的問題。爲了未來其他人的利益,我已經將示例代碼放在一起:https://gist.github.com/lsowen/1a46f9d5fc026e6efc7d – lsowen

相關問題