Nis*_*mar 0 wireless mode monitor capture pcap
我正在用C编写无线数据包嗅探器程序.我已经使用airmon-ng将我的无线接口设置为监控模式,现在我正在嗅探"mon0"接口.我正在使用linux(ubuntu 10.10).
我想将MAC地址设置为数据包的过滤器.我已经完成了如下所示,但它说"mon0没有分配IPV4地址"
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);
Run Code Online (Sandbox Code Playgroud)
请帮帮我,我怎样才能设置过滤MAC地址?
小智 5
"未分配IPV4地址"是一个错误pcap_lookupnet().这意味着您尝试捕获的网络接口没有分配给它的IPv4地址.airmon-ng为Wi-Fi适配器创建"监视器"界面的做法是什么; 适配器的常规网络接口可能具有分配给它的IP地址,但监视器接口将没有.
在只有当IP地址的问题是地方ip broadcast过滤器表达式; 如果您没有过滤IPv4广播地址(您可能不会这样做),则无需获取IPv4地址.引用pcap_compile()手册页:
如果程序不知道正在捕获数据包的网络的网络掩码,或者如果在可以在多个网络上捕获的Linux"任何"伪接口上捕获数据包,则值0可以是供给; IPv4广播地址的测试将无法正确完成,但过滤器程序中的所有其他测试都可以.
所以只需将0作为"net"参数传递给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.如果您关心接入点地址而不是站地址,则需要使用过滤器,例如wlan ra XX:XX:XX:XX:XX:XX或wlan ta XX:XX:XX:XX:XX:XX至少使用较新版本的libpcap.(有关详细信息,请参阅pcap-filter手册页,如果没有pcap-filter手册页,请参阅tcpdump手册页.)