1

我想從Firebreath插件使用NpapiBrowserHost.GetAuthenticationInfo方法獲取用戶/密碼。Firebreath中獲取用戶名/密碼與GetAuthenticationInfo問題

我需要爲基於npapi的瀏覽器(chrome/firefox/opera)執行此操作。所以這是我的代碼:

boost::shared_ptr<FB::Npapi::NpapiBrowserHost> npapihost = 
    FB::ptr_cast<FB::Npapi::NpapiBrowserHost>(m_host); 
if(npapihost) 
{ 
     char * username = NULL; uint32_t ulen = 0; 
     char * password = NULL; uint32_t plen = 0; 
     NPError err = npapihost->GetAuthenticationInfo("http", 
               "xxx.yyy.com", 
               80, 
               "Basic", 
               "Knownnameofrealm", 
               &username, &ulen, 
               &password, &plen); 

}

在Opera它的工作原理。在Chrome & Firefox中,它返回err = NPERR_GENERIC_ERROR, 和ulen = 0,plen = 0(用戶名,密碼 - 壞ptr)。

此代碼從MypluginamePlugin :: onPluginReady()執行。

如果您成功獲取憑證,請張貼代碼示例。

PS鉻根據鉻源還沒有實現NPN_GetAuthenticationInfo https://code.google.com/p/chromium/issues/detail?id=23928

+0

值得注意的是,這是一個比firebreath更多的npapi問題,因爲該函數只是NPN_GetAuthenticationInfo的一個直通 – taxilian

回答

2

在Firefox應該使用-1,而不是80用於HTTP(https爲443)

簡單講FF的密碼管理服務存儲了所有它是一個HashMap內部消息: 映射條目=(。(關鍵AUTH對象),(單用戶認證信息)的對象)

每個鍵是一個字符串創建如下:(一些親的東西)+(方案)+「://」+(主機)+「:」+(端口)。
FF替換INTERNET_DEFAULT_HTTP_PORT = 80(INTERNET_DEFAULT_HTTPS_PORT = 443),同時創建新的映射條目。

在Opera中最初一切正常。

在Chrome瀏覽器端的端點功能不包括在2009年

因爲存根創建實現在IE npapihost不可用。雖然我甚至不必擔心登錄/密碼提取,因爲默認的CInternetSession(wininet包)構造函數自動完成。

+0

有關更多信息,請參閱以下資源:http://mxr.mozilla。 org/mozilla-central/source/netwerk/base/src/nsStandardURL.cpp,http://mxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/nsHttpAuthCache.cpp#114 – Rostig

+0

那些志願者在chrome中添加缺少npapi功能的文件可以從以下文件開始:https://code.google.com/p/chromium/codesearch#chromium/src/webkit/plugins/npapi/plugin_host.cc&q=bug%2023928&sq=package:chromium&dr = C&L = 1049 – Rostig

相關問題