kernel level에서 packet을 잡아 볼려면 어떻게 해야할지요.

rain의 이미지

kernel level에서 packet을 잡아 볼려면 어떻게 해야할지요.
조언 부탁드려요.

whizzm의 이미지

netfilter라는것이 있구요. ^^
쉽게 적용이 가능하구요. (문서가 많답니다.)

또. NIC 드라이버를 수정하는것입니다.

에... 또. 커널내 네트워크관련 모듈을 수정하는것도 방법이 되겠습니다..

socket_buff 요넘을 따라다니시면 잡을때를 아시겠지요.

octo16의 이미지

Key word만 몇 개 알려드리죠...
자세한 건 커널 소스를 아래 키워드를 중심으로 보시면 알게되실 듯...
그래도 모르겠으면, 내공을 좀 더 키우심이...^^

1. struct sk_buff
2. struct packet_type
3. struct net_device
4. dev_add_pack()
5. dev_set_promiscuity()
6. dev_get_by_name()
7. dev_remove_pack()

이 정도 함수와 구조체를 가지고 kernel 모듈로 작성하시면 몇 라인 안가지고
작성하실 수 있을 겁니다...^^

스스로 알아가는 재미가 더 좋죠?