Python proporciona la accesibilidad de usar la dirección UUID de Bluetooth del teléfono como token de seguridad física para cualquier sistema. Esto se puede hacer con la ayuda de un paquete de Python llamado PyBluez . Pybluez se puede instalar en Linux, Windows y macOS y es compatible con Python 2.7 y 3.x.
Instalaciones requeridas:
Los módulos necesarios son:
- Pybluez: este módulo permite utilizar los recursos Bluetooth del sistema. Para instalarlo, escriba el siguiente comando en la terminal.
python3 -m pip install pybluez
- Horario: la biblioteca de horarios se utiliza para programar una tarea a una hora particular todos los días o un día particular de la semana. Para instalarlo, escriba el siguiente comando en la terminal.
python3 -m pip install schedule
Acercarse:
PyBluez es un paquete con recursos Bluetooth que permite a los desarrolladores de Python crear fácilmente aplicaciones Bluetooth. Al principio, los paquetes necesarios se han importado al programa. PyBluez
se importa como Bluetooth, se schedule
importa para programar el programa, time
el paquete se importa para manejar tareas relacionadas con el tiempo y ctypes
se importa para usar las bibliotecas existentes en otros idiomas, escribiendo envoltorios simples en Python. Los siguientes son los pasos.
job()
Se define una función en la que se declara la dirección bluetooth de tu móvil en la variableinputBdaddr
. La variablepassed
se inicializa en False para realizar un seguimiento de si la dirección de bluetooth dada se encuentra en los dispositivos descubiertos.bluetooth.discover_devices()
Se utiliza para buscar los dispositivos bluetooth disponibles en las cercanías . Los resultados se guardan en la variablescan
dentro del bloque try-except. Si el dispositivo requerido se encuentra enscan
, la variablepassed
se establece en verdadero, de lo contrario, falso.- Si
passed
se encuentra como falso, lo que significa que no se encuentra el dispositivo requerido, la estación de trabajo está bloqueada. - Ahora programe los pasos anteriores llamando a la función
job()
cada 30 segundos. Se utiliza un bucle while para comprobar si alguna tarea programada está pendiente de ejecución o no.
A continuación se muestra la implementación:
# Import required packages import schedule import time import bluetooth import ctypes def job(): # Find your bluetooth uuid in your # mobile and give set it in the # variable inputBdaddr = "XX:XX:XX:XX:XX:XX" # Variable to find whether the # given bluetooth uuid is # present in the discovered devices passed = False # Try to search for the nearby # visible devices try: # Get the list of discovered devices scan = bluetooth.discover_devices() # Search for your bluetooth uuid # in the scanned devices If found # set the variable to true else # set the variable to false if inputBdaddr in scan: passed = True else: passed = False except: passed = False # When bluetooth device # is not found, lock the # workstation if not passed: ctypes.windll.user32.LockWorkStation() # Schedule the process # to run every 30 seconds schedule.every(30).seconds.do(job) # Check whether a scheduled # task is pending to run or not while 1: schedule.run_pending() time.sleep(1)
Limitaciones:
Dado que PyBluez no está en desarrollo activo, la detección de Bluetooth es probabilística. Discover_devices() a veces no podrá detectar los dispositivos que están dentro del alcance. En este caso, puede ser una buena idea volver a intentarlo una o dos veces antes de darse por vencido.
Publicación traducida automáticamente
Artículo escrito por AnandhJagadeesan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA