¿Cómo conectar WiFi usando Python?

Ver una computadora sin una conexión activa a Internet hoy en día es casi imposible. Internet ha sido de suma importancia en el siglo XXI. Hay varias formas en que uno puede conectar su máquina a Internet. El primero, los cables tradicionales, es decir, el Ethernet, y el otro, los modernos Wireless Fidelity Systems o Wi-Fi como todos lo conocemos. Wi-Fi ha hecho la vida más fácil y rápida para todos nosotros. Con un toque del pulgar o un clic del mouse, nos conectamos a un océano ilimitado de información y recursos casi instantáneamente. En este artículo, realizaremos la misma tarea con un lenguaje de programación moderno de alto nivel, como Python.

Conexión a una red WiFi conocida

Aquí nos vamos a conectar a una red WiFi previamente conectada.

Acercarse:

El planteamiento del programa será sencillo:

  • Importe las bibliotecas necesarias .
  • Mostrar todos los SSID disponibles con la ayuda de los comandos cmd y una biblioteca de python llamada os .
  • Seleccionando el Wi-Fi conocido al que te quieres conectar.
  • Espere a que se conecte correctamente .

Ahora, comencemos con la codificación. Haremos uso de un par de comandos del símbolo del sistema de Windows para acceder a la lista de redes Wi-Fi disponibles y para conectarnos a una red conectada previamente . Pero, ¿cómo escribimos y ejecutamos los comandos del símbolo del sistema de Windows en un script de Python? Umm…

La biblioteca os nos ayuda a comunicarnos con el sistema operativo directamente a través de python con varios métodos como path(), getcwd(), system(), etc. Incluso podemos ejecutar comandos CMD usando funciones os. 

Implementación:

Python3

# import module
import os
 
# scan available Wifi networks
os.system('cmd /c "netsh wlan show networks"')
 
# input Wifi name
name_of_router = input('Enter Name/SSID of the Wifi Network you wish to connect to: ')
 
# connect to the given wifi network
os.system(f'''cmd /c "netsh wlan connect name={name_of_router}"''')
 
print("If you're not yet connected, try connecting to a previously connected SSID again!")

 
 Producción:

Explicación:

Aquí, primero, buscamos la biblioteca os usando la palabra clave de importación . Luego, usamos el método system() de la biblioteca os que nos ayuda a ejecutar el comando cmd 

'cmd /c "netsh wlan show networks"' 

El comando anterior escanea todos los SSID disponibles y los muestra como salida junto con su tipo de Infraestructura, Autenticación y Cifrado. Procedemos tomando una string de entrada del SSID, el usuario desea conectarse y guardarlos en la variable denominada, name_of_router

Esta variable de string luego se sustituye en lugar de otro comando cmd donde se supone que debemos ingresar el nombre del SSID. 

f'''cmd /c "netsh wlan connect name={name_of_router}"''' 

Ahora estaremos conectados con éxito al SSID en particular. 

Conexión a una nueva red Wi-Fi
 

Ahora, conectarse a un nuevo Wi-Fi implica un par de pasos más. Para conectarnos a una nueva red, primero debemos agregar este nuevo perfil de red Wi-Fi a nuestro sistema usando un archivo .XML. Esto hace que esa red Wi-Fi sea un SSID conocido, y ahora podemos conectarnos con éxito siguiendo los pasos anteriores.

Acercarse:

  • Paso 1: importa la biblioteca os
  • Paso 2: configure la configuración XML de la nueva red Wi-Fi
  • Paso 3: seleccione la red Wi-Fi
  • Paso 4: agregue este perfil a su sistema
  • Paso 5: Conéctese a la red Wi-Fi

 Implementación:

Python3

# import module
import os
 
# function to establish a new connection
def createNewConnection(name, SSID, password):
    config = """<?xml version=\"1.0\"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
    <name>"""+name+"""</name>
    <SSIDConfig>
        <SSID>
            <name>"""+SSID+"""</name>
        </SSID>
    </SSIDConfig>
    <connectionType>ESS</connectionType>
    <connectionMode>auto</connectionMode>
    <MSM>
        <security>
            <authEncryption>
                <authentication>WPA2PSK</authentication>
                <encryption>AES</encryption>
                <useOneX>false</useOneX>
            </authEncryption>
            <sharedKey>
                <keyType>passPhrase</keyType>
                <protected>false</protected>
                <keyMaterial>"""+password+"""</keyMaterial>
            </sharedKey>
        </security>
    </MSM>
</WLANProfile>"""
    command = "netsh wlan add profile filename=\""+name+".xml\""+" interface=Wi-Fi"
    with open(name+".xml", 'w') as file:
        file.write(config)
    os.system(command)
 
# function to connect to a network   
def connect(name, SSID):
    command = "netsh wlan connect name=\""+name+"\" ssid=\""+SSID+"\" interface=Wi-Fi"
    os.system(command)
 
# function to display avavilabe Wifi networks   
def displayAvailableNetworks():
    command = "netsh wlan show networks interface=Wi-Fi"
    os.system(command)
 
 
# display available netwroks
displayAvailableNetworks()
 
# input wifi name and password
name = input("Name of Wi-Fi: ")
password = input("Password: ")
 
# establish new connection
createNewConnection(name, name, password)
 
# connect to the wifi network
connect(name, name)
print("If you aren't connected to this network, try connecting with the correct password!")

Producción:

Explicación:

Primero, definimos la función createNewConnection que toma los parámetros nombre, SSID y contraseña, que son strings que usamos para completar la variable de configuración. La variable config es una string que nos ayuda a definir la configuración XML para una nueva red Wi-Fi.

Luego, tomamos la entrada del usuario para el nombre SSID y la contraseña . Luego se introducen en el código XML que luego se agrega como un perfil usando las siguientes líneas de código:

command = "netsh wlan add profile filename=\""+name+".xml\""+" interface=Wi-Fi"
    with open(name+".xml", 'w') as file:
        file.write(config)
    os.system(command)

Ahora podemos conectarnos al Wi-Fi usando los mismos comandos que usamos anteriormente en este artículo y conectarnos a la red como si fuera una conocida. 

Publicación traducida automáticamente

Artículo escrito por jaygala260 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *