Python - WIFI Scan

How to find weak wireless APs with SSID:BSSID ?

wifi4


wifi4


How to scan SSID:BSSID ?

#!/usr/bin/python
# -*- coding: utf8 -*-

from access_points import get_scanner


def parse_apinfo(ap):
    return (ap['quality'], ap['ssid'], ap['bssid'])


def print_apinfo(apinfo):
    print(u"Quality: {:03} <=> SSID:BSIID: {},{}".format(*apinfo))


if __name__ == '__main__':
    wifi_scanner = get_scanner()
    wifi_aps = wifi_scanner.get_access_points()
    wifi_aps = map(parse_apinfo, wifi_aps)
    wifi_aps.sort()
    map(print_apinfo, wifi_aps)

->> python access_points/wifi_scan.py
Quality: 022 <=> SSID:BSIID: 303,c8:3a:35:52:d0:70
Quality: 022 <=> SSID:BSIID: and-Business,d2:75:d5:8e:8f:87
Quality: 022 <=> SSID:BSIID: dingding,3c:46:d8:93:e5:e2
Quality: 022 <=> SSID:BSIID: yougenyake501,ec:26:ca:9b:f1:20
Quality: 022 <=> SSID:BSIID: zhang602,d4:83:04:ec:3b:78
Quality: 022 <=> SSID:BSIID: zhangduo,5c:63:bf:db:f8:4e
Quality: 024 <=> SSID:BSIID: 3-2403,d0:c7:c0:bb:e3:12
Quality: 024
### 使用Python进行WiFi扫描和连接 #### WiFi扫描 为了利用Python进行WiFi扫描,`pywifi`库是一个有效的工具。通过创建一个`PyWiFi()`实例并获取第一个接口(通常是唯一的Wi-Fi接口),可以调用此接口上的`.scan()`方法来启动一次新的扫描过程[^1]。 一旦扫描完成,可通过调用`.scan_results()`方法取得最近一次扫描的结果列表。每个条目代表一个检测到的接入点(AP),其中包含了SSID、BSSID和其他属性等信息[^4]。 ```python import pywifi def scan_wifi(): wifi = pywifi.PyWiFi() iface = wifi.interfaces()[0] iface.scan() # 执行扫描命令 results = iface.scan_results() # 获取扫描结果 for result in results: ssid = result.ssid.encode('utf-8').decode('latin1') # 处理特殊字符编码问题 signal_strength = result.signal print(f'SSID: {ssid}, Signal Strength: {signal_strength}') ``` #### 连接至WiFi网络 对于建立与特定WiFi网络之间的连接而言,在选择了目标网络之后,需构建一个新的配置文件(`Profile`)对象,并设置必要的参数如SSID名称及密码(如果有)[^2]。随后将这个配置添加到选定的接口中并通过调用`.connect()`尝试建立连接;最后检查连接状态以确认是否成功[^3]。 ```python from pywifi import const, Profile def connect_to_wifi(ssid, password=None): wifi = pywifi.PyWiFi() iface = wifi.interfaces()[0] profile = Profile() profile.ssid = ssid if password is not None: profile.auth = const.AUTH_ALG_OPEN profile.akm.append(const.AKM_TYPE_WPA2PSK) profile.cipher = const.CIPHER_TYPE_CCMP profile.key = password iface.remove_all_network_profiles() # 移除其他配置文件 tmp_profile = iface.add_network_profile(profile) iface.connect(tmp_profile) # 尝试连接指定网络 time.sleep(5) # 给予一定时间让连接生效 status = iface.status() if status == const.IFACE_CONNECTED: print("已成功连接") else: print("未能连接") if __name__ == "__main__": connect_to_wifi("Your_SSID", "your_password") # 替换成实际的目标SSID和密码 ``` 需要注意的是,上述代码片段仅适用于合法用途下的WiFi管理和控制操作,不应被用于未经授权的行为或试图访问私人网络资源之外的内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值