我正在尝试使用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
答案 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包)构造函数会自动执行。