通过以下方式将接口设置为混杂模式后网络总是出现故障:
memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, if_name);
ifr.ifr_flags |= IFF_PROMISC;
ioctl(sock, SIOCSIFFLAGS, &ifr);
路由器是否有可能知道此尝试并阻止我的连接?
如果是这样,像 Wireshark 这样的应用程序是如何保持运行的?有没有办法隐藏这个模式?
您的代码不仅设置了 IFF_PROMISC 标志 - 它还清除了所有其他标志,例如构成接口的 IFF_UP。因此,您的代码使界面下降。
如果你只想改变一个标志,你可以使用
SIOCGIFFLAGS
(G代表获取)来获取旧标志,然后编辑你想要的一个标志并设置它们。