2012-02-06 4 views
0

나는 C로 무선 패킷 스니퍼 프로그램을 작성하고 있습니다. airmon-ng를 사용하여 모니터 모드로 무선 인터페이스를 설정 했으므로 "mon0"인터페이스에서 스니핑 중입니다. 리눅스 (우분투 10.10)를 사용하고 있습니다.pcap, MAC 주소 필터를 사용하여 무선 스니핑

MAC 주소를 패킷 필터로 설정하고 싶습니다. 나는 아래와 같이했을하지만 을 말한다

pcap_lookupnet(dev,&net,&mask,errbuf); 
    printf("%s\n",errbuf); 
    /* Open the session in promiscuous mode */ 
    handle = pcap_open_live(dev, BUFSIZ, 1, 1000, errbuf); 
    if (handle == NULL) { 
     printf("Couldn't open device %s: %s\n", dev, errbuf); 
     return 2; 
    } 
    if(pcap_compile(handle,&fp,argv[0],0,net)==-1){ 
     fprintf(stderr,"Error calling pcap_compile\n");exit(1);} 
    if(pcap_setfilter(handle,&fp) == -1){ 
     fprintf(stderr,"Error setting filter\n");exit(1);} 
    /* The call pcap_loop() and pass our callback function */ 
    pcap_loop(handle, 10, my_callback, NULL); 

내가 MAC 주소 필터를 설정하는 방법, 저를 도와주세요 "mon0에는 IPv4 주소가 할당되지"?

답변

5

"no IPV4 address assigned"는 pcap_lookupnet()의 오류입니다. 즉, 캡처하려는 네트워크 인터페이스에 할당 된 IPv4 주소가 없다는 것입니다. airmon-ng이 한 일은 Wi-Fi 어댑터 용 "모니터"인터페이스를 만드는 것이 었습니다. 어댑터의 일반 네트워크 인터페이스에는 할당 된 IP 주소가있을 수 있지만 모니터 인터페이스에는 IP 주소가 할당되지 않습니다.

IP 주소가 중요한 곳은 ip broadcast 필터 식입니다. IPv4 브로드 캐스트 주소를 필터링하지 않으면 (아마 그렇지 않을 수도 있습니다) IPv4 주소를 가져올 필요가 없습니다. pcap_compile() man 페이지에서 인용 :

하는 경우를 패킷이 프로그램에 패킷이 리눅스 "어떤"의사 인터페이스에 포착되는 경우, 또는 그 수 알려져 있지 않다 포착되고있는 네트워크의 넷 마스크 둘 이상의 네트워크에서 캡처 할 경우 값 0을 제공 할 수 있습니다. IPv4 브로드 캐스트 주소에 대한 테스트는 올바르게 수행되지 않지만 필터 프로그램의 다른 테스트는 모두 정상입니다.

따라서 "net"인수로 0을 pcap_compile()에 전달하십시오.

특정 MAC 주소로 전송되는 패킷을 검색하려면 wlan dst XX:XX:XX:XX:XX:XX을 사용할 수 있습니다. 전송되는 패킷을 검색하려면 특정 MAC 주소에서 wlan src XX:XX:XX:XX:XX:XX을 사용할 수 있습니다. 특정 MAC 주소로 또는 특정 MAC 주소에서 패킷을 검색하려면 wlan host XX:XX:XX:XX:XX:XX을 사용하면됩니다. 방송국 주소가 아닌 액세스 포인트 주소를 신경 쓰는 경우 최소한 libpcap의 최신 버전에서는 wlan ra XX:XX:XX:XX:XX:XX 또는 wlan ta XX:XX:XX:XX:XX:XX과 같은 필터를 사용해야합니다. 자세한 내용은 pcap-filter 맨 페이지 또는 pcap-filter 맨 페이지가없는 경우 tcpdump 맨 페이지를 참조하십시오.

+0

tcpdump의 웹 페이지에서 자습서를 읽었습니다. 나는 stackoverflow에 쓴 것을 읽음으로써 배우려고 노력한다. libpcap에 대한 더 많은 지침을 게시 한 웹 페이지가 있습니까? – Angs

+0

불행히도, 아니오. –