abciptv.co.kr 데이터 통신 - Packet Sniffer의 구현 > abciptv8 | abciptv.co.kr report

데이터 통신 - Packet Sniffer의 구현 > abciptv8

본문 바로가기

abciptv8


[[ 이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다. ]


데이터 통신 - Packet Sniffer의 구현

페이지 정보

작성일 23-02-09 07:04

본문




Download : 데이터 통신 - Packet Snif.hwp




아래 소스에는 TCP 패킷만 읽는 것이므로 IP 헤더와 TCP 헤더만을 출력 했지만, ICMP, IGMP, UDP 패킷 등등도 출력할 수 있따 또한 packet.h 의 헤더파일을 고침으로써 IP Header와 TCP header의 기본 값들을 바꿀 수 있따 예를 들면 IP header의 version이나 헤더길이 등을 사용자가 임의대로 바꿀 수 있따

//받은 패킷의 ip헤더의 정보들을 출력
//확인 응답 번호를 보냄(수신지에서 제대로 왔다고 발신지에게 알려주는 기능)

Download : 데이터 통신 - Packet Snif.hwp( 11 )





printf(resive data = %dn, ret);


순서

//(dst는 수신지의 주소 구조체)

ret = recvfrom(sock, buffer, sizeof(buffer), 0, (struct sockaddr *)&from, &len);
if (ip->protocol != PROTO_TCP)


printf(Dst ip = %sn, inet_ntoa(dst));
데이터 통신 - Packet Snif-2165_01.gif 데이터 통신 - Packet Snif-2165_02_.gif 데이터 통신 - Packet Snif-2165_03_.gif 데이터 통신 - Packet Snif-2165_04_.gif 데이터 통신 - Packet Snif-2165_05_.gif
printf(Src port = %dn, ntohs(tcp->src_port));//소스 port 출력
//체크섬 출력
printf(Checksum = 0x%Xn, ntohs(tcp->checksum));

설명
printf(TTL = %d, ip->ttl);//time to live 출력
tcp = (struct tcp_header_t *)(buffer + (4 * ip->hlen));
continue;//받은 프로토콜이 TCP이 아닌경우 경우 출력안하고 다시 읽음

printf(Total length = %dn, ntohs(ip->length));//총 길이출력
printf(Checksum = 0x%Xn, ntohs(ip->checksum));//체크썸 출력
printf(Dst port = %dn, ntohs(tcp->dst_port));//도착지 port 출력
//inet_ntoa()함수를 통해 구조체의 src를 문자열로 변환
printf(Sequence number = 0x%Xn, ntohl(tcp->seqnum));//순서 번호 출력(원본데이터가 큰 경우 이 데이터를 여러개의 세그먼트로 나누기 때문
//(src는 발신지의 주소 구조체)
//TCP 헤더의 스타트 위치를 구하기 ip 헤더의 뒤에 따라 나오므로.. 4를 곱하는 이유는 ip의 head length의 단위가 워드, 즉 4바이트 이기 때문에.
printf(Src ip = %sn, inet_ntoa(src));
데이터 통신 - Packet Sniffer의 구현
//buffer 에 패킷을 받음
printf(=============== TCP header ==============n);

이 프로그램은 로소켓을 이용한 스니퍼 프로그램 이다. 또한 packet.h 의 헤더파일을 고침으로써 IP Header와 TCP header의 기본 값들을 바꿀 수 있다. printf(Identification = %dn, ntohs(ip->id));//ip의 id 출력

//받은 패킷 크기 출력!
src.s_addr = ip->src_ip;//발신지 ip의 주소를 src.s_addr에 입력
printf(Acknowledgment number = 0x%Xn, ntohl(tcp->acknum));

//inet_ntoa()함수를 통해 구조체의 dst를 문자열로 변환


이 프로그램(program]) 은 로소켓을 이용한 스니퍼 프로그램(program]) 이다. 예를 들면 IP header의 version이나 헤더길이 등을 사용자가 임의대로 바꿀 수 있다. 로소켓의 “네트워크 계층으로 전송되는 모든 패킷을 볼 수 있는” 특성을 이용해 TCP 프로토콜의 패킷을 읽은 프로그램이다. 아래 소스에는 TCP 패킷만 읽는 것이므로 IP 헤더와 TCP 헤더만을 출력 했지만, ICMP, IGMP, UDP 패킷 등등도 출력할 수 있다. 로소켓의 “네트워크 계층으로 전송되는 모든 패킷을 볼 수 있는” characteristic(특성)을 이용해 TCP 프로토콜의 패킷을 읽은 프로그램(program]) 이다.
dst.s_addr = ip->dst_ip;//수신지의 ip 주소를 dst.s_addr에 입력

데이터 통신,Packet Sniffer의 구현,Packet Sniffer
레포트 > 공학,기술계열
//즉 TCP패킷이 아니면 다음 패킷 받기
while(1) {
printf(================ IP header ===============n);

다.
Total 41,069건 1152 페이지

검색

REPORT 73(sv75)



해당자료의 저작권은 각 업로더에게 있습니다.

www.abciptv.co.kr 은 통신판매중개자이며 통신판매의 당사자가 아닙니다.
따라서 상품·거래정보 및 거래에 대하여 책임을 지지 않습니다.
[[ 이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다 ]]

[저작권이나 명예훼손 또는 권리를 침해했다면 이메일 admin@hong.kr 로 연락주시면 확인후 바로 처리해 드리겠습니다.]
If you have violated copyright, defamation, of rights, please contact us by email at [ admin@hong.kr ] and we will take care of it immediately after confirmation.
Copyright © www.abciptv.co.kr All rights reserved.