Что такое формула ONVIF #PasswordDigest

Я работаю над ONVIF отправки "GetDeviceInformation". Это требуется wsse:UsernameToken. После поиска данных для авторитетности, есть два faormula:

(1) от "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 ) )

Я в замешательстве!! какой из них правильный?

Более того, когда я тестирую инструмент тестирования ONVIF от wireshark

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> имя пользователя: "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 ответ

Решение

Наконец, устройство отправить ОК мне!

После ссылки на gSoap

Во-первых, формула имеет вид:

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

для Nonce это должно быть 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" и "pass")

тогда мир во всем мире!

Другие вопросы по тегам