Что такое формула 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")
тогда мир во всем мире!