【发布时间】:2013-11-21 07:29:42
【问题描述】:
我的目标是创建一个虚拟无线接口并在该接口上附加一个监听器。我正在尝试使用 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 = read(tunfd,buffer,sizeof(buffer));
但这仅适用于我使用我的程序或 openvpn 等程序创建的 tun 设备。当与 wlan0 等任何其他接口一起使用时,ioctl 会给出错误“无效参数”
我解决问题的方法正确吗?有没有其他方法可以实现这一目标?我想知道以下内容:
- 有没有办法将 tun 设备附加到由“iw add interface”命令创建的设备上?
- 有没有办法制作虚拟无线 tun/tap 接口或将现有 tun 接口的类型更改为无线?
【问题讨论】:
标签: c networking wireless packet-capture tun