我的目标是创建一个虚拟无线接口并在该接口上附加一个侦听器。我正在尝试使用 C 程序来执行此操作。
到目前为止,我已经能够通过以下方法创建虚拟接口:
- 使用 linux iw 命令:`
sudo iw phy phy0 接口添加 mySta1 类型站
但我无法找到使用 C 程序执行相同操作的库。
使用 Tun/Tap 持久接口:
http://backreference.org/2010/03/26/tuntap-interface-tutorial/
char tun_name[IFNAMSIZ]; strcpy(tun_name, "MyTun"); tunfd = tun_alloc(tun_name, IFF_TUN | IFF_NO_PI);
其中 tun_alloc 是我的函数,它使用 ioctl 创建接口
ioctl(fd, TUNSETIFF, (void *) &ifr)
但是这个接口没有无线扩展
在界面上收听:
nread = 读取(tunfd,缓冲区,sizeof(缓冲区));
但这仅适用于我使用我的程序或 openvpn 等程序创建的 tun 设备。当与 wlan0 等任何其他接口一起使用时,ioctl 会给出错误“无效参数”
我解决问题的方法正确吗?有没有其他方法可以实现这一目标?我想知道以下内容:
- 有没有办法将 tun 设备连接到由“iw add interface”命令创建的设备上?
- 有没有办法制作虚拟无线 tun/tap 接口或将现有 tun 接口的类型更改为无线?