我的目标是创建一个创建虚拟无线接口并在该接口上附加侦听器。我正在尝试使用C程序。
到目前为止,我已经能够通过以下方法创建虚拟接口:
sudo iw phy phy0 interface add mySta1 type station
但我无法找到使用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 = read(tunfd,buffer,sizeof(buffer));
但这仅适用于我使用我的程序或openvpn等程序创建的tun设备。当与wlan0等任何其他接口一起使用时,ioctl会给出错误“Invalid argument”
我对这个问题的处理方法是否正确?有没有其他方法来实现这一目标?我想知道以下内容:
答案 0 :(得分:1)
如果你想在C程序中实现“iw phy ...” - 只需看看“iw”程序源。可能是由一些ioctls或netlink实现的。
您的问题的答案:
虚拟TUN / TAP设备表示此设备独立于任何硬件。它只是软件解决方案。您无法轻松地在用户空间中将TUN / TAP设备连接到无线接口。
不,正如我在回答1中所写.TUN / TAP只是虚拟设备,无法转换为wifi设备类型。
答案 1 :(得分:0)
我不知道任何现有的库。如果您的唯一目的是通过代码实现此功能,那么为什么不遵循这一点。
system("iw phy phy0 interface add mySta1 type station");
它显然是丑陋的,但它的目的。