여러가지 방법이 있습니다만,
libipq를 사용해보세요.
1) netfilter의 iptables 유틸리티를 이용해 잡고자 하는 패킷을 기술하고(또는 libiptc 라이브러리로 이용해 기술할 수도 있습니다) 이를, QUEUE 타겟으로 룰을 등록하고(이 순간이후 조건에 맞는 모든 패킷은 QUEUE로 보내집니다.)
2) 사용자 영역에서 libipq를 이용해서(라이브러리지요) QUEUE에서 읽기대기하면 커널이 보내온 패킷을 수신하게 됩니다.
3) 수신된 패킷을 적절히 핸들링하고...(필터링/변경등)
4) 다시 커널로 inject하면 됩니다.
Netfilter 쪽을 공부를
Netfilter 쪽을 공부를 해보시죠..
흐음...
여러가지 방법이
여러가지 방법이 있습니다만,
libipq를 사용해보세요.
1) netfilter의 iptables 유틸리티를 이용해 잡고자 하는 패킷을 기술하고(또는 libiptc 라이브러리로 이용해 기술할 수도 있습니다) 이를, QUEUE 타겟으로 룰을 등록하고(이 순간이후 조건에 맞는 모든 패킷은 QUEUE로 보내집니다.)
2) 사용자 영역에서 libipq를 이용해서(라이브러리지요) QUEUE에서 읽기대기하면 커널이 보내온 패킷을 수신하게 됩니다.
3) 수신된 패킷을 적절히 핸들링하고...(필터링/변경등)
4) 다시 커널로 inject하면 됩니다.
*libipq 매뉴얼이나, 문서등을 보면 간단한 예제도 있으니, 참고하시길.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
커널레벨에서 직접
커널레벨에서 직접 하시려면 netfilter훅을 이용하세요.
아니면 netfilter 타겟으로 만들어도 되죠. SNAT, DNAT등 주소변환하는 타겟들을 보시면 참고가 될겁니다.
모듈 프로그래밍..
넷필터 후킹포인트에서 skb_buff 구조체로 패킷을 가져올수 있습니다.
후킹포인트는 첨부파일 참조 하시면 될껍니다.
아래 문서 한번 읽어보시면 도움이 될듯합니다.
http://www.zdnet.co.kr/builder/platform/nix/0,39031679,39136665,00.htm
윈도우에서도...
저도 packet을 허용, 드랍하는 정책을 이용하는 방화벽을 윈도우상에서 만들어보려고하는데 netfilter는 리눅스 모듈인거 같더라구요.
윈도우7기준으로 방화벽 어플을 만들어보려면 어떤걸 찾아봐야할까요?
Winpcap같은건 스니핑만 되고 수정, 드랍같은건 안되는거 같은데...
댓글 달기