libpcap을 사용하여 패킷을 스니핑 한 후 내 네트워크에 IP 주소 (연결) 목록을 저장하고 각 연결에 대해 TCP 상태 전이를 저장하려고합니다. .내 네트워크에서 TCP 상태 전환으로 IP 주소 목록 저장
연결된 목록을 사용할 수 있습니까? 그렇다면 어떻게?
libpcap을 사용하여 패킷을 스니핑 한 후 내 네트워크에 IP 주소 (연결) 목록을 저장하고 각 연결에 대해 TCP 상태 전이를 저장하려고합니다. .내 네트워크에서 TCP 상태 전환으로 IP 주소 목록 저장
연결된 목록을 사용할 수 있습니까? 그렇다면 어떻게?
예는
libpcap의이 패키지
알고
을 캡처하는 무차별 모드에서 NIC에 대한 액세스 권한을 부여하는 오픈 소스 C 라이브러리입니다 가능? 노하우를 들어, 난 그냥이 기억 :- you can developed
- use tcpdump and write a condition to capture and export to a file
- use wireshark and write a condition to capture and export to a file
을 snifex.c는 콜백 함수에서 좋은 출발 (http://www.tcpdump.org/pcap.html)
입니다 :
got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet);
포인터 * ip는 ip 헤더의 시작을 가리 킵니다.
ip = (struct sniff_ip*)(packet + SIZE_ETHERNET);
여기서 IP 주소 정보를 찾을 수 있습니다. 정적 버퍼를 사용하는 것처럼 inet_ntoa에 대한 호출을 분리해야합니다. cmd 또는 파일에 출력을 표시하려는 경우 두 개의 printf 호출을 사용해야합니다. 그들이 snifex.c 별도의 라인에있는 이유입니다 : 당신은 TCP 포인터
tcp = (struct sniff_tcp*)(packet + SIZE_ETHERNET + size_ip);
사용하여 TCP 플래그를 사용할 수있는 TCP 정보
printf(" From: %s\n", inet_ntoa(ip->ip_src));
printf(" To: %s\n", inet_ntoa(ip->ip_dst));
TCP-> th_flags 연결을 찾을 수 상태, 예 tcp->th_flags==TH_SYN
RFC793 TCP/IP 상태 다이어그램을 확인하여 TCP 프로토콜의 상태를 확인해야합니다.
구현 측면에서 O (1) (최상의 경우)를 갖기 위해 각 4- 튜플 (srcIP, dstIP, srcPort, dstPort)에 대해 해시 배열을 사용할 수 있습니다. 중간 스트림 트래픽이나 half-open TCP 연결 등을 볼 수있는 경우가있을 수 있습니다. RFC는이를 처리하는 방법을 자세히 설명합니다.
마지막으로 TCP 프로토콜을 구현하지 않으려는 경우 Linux 2.0.x의 IP 스택을 에뮬레이트하는 Libnids 라이브러리를 사용하여 IP 조각 모음 및 TCP 스트림 어셈블리를 제공 할 수 있습니다.
답장을 보내 주셔서 감사합니다. sniffex.c 프로그램에 TCP 연결을 사용하여 네트워크의 스니핑 IP 주소를 저장하고 싶습니다. –
먼저 을 인쇄 한 다음 을 필터링 한 다음 파일로 내보내는 함수를 만듭니다. – F3rr31r4