Se nos acaba de presentar un proyecto para el envío de ficheros desde un host a dispositivos móviles por medio de protocolo bluetooth. Protocolos obex aparte (eso es otra historia), nos veíamos en la necesidad de conocer la marca del móvil destino antes de enviar el contenido, así que tras destripar las herramientas hcitool y sdptool, nos hemos encontrado con que un móvil no te dice claramente de que marca es, al menos, mediante ningún protocolo bluetooth.
¿Cómo saber la marca de un móvil conociendo sólo su dirección MAC bluetooth?
Al igual que las direcciones MAC de dispositivos ethernet, para bluetooth también existe un convenio que te permite conocer que fabricante tiene asignado un rango de direcciones MAC. Googleando un poco enseguida aparece esto: http://standards.ieee.org/regauth/oui/oui.txt, al parecer el listado oficial de esas direcciones MAC.
Es relativamente fácil parsear ese fichero, meterlo en una base de datos MySql y consultarlo cada vez que quieras. Incluso sería una posibilidad, scriptear un post de búsqueda a esa misma página del ieee (aquí está el formulario de búsqueda) para conocer de que propietario es que MAC bluetooth. El caso es que yo quería tener un sólo script, y no depender ni de MySQL ni de tener Internet. Y sobre todo velocidad (de acuerdo, para velocidad debería usar MySQL).
El resultado: btwho. Un script PHP, mini-base de datos y que se actualiza él solito.
¿Cómo funciona?
Updateando btwho
El primer modo de ejecución de btwho es “modo update”:
jabi@Iron-Jabi:~$ ./btwho update
jabi@Iron-Jabi:~$
Este comando descarga de la web de ieee el listado de macs, y se las “guarda” al final del fichero bien indexadas. El fichero se abre a sí mismo en modo escritura, y se guarda serializado, comprimido y en base64 el listado de macs asociadas a sus fabricantes. El fichero a fecha de hoy, con los datos actualizados, pesa sobre 180Kb., mientras que el listado total de MACS original asciende a 1.8MB.
Consultado btwho
Debemos tener una MAC bluetooth…
jabi@Iron-Jabi:~$ hcitool scan
Scanning ...
00:12:62:xx:xx:xx Jabi
00:1B:AF:xx:xx:xx Aktor
ahora simplemente para conocer de que marca son utilizamos btwho:
jabi@Iron-Jabi:~$ ./btwho 00:1B:AF:xx:xx:xx
Nokia Danmark A/S
Si por casualidad nos encontráramos con una MAC que no estuviera listada en el ieee, el script nos devolverá una salida de error (fácilmente scripteable si fuera necesario).
jabi@Iron-Jabi:~$ ./btwho FF:1B:AF:xx:xx:xx
Mac no encontrada.
jabi@Iron-Jabi:~$ echo $?
1
En resumen, un script sencillo, super portable e independiente, y seguro que útil en determinados casos.
Descargarlo aquí.
Posted by Javier Infante Porro in php, bluetooth, phpcli



