데이터 통신 - Packet Sniffer의 구현
페이지 정보
작성일 23-02-08 16:27
본문
Download : 데이터 통신 - Packet Sni.hwp
exit(1);
데이터 통신 - Packet Sniffer의 구현
데이터 통신, Packet Sniffer의 구현
perror(Could not set the PROMISC flag : );
ifr.ifr_flags |= IFF_PROMISC;
//로소켓 생성( PF_INET:인터넷(Internet) 프로토콜 , SOCK_RAW 는 로소켓을 만들겠다는 의미!,IPPROTO_TCP 라는 프로토콜을 사용하겠다는 지정)
다.
perror(SIOCGIFFLAGS error : );
설명





}
//모든 프레임에 대해 다 받아들이게 됨.
}
if (ioctl(sock, SIOCSIFFLAGS, &ifr) < 0) {
exit(1);
순서
레포트 > 공학,기술계열
if(ioctl(sock, SIOCGIFFLAGS, &ifr) < 0) {
Download : 데이터 통신 - Packet Sni.hwp( 30 )
sock = socket(PF_INET, SOCK_RAW, IPPROTO_TCP);
struct tcp_header_t *tcp;//tcp header 선언
이 호로그램은 로소켓을 이용한 스니퍼 호로그램 이다. 로소켓의 “네트워크 계층으로 전송되는 모든 패킷을 볼 수 있는” 특성을 이용해 TCP 프로토콜의 패킷을 읽은 프로그램이다. 예를 들면 IP header의 version이나 헤더길이 등을 사용자가 임의대로 바꿀 수 있다. 또한 packet.h 의 헤더파일을 고침으로써 IP Header와 TCP header의 기본 값들을 바꿀 수 있다. 아래 소스에는 TCP 패킷만 읽는 것이므로 IP 헤더와 TCP 헤더만을 출력 했지만, ICMP, IGMP, UDP 패킷 등등도 출력할 수 있다. 또한 packet.h 의 헤더파일을 고침으로써 IP Header와 TCP header의 기본 값들을 바꿀 수 있다. 예를 들면 IP header의 version이나 헤더길이 등을 사용자가 임의대로 바꿀 수 있다.
strncpy(ifr.ifr_name, interface, strlen(interface)+1);
//이더넷 디스크 드라이버에 promisc 모드를 설정하기 위해! 이 모드가 설정되면
이 프로그램은 로소켓을 이용한 스니퍼 프로그램 이다. 아래 소스에는 TCP 패킷만 읽는 것이므로 IP 헤더와 TCP 헤더만을 출력 했지만, ICMP, IGMP, UDP 패킷 등등도 출력할 수 있다. 로소켓의 “네트워크 계층으로 전송되는 모든 패킷을 볼 수 있는” 특성(特性)을 이용해 TCP 프로토콜의 패킷을 읽은 호로그램이다.