arp packet 을 구성해서sendto로 전송이 가능한가요?
글쓴이: ktkmyfeeling / 작성시간: 금, 2013/02/15 - 3:04오후
책과 인터넷을 보고서 arp packet을 구성하여 sendto로 하여 packet 값을 전송하려고 합니다.
socket을 사용하고 있구요
socket(PF_INET, SOCK_RAW, IPPROTO_IP) 식으로 소켓을 구성하였습니다.
packet 값 역시
arphdr과 ether_arp에 자료를 저장하였구요
setsockopt(sd, IPPROTO_IP, IP_HDRINCL, &sasend, sizeof(sasend));
식으로 setsockopt를 지정하였습니다.
물론 setsockopt(sd, SOL_SOCKET, SO_BROADCAST, &sasend, sizeof(sasend));
요러게도 해봤구요.
linux가 안돼어서 unix로만 짜려구 하는데 자꾸 헛다리 짚는 듯한 기분도 들고 해서
이렇게 글 올립니다.
기본적으로 예를 든 소스는 icmp 를 이용한 ping 소스 예제에서
icmp 부분을 없에고 arphdr과 ether_arp에 값을 저장하고 sendto 하였습니다.
wireshark로 값을 확인 하고 싶은데 malformed packet 이라고 뜨네요
아직 유닉스랑 network쪽은 초보라 조언이 필요합니다.
도와 주시면 감사합니다.
Forums:
gilgil.net
IPPROTO_IP로 소켓을 생성하여 데이터를 송신하면 IP 패킷이 송신되지, ARP 패킷이 송신되지는 않습니다.
보내어진 패킷을 Wireshark로 잡아서 봤을 때 Ethernet Type이 ARP(0x0806)으로 보일 겁니다(IP패킷은 Ethernet Type이 0x0800이어야 함).
raw level socket 을 사용하지 말고, pcap을 이용해서 프로그래밍을 해 보세요.
www.gilgil.net
댓글 달기