无线网卡的Master,Managed,ad-hoc,monitor等模式

本文介绍了无线网卡的不同工作模式,包括Master、Managed、ad-hoc和Monitor等,并对比了Promiscuous与Monitor模式的区别,阐述了这些模式在网络监控及连接中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 无线网卡的工作模式
   无线网卡可以工作在多种模式之下。常见的有Master,Managed,ad-hoc,monitor等模式。
   
对于Master模式,它主要使用于无线接入点AP提供无线接入服务以及路由功能。可以想象我们使用的无线路由器就是工作在Master模式下了,不过对于普通的pc机来说,如果有合适的硬件它也可以变成一台无线AP。在LINUX下使用软件HOSTAP可以使一台linuxpc具有ap功能,但目前HOSTAP的所支持的无线网卡有限,我的INTEL Centrino PRO 4965 wirelesscard就不被hostap所支持。
   
对于一般的无线网卡来说,它们最常见的模式还是managed,ad-hoc和monitor。Managed模式用于和无线AP进行接入连接,在这个模式下我们才可以进行无线接入internet上网。对于需要两台主机进行直连的情况下可以使用ad-hoc模式,这样主机之间是采用对等网络的方式进行连接。Monitor模式主要用于监控无线网络内部的流量,用于检查网络和排错。
Promiscuous和Monitor(RFMON)的区别
   在传统的有限网络中,我们知道网卡可以工作在两种模式,即普通和混杂模式。在混杂模(Promiscuous
mode)下面,我们可以直接对以太网内部的流量进行监听。这个时候网卡不会区分流经其的数据包的目标地址是不是本机,一股脑儿的都将其截下供协议栈上层进行调用查看。这也正是传统的sniffer软件得以存在的一个根本基础。
   
无线网络和传统的有线以太网相比,有不同也有相似之处。无线局域网的信号传递完全是以无线电的方式进行广播传输的,这也就意味着每个人可以一定的装置来对无线电讯号进行接收并进行破解。所以无线局域网相对于有线网络来说更加的不安全。按照理论来说,当一个网卡连接到一个已知的无线网络之后,它应该可以和传统的以太网络一样能设置为混杂模式接受到所有的数据包。因为在无线的环境下所有的无线电讯号都可以被网卡接收,无线ap没有办法扮演一个交换机实现点对点的限制转发。但实际情况是,目前的驱动貌似还没进行足够的开发来支持这样的混杂模式

 

转自:http://hi.baidu.com/wushuqi_517/blog/item/890888b5b80586c637d3ca48.html

### 使用Python代码控制Raspberry Pi无线网卡工作模式 为了实现通过Python脚本在树莓派上切换无线网卡工作模式(从managed模式切换到ad-hoc模式),可以利用`subprocess`模块来调用Linux命令行工具如`iwconfig`或`ip link set`。下面是一个具体的例子说明如何编写这样的Python程序。 #### Python 脚本示例 ```python import subprocess def change_wifi_mode(interface, mode): """ 更改指定接口的Wi-Fi操作模式 参数: interface (str): Wi-Fi 接口名称,例如 'wlan0' mode (str): 操作模式字符串 ('managed' 或者 'adhoc') 返回值: tuple: 命令执行的结果元组(stdout, stderr) """ try: # 关闭网络管理服务以防止冲突 stop_network_manager = ["sudo", "service", "NetworkManager", "stop"] result_stop_nm = subprocess.run(stop_network_manager, check=True, capture_output=True) # 设置新的操作模式 command_set_mode = f"sudo iwconfig {interface} mode {mode}" process_change_mode = subprocess.Popen(command_set_mode, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, error = process_change_mode.communicate() if process_change_mode.returncode != 0: raise Exception(f"Failed to set WiFi mode on {interface}") return output.decode(), error.decode() except subprocess.CalledProcessError as e: print("An error occurred while stopping Network Manager:", e.stderr.decode()) return None, e.stderr.decode() if __name__ == "__main__": wifi_interface = "wlan1" new_mode = "Ad-Hoc" out, err = change_wifi_mode(wifi_interface, new_mode) if not err: print(f"{wifi_interface}'s operation mode has been changed successfully.") else: print(err) ``` 此段代码定义了一个函数 `change_wifi_mode()` 来改变给定无线网卡接口的操作模式,并提供了简单的错误处理机制[^1]。 需要注意的是,在实际部署前应该测试这段代码并确保它适用于特定硬件环境;此外还需要确认是否有足够的权限去修改这些设置以及是否已经安装了必要的软件包比如`wireless-tools`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值