2011-07-08 18 views
0

私は、バックグラウンドで実行され、訪問したウェブサイトやコンピュータからインターネットにアップロード/ダウンロードされたファイルのログを保持するC++プログラムを書くように言われました。将来的には、私のオフィスのLAN内のどのコンピュータからでもインターネットの使用状況を追跡できるように拡張する必要があります。C++のインターネット使用状況監視ツール

プログラムは、Windows 2000からWindows 7の

に、さまざまなWindowsオペレーティングシステム上で実行されます誰かが、この中で私を助けることができますか?

+0

あなたはスパイウェアを書き込もうとしていますか? – slaphappy

答えて

1

パケットスニッファを書く必要があります。あなたが良いパケットスニファを書いておきたいなら、それはプロジェクトには大変便利です。ネットで検索してください。はじめにC/C++ソケットライブラリについて学んでください。以下のウェブサイト。 herehere

+3

既存のものを使用してください。本当に焦点がキャプチャの分析にあるべきであるときに、はるかによく行われているものを書き直すのが非常に不十分である点は何ですか... –

1

あの...同社のWebプロキシサーバー上でその機能を実行するためにはるかに簡単ではないでしょうか?それらのほとんどはこの正確な機能を実行するためのプラグインを持っているので、実際にコードを書く必要はありません。

+0

私は、アイデアが彼が運動としてコード化する必要があると確信しています – galois

+0

@jaska - 私はそうは思わない。 「私の事務所」の部分は、これが学校の仕事ではなく、仕事の割り当てであることを明確にしています。 –

0

次のコードを使用すると、プライベートブラウジングもキャプチャされるという利点があります。

CoInitialize(NULL); 

LHook = SetWinEventHook(EVENT_OBJECT_FOCUS, EVENT_OBJECT_VALUECHANGE, 0, RT_Browsing_WinEventProc, 0, 0, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS); 

そして、コールバック関数は次のようになります。

void CALLBACK RT_Browsing_WinEventProc(HWINEVENTHOOK hWinEventHook, DWORD event, HWND hwnd, LONG idObject, LONG idChild, DWORD dwEventThread, DWORD dwmsEventTime) 
{ 
    IAccessible* pAcc = NULL; 
    VARIANT varChild; 
    HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &pAcc, &varChild); 
    if ((hr == S_OK) && (pAcc != NULL)) 
    { 
     BSTR bstrName, bstrValue; 
     pAcc->get_accValue(varChild, &bstrValue); 
     pAcc->get_accName(varChild, &bstrName); 

     char className[50]; 
     GetClassNameA(hwnd, className, 50); 

     if (bstrName && bstrValue) 
     { 
      if ((strcmp(className, "Internet Explorer_Server") == 0)) 
      { 
       if (IsValidURL(NULL, bstrValue, NULL) == S_OK) 
       { 
        if (bstrValue != E_LastURL) 
        { 
         // bstrValue will hold the new URL (Internet Explorer) 
         E_LastURL = bstrValue; 
        } 
       } 
      } 

      if ((strcmp(className, "Chrome_WidgetWin_1") == 0) && (wcscmp(bstrName, L"Address and search bar") == 0)) 
      { 
       if (IsValidURL(NULL, bstrValue, NULL) == S_OK) 
       { 
        if (bstrValue != C_LastURL && bstrValue != L"") 
        { 
         // bstrValue will hold the new URL (Chrome) 
         C_LastURL = bstrValue; 
        } 
       } 
      } 
     } 
     pAcc->Release(); 
    } 
} 
関連する問題