libpcap라이브러리내에는 패킷을 캡쳐하는 부분을 포함하고 있습니다.
이 라이브러리를 사용하여 패킷을 캡쳐하고, 님이 원하는 부분을 검사하고,
해당 부분을 저장등을 하면 되겠습니다.
참고로, tcpdump처럼 캡쳐한 패킷을 보여주는 프로그램도 이 라이브러리를 사용하여 작성할 수 있습니다.
* 절차
0) 구글가서 libpcap치고 검색하여 libpcap홈페이지로 간다.
1) libpcap라이브러리를 받는다.(윈도우라면 winpcap)
2) 컴파일 설치한다.
3) 라이브러리 매뉴얼 및 예제 프로그램을 본다.
4) 원하는 기능을 이 라이브러리를 사용하여 구현한다.
자세히는 모르지만...
이더넷에서 패킷을 받는건 NIC의 디바이스 드라이버 아닌가요?
장치드라이버와 커널이 서로 통신을 하고, 커널은 해당 프로세스의 포트로
구분을 하여 패킷에 해당하는 통신선로에 소켓기술자를 할당하여 응용
프로세스와 통신하는 걸로 알고 있는데... ㅡ,.ㅡ;;
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
Re: ethernet protocol에서 패킷을 받으려고 하는데요..
운영체제별로 세팅하는 옶션이 상이한것으로 알고 있습니다.
커널을 공부하시는게 아니라면, libpcap, winpcap을 추천합니다.
플랫폼에 무관한 라이브러리이고 제가 보기에는 좋습니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
제가 잘 모르고 있었나봅니다.
어찌되었건 ethernet 단에서 packet을 받아야합니다.
목적은 dhcp에서 오는 메시지의 field값을 구해내는게 목적인데..
저는 지금 패킷 캡쳐를 하는 프로그램을 써서 내용을 확인해 보는게 아니라
field를 알아내서 특정변수에 저장하는 함수를 만들려고 합니다.
패킷을 어디서 받아야 할지 어떻게 어떤 함수를 사용해야 할지 모르겠네요
조금더 자세히 알려주실 순 없나요?
얼핏 들은 바로는 sk buff구조체에서 알아내야한다고 한거 같은데..
답변주셔서 감사합니다. 또 답변 주시면 감사하겠습니다.
Layer 2에서의 packet이 필요하신거라면..
질문을 정확히 이해한건지는 모르겠습니다만,
Layer 2(Mac layer)에서의 패킷이 필요하다면,
가장 손쉬운 방법은 가지고 있는 Network Device Driver내에서
보면 될것같습니다.
Network Device Driver 코드에서, interrupt()에 해당하는 부분중
패킷을 수신했을때를 처리하는 부분을 찾아서, 거기서 skb_clone() 같은
함수를 사용할수도 잇겠네요..아니면 그냥 해당 sk_buff구조체의 필드값들을
그냥 확인만 할수도 있겠구요..
다만 device driver내의 코드를 손본다는건 언제나 위험부담이 잇겠죠?
시스템이 뻗어버리는 경우도 흔할테니까요..
조금이나마 도움되었길 빌며..
성공하시길 바랍니다.
Follow the way of your heart
And whatever your eyes see,..
Re: 제가 잘 모르고 있었나봅니다.
libpcap라이브러리내에는 패킷을 캡쳐하는 부분을 포함하고 있습니다.
이 라이브러리를 사용하여 패킷을 캡쳐하고, 님이 원하는 부분을 검사하고,
해당 부분을 저장등을 하면 되겠습니다.
참고로, tcpdump처럼 캡쳐한 패킷을 보여주는 프로그램도 이 라이브러리를 사용하여 작성할 수 있습니다.
* 절차
0) 구글가서 libpcap치고 검색하여 libpcap홈페이지로 간다.
1) libpcap라이브러리를 받는다.(윈도우라면 winpcap)
2) 컴파일 설치한다.
3) 라이브러리 매뉴얼 및 예제 프로그램을 본다.
4) 원하는 기능을 이 라이브러리를 사용하여 구현한다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
libpcap 사용법과 예제 입니다.참고하세요.http://k
libpcap 사용법과 예제 입니다.
참고하세요.
http://kldp.org/KoreanDoc/html/Libpcap-KLDP/
비 온 뒤에 땅이 굳어진다는 말은 다 거짓말이다.
^^ 커널 패킷 필터링을 하려 하시는군요.
libcap이나 wincap은 필터링이 아니라 후킹하는 작업입니다.
일단 리눅스에서는 netfilter부분을 참조하면 쉽게 알수 있을거 같읍니다.
BSD계열은 bpffiltering(??)인가
Windows는 NDIS를 참조 하면 될것 같군요..
윈도우즈는 잘 몰라서 ^^
저의 질문 내용을 제가 잘 표현하지 못했나봅니다.그럼 무엇때문에
저의 질문 내용을 제가 잘 표현하지 못했나봅니다.
그럼 무엇때문에 이런걸 하려는지 말씀드리겠습니다.
현재 dhcp와 연관지어서 무선랜의 ap 새로운 개발을 하던중
dhcp의 패킷이 ip단까지 올라오지 않는 일이 생기게 되어서..
그 밑에단에서 dhcp packet의 field 값을 알아내야 하는 사태가 생기게 된것입
니다..
네트웍 관련일을 시작한지 얼마 안되 초짜이기도 하고...
소켓프로그래밍을 잠깐 해본적밖에 없어서...참 난감하더군요..
[quote="우성"]현재 dhcp와 연관지어서 무선랜의 ap 새로운
이더넷의 패킷을 모니터링 및 분석해주는 도구들을 먼저 사용해 보세요.
추천하나 하면,
http://ethereal.ntop.org/introduction.html#screens
입니다.
간단히 부연하면 위 도구는 393개의 프로토콜 분석을 지원해주는데, 그중 DHCP도 당근 포함되어 있군요. 위 프로그램도 결국 libpcap을 사용한것으로 압니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기