獲取網頁中的密碼和文字輸入框的內容 (轉)

gugu99發表於2007-08-17
獲取網頁中的密碼和文字輸入框的內容 (轉)[@more@]

介紹
網頁中的密碼輸入框和一般不同,他沒有控制程式碼之類的,但是可以透過IE的IHTMLInputTextElement介面獲取!

本文是教你如何得到網頁中輸入框的內容。如何你想獲取網頁中的密碼,則只要把if (lstrcmpi(strtype, _T("TEXT")) == 0) 改成if

(lstrcmpi(strtype, _T("PASS")) == 0) 就可以了,如果你要是再加個實時監視的話,就成了密碼竊取了咯!
 
 主要思路:獲取IE的IHTMLInputTextElement介面,這樣就可以獲取網頁中的輸入框(包括文字和密碼輸入框)的內容了。
 
 警告:本程式碼只用作學習和測試的使用,嚴禁用於商業或者用途,否則一切後果與本人無關!

 如果要轉載,請與作者聯絡!
 Copyright (C) 2002. All Rights Reserved.
 



 VARIANT id, index;
  CComPtr spDispatch;
  CComQIPtr pDoc2;
  CComQIPtr pElement;
  CComPtr pElementCol;
  CComPtr pFormElement;
  CComPtr pInputElement;

//首先獲取IBrowser2介面
CoInitialize(NULL); //必須要這句初始化
SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);
if (m_spSHWinds == NULL)
{
 if (m_spSHWinds.CreateInstance(__uuidof(SHDocVw::)) != S_OK)
 {
  MessageBox("Failed");
  CoUninitialize();
 
 }
}

if (m_spSHWinds)
  {
 int n = m_spSHWinds->GetCount();
 for (int i = 0; i < n; i++)
 {
  _variant_t v = (long)i;
  IDispatchPtr spDisp = m_spSHWinds->Item(v);

  SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);  //生成一個IE視窗的智慧指標
  if (spBrowser)
  {
//獲取IHTMLDocument2介面
if (SUCCEEDED(spBrowser->get_Document( &spDispatch)))
  pDoc2 = spDispatch;
 if(pDoc2!=NULL)
 {
 // AfxMessageBox("已經獲取IHTMLDocument2");
 if (SUCCEEDED(pDoc2->get_forms(&pElementCol)))
 {
 // AfxMessageBox("已經獲取IHTMLElementCollection");
 long p=0;
 if(SUCCEEDED(pElementCol->get_length(&p)));
  if(p!=0)
  { 

 for(long i=0;i<=(p-1);i++)
 {

 V_VT(&id) = VT_I4;
 V_I4(&id) = i;
 V_VT(&index) = VT_I4;
 V_I4(&index) = 0;

 if(SUCCEEDED(pElementCol->item(id,index, &spDispatch)))
 

if(SUCCEEDED(spDispatch->QueryInterface(IID_IHTMLFormElement,(void**)&pFormElement)))
 {
 // AfxMessageBox("已經獲取IHTMLFormElement");
 long q=0;
  if(SUCCEEDED(pFormElement->get_length(&q)));
 for(long j=0;j<=(q-1);j++)
 {
 V_VT(&id) = VT_I4;
 V_I4(&id) = j;
 V_VT(&index) = VT_I4;
 V_I4(&index) = 0;
  if(SUCCEEDED(pFormElement->item(id,index, &spDispatch)))

 

if(SUCCEEDED(spDispatch->QueryInterface(IID_IHTMLInputTextElement,(void**)&pInputElement)))
  {
 //AfxMessageBox("已經獲取IHTMLInputTextElement");
  CComBSTR value;
  CComBSTR type;
  pInputElement->get_type(&type);//獲取輸入框型別(密碼框還是文字框)
 
  CString strtype(type);
  strtype.MakeUpper();
 if (lstrcmpi(strtype, _T("TEXT")) == 0)
 {
 pInputElement->get_value(&value);//獲取文字框的值
 CString strvalue(value);
 AfxMessageBox(strvalue);
  }
  }
 }
 }
 }
  }
 
}

  注意:具體細節請看原始程式碼!最好不要向作者要技術支援!謝謝閱

讀! to:TanXin79@163">TanXin79@163.net,文章的:

/ibr_/791.rar">


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-963546/,如需轉載,請註明出處,否則將追究法律責任。

相關文章