공유기 내부에서 sniffing 질문입니다.
글쓴이: k2sguard / 작성시간: 금, 2013/02/15 - 6:22오후
공유기 내부에 패킷 캡쳐 하는 프로그램을 심어 해당 프로그램이 특정 패킷을 잡아 서버로 보내는 프로그램입니다.
소켓은 socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL)); 으로 열었구요
특정 이더넷만 잡기 위해 옵션은 setsockopt(SOCKID, SOL_SOCKET, SO_BINDTODEVICE, "eth1", strlen("eth1") + 1);
으로 하였습니다 (옵션을 주나 안주나, 다른 이더넷을 선택하나 문제는 같습니다...)
그리고 Promiscuous Mode 설정 코드가 들어가구요 (하지만 이것도 설정 하나 안하나 문제는 같습니다.)
여기서 문제점은 공유기의 포트에 꼽혀있는 장비에서 예를들어 패킷을 10개 전송하면
제가 만든 프로그램에서는 무조건 같은 패킷을 3번씩 반복해서 잡습니다. (즉 30패킷이 잡힘)
프로그램에서 잡다한것 다빼고 소켓 recv만 해도 같은 현상이 발생하구요...
다른 sdk를 사용하는 공유기 장비에 프로그램을 넣어도 같은 문제가 발생하네요.
같은 프로그램을 PC 리눅스에서 돌리면 정상적으로 돌아갑니다...
왜 하나의 패킷을 3번씩 읽는 걸까요...? 소켓 버퍼에 남아있는걸 3번 읽는 걸까요?
Forums:
댓글 달기