2014-01-23 6 views
11

golang으로 tcp packet sniffing에 관한 질문이 있습니다. 우리는 파이버 탭에서 오는 모든 들어오는 TCP 패킷을 캡처하는 작은 도구를 작성했습니다.Golang의 Raw Socket Sniffing

현재 구현은 Linux에서 libpcap 랩퍼를 사용합니다. 이 도구를 Windows로 포팅해야합니다. 물론, 지금은 불가능합니다.

제 질문은 패킷을 스니핑하기위한 크로스 플랫폼 솔루션이 있습니까? TCP 패킷, IP 헤더, 이더넷 데이터가 필요없고 libpcap의 모든 기능 만 필요합니다.

크로스 플랫폼 솔루션이 없으면 두 가지 코드 구현도 괜찮습니다. 나는 리눅스에서 원시 소켓을 사용할 수 있다는 것을 알고있다. Golang은 원시 소켓을 지원합니까? 소켓이있는 패킷을 스니핑하는 예제 구현이 있습니까?

탱크! :-)

+0

"현재 Linux에서는 libpcap wrapper를 사용하고 있으므로이 도구를 Windows로 포팅해야합니다. 물론 현재로서는 불가능합니다." 아마도 [WinPcap] (http://www.winpcap.org)이 어떤 이유로 작동하지 않을 것이므로, 맞습니까? –

답변

7

ipv4 packagego.net에서 사용할 수 있어야합니다.

패키지의 IPv4 인터넷 프로토콜 버전 4

ipv4.RawConn 유형에 대한 IP 수준 소켓 옵션을 구현하고이 방법은 크로스 플랫폼을 작동해야 연관된.

RawConn은 IPv4 전송을 사용하는 패킷 네트워크 끝점을 나타냅니다. IPv4 헤더 조작을 포함하여 여러 IP 레벨 소켓 옵션을 제어하는 ​​데 사용됩니다. 또한 OSPF, GRE와 같은 IPv4 데이터 그램을 직접 처리하는 IPv4 및 상위 계층 프로토콜과 관련된 데이터 그램 기반 네트워크 I/O 방법을 제공합니다.

ipv6에 해당하는 패키지가 있습니다.