在firebreath中使用GetAuthenticationInfo获取用户/密码的问题

时间:2013-07-01 13:23:03

标签: google-chrome-extension firefox-addon basic-authentication npapi firebreath

我正在尝试使用NpapiBrowserHost.GetAuthenticationInfo方法从Firebreath插件获取用户/密码。

我需要为基于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&amp; Firefox返回err = NPERR_GENERIC_ERROR, 和ulen = 0,plen = 0(用户名,密码 - 坏ptr)。

此代码从MypluginamePlugin :: onPluginReady()执行。

如果您成功获取凭据,请发布代码示例。

根据铬源的PS Chrome尚未实施NPN_GetAuthenticationInfo https://code.google.com/p/chromium/issues/detail?id=23928

1 个答案:

答案 0 :(得分:2)

在Firefox中我应该使用 -1代替80代表http(443代表https)

简单地说FF的密码管理服务将所有信息存储在一个hashmap中: Map entry =((auth。对象的关键字),(具有单个用户身份验证信息的对象))

每个键都是一个字符串,如下所示:(一些专业人员)+(方案)+“://”+(主持人)+“:”+(端口)。
FF在创建新地图条目时用-1替换INTERNET_DEFAULT_HTTP_PORT = 80(INTERNET_DEFAULT_HTTPS_PORT = 443)。

在Opera中,最初一切正常。

在Chrome中,浏览器端端点功能自2009年创建存根以来未实现。

在IE中,npapihost不可用。虽然我甚至不必弄乱登录/密码提取,因为默认的CInternetSession(wininet包)构造函数会自动执行。