python连接wifi需要使用pywifi包,可以用pip install pywifi安装

1.导入包

import pywifi,time

#保存包中写义的常量
from pywifi import const

conbst  定义的常量:

# # Define interface status.
# IFACE_DISCONNECTED = 0
# IFACE_SCANNING = 1
# IFACE_INACTIVE = 2
# IFACE_CONNECTING = 3
# IFACE_CONNECTED = 4
#
# # Define auth algorithms.
# AUTH_ALG_OPEN = 0
# AUTH_ALG_SHARED = 1
#
# # Define auth key mgmt types.
# AKM_TYPE_NONE = 0
# AKM_TYPE_WPA = 1
# AKM_TYPE_WPAPSK = 2
# AKM_TYPE_WPA2 = 3
# AKM_TYPE_WPA2PSK = 4
# AKM_TYPE_UNKNOWN = 5
#
# # Define ciphers.
# CIPHER_TYPE_NONE = 0
# CIPHER_TYPE_WEP = 1
# CIPHER_TYPE_TKIP = 2
# CIPHER_TYPE_CCMP = 3
# CIPHER_TYPE_UNKNOWN = 4
#
# KEY_TYPE_NETWORKKEY = 0
# KEY_TYPE_PASSPHRASE = 1
def wifi_connect_status():
"""
判断本机是否有无线网卡,以及连接状态
:return: 已连接或存在无线网卡返回1,否则返回0
"""
#创建一个元线对象
wifi = pywifi.PyWiFi() #取当前机器,第一个元线网卡
iface = wifi.interfaces()[0] #有可能有多个无线网卡,所以要指定 #判断是否连接成功
if iface.status() in [const.IFACE_CONNECTED,const.IFACE_INACTIVE]:
print('wifi已连接')
return 1
else:
print('wifi未连接')
return 0

扫苗wifi

def scan_wifi():
"""
扫苗附件wifi
:return: 扫苗结果对象
"""
#扫苗附件wifi
wifi = pywifi.PyWiFi()
iface = wifi.interfaces()[0] iface.scan() #扫苗附件wifi
time.sleep(1)
basewifi = iface.scan_results()
for i in basewifi:
print('wifi扫苗结果:{}'.format(i.ssid)) # ssid 为wifi名称
print('wifi设备MAC地址:{}'.format(i.bssid))
return basewifi

链接到指定wifi

def connect_wifi():
wifi = pywifi.PyWiFi() # 创建一个wifi对象
ifaces = wifi.interfaces()[0] # 取第一个无限网卡
print(ifaces.name()) # 输出无线网卡名称
ifaces.disconnect() # 断开网卡连接
time.sleep(3) # 缓冲3秒 profile = pywifi.Profile() # 配置文件
profile.ssid = "acewill" # wifi名称
profile.auth = const.AUTH_ALG_OPEN # 需要密码
profile.akm.append(const.AKM_TYPE_WPA2PSK) # 加密类型
profile.cipher = const.CIPHER_TYPE_CCMP # 加密单元
profile.key = '' #wifi密码 ifaces.remove_all_network_profiles() # 删除其他配置文件
tmp_profile = ifaces.add_network_profile(profile) # 加载配置文件 ifaces.connect(tmp_profile) # 连接
time.sleep(10) # 尝试10秒能否成功连接
isok = True
if ifaces.status() == const.IFACE_CONNECTED:
print("成功连接")
else:
print("失败")
#ifaces.disconnect() # 断开连接
time.sleep(1)
return isok

以上是操作wifi常用的方法,  可以自己扩展.比如弱口令破解.  可以下载个6000常用wifi弱口令.

思想简单,挨个试连接,状态const.IFACE_CONNECTED 即密码正确.

python操作wifi的更多相关文章

  1. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  2. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  3. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  4. Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  5. Python操作Mysql之基本操作

    pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...

  6. Python操作RabbitMQ

    RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...

  7. python操作日期和时间的方法

    不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 ...

  8. Python—操作redis

    Python操作redis 连接方式:点击 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建, ...

  9. python成长之路【第十三篇】:Python操作MySQL之pymysql

    对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎 ...

随机推荐

  1. android9.0适配HTTPS:not permitted by network security policy'

    app功能接口正常,其他手机运行OK,但是在Android9.0的手机上报错 CLEARTEXT communication to 192.168.1.xx not permitted by netw ...

  2. View - RemoteViews

    设计Android的工程师起名字还是挺规范的,而且一眼就知道是什么意思.RemoteViews,顾名思义,远程的View.Android为了能让进程A显示进程B的View,设计了这么一种View(其实 ...

  3. Oracle 19C的下载和安装部署(图形安装和静默安装)

    Oracle 19C的下载和安装部署(图形安装和静默安装)   https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/ ...

  4. Rk3288 双屏异显单触摸

    系统版本:RK3288 android 5.1 设备同时有两个lcd,主屏是mipi接口,带有触摸屏,触摸屏是usb接口,副屏是hdmi接口,没有触摸屏,正常情况下,两个lcd显示相同内容,触摸屏一切 ...

  5. 关于Kafka java consumer管理TCP连接的讨论

    本篇是<关于Kafka producer管理TCP连接的讨论>的续篇,主要讨论Kafka java consumer是如何管理TCP连接.实际上,这两篇大部分的内容是相同的,即consum ...

  6. Javascript 变量、函数的声明

    javascript变量 全局变量和局部变量    按照变量的作用域来区分,和大多数编程语言类似,javascript变量也分为全局变量和局部变量.全局变量的作用域是整个js文件,而局部变量的作用域是 ...

  7. Scala 按名称参数调用函数 与 =>的用法

    转自:http://blog.csdn.net/shenxiaoming77/article/details/54835679 通常情况下,函数的参数是传值参数:即参数的值在它被传递给函数之前被确定. ...

  8. JAVA用QRCode生成二维码

    QRCode jar下载地址: 生成:http://www.swetake.com/qrcode/index-e.html 读取:https://zh.osdn.net/projects/qrcode ...

  9. 【CF660E】Different Subsets For All Tuples 结论题

    [CF660E]Different Subsets For All Tuples 题意:对于所有长度为n,每个数为1,2...m的序列,求出每个序列的本质不同的子序列的数目之和.(多个原序列可以有相同 ...

  10. OpenJDK和JDK区别

    OpenJDK和JDK区别 OpenJDK与JDK的区别分析 Sun的JDK7.OpenJDK及IcedTea释疑 简介(ps): 简单来说jdk从7开始,弄出一个可以自由使用的公共版本(openjd ...