什么是ONVIF #PasswordDigest的公式

时间:2014-06-27 04:14:17

标签: onvif

我正在研究发送“GetDeviceInformation”的ONVIF。这需要wsse:UsernameToken。 在搜索权限数据后,有两个faormula:

(1)by“ONVIF-Core-Specification-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测试ONVIF测试工具时

我得到的XML:

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

好的,然后我试着通过这些数据找出公式。

A&GT;用户名:“admin”

B个密码:“通过”(取消熵)

c取代; Nonce:“TgBYFHxSc3Oo8yPzwnQn8A ==”

d取代;创建:“2014-06-20T04:41:45Z”

以某种方式获得最终密码:“ lu9ywjDwSt8oW7M4tMjCb50 / xRg =

“nonce”可能会被Base64转换为原来应该是“4E0058147C527373A8F323F3C27427F0”

我尝试使用

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

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

但我仍然无法将测试工具发送的密码作为“lu9ywjDwSt8oW7M4tMjCb50 / xRg =”

任何人都可以帮我弄清楚ONVIF测试工具使用的确切公式是什么?

需要你的帮助!!!谢谢!

1 个答案:

答案 0 :(得分:1)

最后,设备发送给我好!

参考gSoap后

首先,公式为:

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

对于Nonce,它应该是20字节随机&#34;数字&#34;价值为:

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

它可以通过任何方法生成(事件可以成为它)

获得后, caNonceTest ,如上所述,该字符串应该看起来像&#34;艋|蹉鋿1AN [h?昍昍昍昍&#34;

并且对于发送到设备的XML,base64应该像&#34; nr27U3yWtMHO6 / gGFzFBTltohpPMzMzMzMzMzBQ =&#34;

这是正确进行的关键点! (不是ASCII字符串!) 此外,只需输入sha-1函数就像 caNonceTest 一样(不需要转换为Base64)

对于创建的密码,只需将sha-1作为字符串格式提供(例如&#34; 2014-07-08T09:26:13Z&#34;&#34;传递&#34;)

那么,世界和平!

相关问题