2012-04-24 3 views
0

TCP 클라이언트 측에서 TCP 흐름의 데이터를 가로 채고 수정할 수 있기를 원합니다. pcap의 예는 tcp packet header/payload를 구문 분석하는 방법을 보여줍니다. 하지만 tcp 클라이언트가 패킷을 읽거나 패킷을 완전히 삭제하기 전에 패킷 페이로드를 수정하려고합니다. pcap capure로 어떻게 할 수 있습니까?패킷 데이터 가로 채기 및 수정

답변

0

libpcap 또는 WinPcap에서는이를 수행 할 수 없습니다. libpcap은 지원하지 않는 OS 메커니즘 (패킷 입출력 경로의 패킷 수정을 지원하지 않고 수동 패킷 캡처 및 저수준 패킷 캡처 및 주입을 지원하는 메커니즘)과 WinPcap 드라이버를 기반으로합니다 그 종류의 OS 메커니즘.

사용중인 OS에 관계없이 네트워킹 스택을 통과 할 때 태핑 프로그램이 패킷을 수정할 수있는 방식으로 네트워킹 스택을 탭하는 일부 메커니즘을 찾아야합니다. 이러한 메커니즘은 일부 OS에는 존재하지 않을 수 있습니다. 존재하는 OS에, 존재한다면 그것은 아마도 OS 의존적이다. (libpcap의 사용 방식도 OS에 따라 다르며, libpcap은 부분적으로 응용 프로그램과의 차이점을 최대한 줄이기 위해 존재합니다.)

+0

당신은 그들이 네트워킹 스택을 통과 두드림 프로그램이 패킷을 수정할 수있는 방식으로 네트워킹 스택을 활용 지원 당신이 사용하는 어떤 OS에 어떤 메커니즘을 발견 할 것입니다. – user270398

+0

고마워, 나는 아직도 확실히 명확하지 않다. "scapy"나 "nemesis"와 같은 몇 가지 프레임 워크가있는 것처럼 보인다 ... 패킷을 "만들거나"주입 할 수있다. 기존 패킷에 대한 페이로드를 변경하는 방법을 찾거나 기존 연결에 대해 tcp 패킷을 주입합니다. "netfilter"가 Linux/BSD에서 이러한 메커니즘을 제공한다고 생각하십니까? – user270398

+0

지원하지 않기 때문에 찾을 수 없습니다. 패킷을 네트워크에 전송하여 패킷을 "주입"합니다. 수신 된 패킷이 TCP에 도달하기 전에이를 포착하고 수정 된 패킷을 TCP에 전달합니다. Netfilter를 사용하면 Linux에서 원하는 것을 할 수 있습니다. ipfirewall 또는 PF는 * BSD에서 그렇게 할 수 있습니다. –

5

위와 같이 pcap로는 가로 채기/수정을 할 수 없습니다. WinPkFilter (: 소켓 +

  • 윈도우을 IPFW 전환 :

    • 리눅스 : libnetfilter_queue +의 iptables는
    • 맥 OS가, FreeBSD의는이를 위해 다음과 같은 OS에 의존하는 기술 중 하나가 필요합니다 상업용), WinDivert (LGPL) 또는 직접 NDIS IM 또는 WFP 호출 드라이버를 작성하십시오.

    (일반 공개 : WinDivert는 내 프로젝트 임).

  • 1

    Scapy는 Python과 함께 사용되는 매우 훌륭한 도구 모음 라이브러리입니다.

    당신은 또한 당신이 특정 작업을 수행하는 scapy의 상단에서 응용 프로그램을 구축 할 수 있습니다 명령 줄

    를 통해 패킷 모니터링 및 편집의 모든 종류의 작업을 수행 할 수 있습니다.

    Scapy