2013-08-09 2 views
2

나는 이것을 검색했는데, WinPCap을 알게되었지만, 나는 아직도 내가 필요한 답을 얻지 못했다. WinPCap은 패킷을 모니터링 할 수 있으며 프로세스에 대한 트랙을 제공하지 않는 것처럼 보입니다.특정 프로세스에서 모든 HTTP 요청을 캡처하는 방법은 무엇입니까?

내 응용 프로그램이 특정 프로세스 (일반적으로 나중에 정의 할 브라우저의 요청)를 모두 경청하고 필요할 경우 수정하도록합니다.

는 내 응용 프로그램은 원래 델파이로 작성되어 있지만, C++에서 어떤 도움도 멋질 것입니다. 아무도 도와 줄 수 있습니까?

편집 1 : 나는 당신이 필요 은 WinPcap에 따라 나에게 대답을 기대하지 않습니다 물론!

+0

WinPCap 수준에 이르면 패킷의 출처를 99 % 확신 할 수 있습니다. 각 패킷이 들어 오거나 나올 때마다 패킷을 가져 오는 드라이버 제품입니다. 그 시점에서 어떤 프로세스가 "손실"되었는지를 알 수 있습니다. –

+4

나는 단지 답을 모를 때 어떤 사람들이 질문을 끝내기로 투표 할 때 그것을 싫어한다 !! 이 질문에 무엇이 잘못 되었습니까? – Javid

+0

@MatsPetersson : 아마도 * WinPCap *이 그렇게 할 수 없기 때문에 도움이 될만한 라이브러리를 찾고 있습니다. – Javid

답변

3

은 어떤 종류의 HTTP 프록시 설정 요구 사항

  • 의 당신이 얻을 필요가 얼마나 낮은 수준에 내가 생각할 수있는 아이디어, 따라 수와 다른 매개 변수가 있습니다. 이것은 당신이 직접 작성하고 사용할 브라우저를 구성 할 수 있습니다. 또는 Fiddler와 같은 것일 수 있습니다. Fiddler가 자신 만의 기능을 플러그인 할 수 있는지 확신 할 수 없습니다. 그렇지 않다면, 오픈 소스라면 원하는대로 할 수 있습니다.

  • 기존 브라우저 플러그인 메커니즘을 살펴보십시오. 예를 들어 IE에는 BHO (Browser Helper Objects)가 있습니다. TBH 다양한 플러그인 메커니즘이 정확히 무엇인지는 잘 모르겠습니다. 브라우저에서 네이티브 코드를 실행하면 임의의 API를 연결할 수 있습니다 (아래의 Detours 참조)

  • MS user-level hooking mechanism을 사용하여 대상 프로세스에 코드 (.dll)를 삽입합니다. 특정 이름 (예 : iexplore.exe)과 다른 속성으로 만 프로세스에로드되도록 후크를 구성 할 수 있습니다. 최악의 경우, 모든 프로세스를 연결 한 다음 프로세스가 연결하려는 프로세스가 아닌 경우 DllLoad 보석 상자에 넣을 수 있습니다. 후크의 DllLoad에서 Detours과 같은 진입 점 연결 메커니즘을 사용하여 네트워크 API 세트를 자신의 기능과 연결합니다. 그런 다음 프로세스가 해당 네트워크 API를 호출 할 때마다 호출 된 DLL의 함수가됩니다. 원하는 모든 작업 (예 : 전송되는 데이터 수정)을 수행 한 다음 실제 메소드를 호출 할 수 있습니다. 예를 들어 IE는 winsock을 사용하는 wininet을 사용하는 WinHTTP를 사용합니다. 네트워킹 (다른 API에는 해당되지 않음)을 여러 번했지만 메커니즘 자체는 간단합니다.

  • 모든 트래픽을 걸러 내기 위해 어떤 종류의 네트워크 드라이버를 만드십시오. 현재 세부 사항을 고려하지 않고도 커널 모드에서도 트래픽이 어떤 프로세스인지 파악할 수 있어야합니다. 나는 정확히 기억할 수는 없지만 Window (NT의) 네트워크 스택에는 사용자 모드 드라이버가 있다고 생각합니다.

VPN과 같은 소프트웨어가 많이 있습니다. 프로세스 별 필터링을 포함하여 확실히 가능합니다. 항상 염두에 두어야 할 점은 운영자 권한 (관리자 권한)을 원하는 경우 원하는대로 할 수 있다는 것입니다. 특정 모바일 OS와는 달리, 데스크톱 OS에서는 OS와 하드웨어를 소유하고 있으며 자신의 자산으로 원하는 것을 수행 할 권한을 요청하지 않아도됩니다. 얼마나 힘들고 얼마나 오래 걸릴지에 대한 문제 일뿐입니다 ...

5

WinPCap을 사용하면 캡처 된 각 패킷에 대한 원본 및 대상 IP/포트 쌍에 액세스 할 수 있습니다. OS의 TCP 테이블 (Windows에서는 GetTcpTable2()GetTcp6Table2()을 사용할 수 있음)을 반복하여 쌍을 찾을 수 있으며 일치하는 항목을 찾으면 해당 연결을 소유 한 프로세스 ID를 알 수 있습니다. 그러면 해당 ID에서 OS (파일 이름 등)에서 해당 프로세스에 대한 추가 정보를 추출 할 수 있습니다.

+0

WinPCap이 가지고있는 가장 성가신 문제는 WiFi 연결에 문제가 있다는 것입니다. 예를 들어 내 인터넷 연결을 인식 할 수 없습니다. :/ – Javid

0

SnoopSpy3 응용 프로그램을 사용해보십시오. http://www.snoopspy.com/778 도움이되기를 바랍니다.

+1

이것이 Asker에게 어떻게 도움이되는지 자세히 설명해 주시겠습니까? 그녀는 프로그래밍 방식으로 패킷을 듣고 편집 할 것을 요구합니다. – FabienAndre

+0

SnoopSpy 3은 오픈 소스 프로젝트입니다. https://github.com/gilgil1973/snoop90 –

관련 문제