将界面设置为混杂模式后网络已关闭

问题描述 投票:0回答:1

通过以下方式将接口设置为混杂模式后网络总是出现故障:

memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, if_name);
ifr.ifr_flags |= IFF_PROMISC;
ioctl(sock, SIOCSIFFLAGS, &ifr);

路由器是否有可能知道此尝试并阻止我的连接?

如果是这样,像 Wireshark 这样的应用程序是如何保持运行的?有没有办法隐藏这个模式?

c sockets interface posix
1个回答
2
投票

您的代码不仅设置了 IFF_PROMISC 标志 - 它还清除了所有其他标志,例如构成接口的 IFF_UP。因此,您的代码使界面下降。

如果你只想改变一个标志,你可以使用

SIOCGIFFLAGS
(G代表获取)来获取旧标志,然后编辑你想要的一个标志并设置它们。

© www.soinside.com 2019 - 2024. All rights reserved.