Wednesday, March 11, 2009

BlueZSpammer

Acabo de publicar una nueva versión de BlueZSpammer.



BlueZSpammer es una herramienta front-end para Obexftp que permite descubrir dispositivos Bluetooth con soporte para el Perfil de Carga de Objetos (OBEX Object Push) y enviar archivos de forma masiva. Es incluso capaz de filtrar únicamente teléfonos móviles y Smartphones. Utiliza la pila de protocolos BlueZ para Linux y está desarrollado en lenguaje C.



BlueZScanner implementa las siguientes funciones Bluetooth utilizando el API de BlueZ:
El código fuente de BlueZSpammer se distribuye libremente bajo licencia GNU.

BlueZSpammer es una herramienta desarrollada con fines científicos y educacionales con el objeto de ayudar a entender conceptos como el marketing de proximidad; si alguien está interesado en una solución profesional, recomiendo XBlue de Endorasoft. No debe ser utilizada como herramienta de spam en lugares públicos con fines comerciales o de fastidio para otras personas. El autor no tiene ninguna responsabilidad sobre el uso que pueda darse a esta herramienta.

Puedes encontrar más información sobre BlueZScanner aquí, la herramienta está disponible para descarga.





22 comments:

ElMicroChip said...

alberto un cordial saludo, muy util e interesante tu code para hacer publicidad de proximidad via bluetooth pero tengo 2 inquietudes.

1-No hay manera de hacer repetitivo el code?


2- me lanza un error despues de q envia el 1er .jpg q dice: se ha producido un error. Por favor asegurese de que tiene conectado el adaptador usb o ejecute bluezspammer-gtk en consola para ver la salida del comando. Sabes q me ocurre aqui_????

3.- tu code no sabrias como hacerlo bajo windows__???

4- conoces elopenproximity?

Alberto said...

Hola,

Te respondo brevemente tus dudas,

1. Es sencillo meter el código dentro de un bucle for o while, pero lo dejo a gusto del usuario, ya que en algunos casos sería aconsejable eliminar aquellos dispositivos ya detectados en la anterior iteración para evitar hacer spam y en otros no.

2. No sé a qué se debe el error. En primer lugar, bluezspammer-gtk no es una aplicación que haya desarrollado yo, sino un front-end gráfico basado en mi código. Ahí no puedo darte soporte. Por lo demás, asegúrate de que tienes conectado un adaptador usb Bluetooth con el comando "hciconfig -a".

3. Este código está basado en BlueZ, la pila de protocolos de Linux. La idea es muy sencilla y puede ser portada a Windows fácilmente, pero las llamadas al API de Bluetooth son dependientes de BlueZ.

4. No conocía OpenProximity, parece muy interesante. Más o menos hace lo mismo que mi código, aunque BlueZSpammer siempre ha sido una aplicación con objetivos didácticos, nada serio que se pueda utilizar como solución de marketing de proximidad.

Gracias por comentar.

Un saludo.

Carlos said...

que solucion de marketing de proximidad podrias ver viable en linux?

Alberto said...

Openproximity tiene buena pinta.

ElMicroChip said...

pero no sale como se instala pq he leido todas las instrucciones en ingles y no dicen mayor cosa, hablan de un server XR, sabes a q se refiere o q¿

Marlon Cisternas Milla said...

He usado esta versión de BlueZspammer como también la anterior que es bien antigua. En las dos me aparece este error:

Sending file...
Suppressing FBS.
Failed to connect to SDP server: Connection timed out

Alguna solución? Pista? Eternamente agradecido.

Carlos said...

ni puerca idea... XD creo q si el q creo el bluezspammer no sabe como resolverlo... quien podra?

Alberto said...

El fallo se produce al conectar con el servidor SDP y resolver el canal asociado al Perfil de OBEX Push.

Prueba el siguiente comando:

obexftp --nopath --noconn --uuid none -b BD_ADDR -B CANAL_OBEX_PUSH -p archivo

Si no puedes determinar el canal de OBEX Push, inténtalo con obexftp --nopath --noconn --uuid none -b BD_ADDR -p archivo, por si obexftp es capaz de resolver el canal por sí solo.

Una vez seas capaz de enviar archivos, sustituye la llamada a ese comando en el código de BlueZSpammer.

El problema es que algunos teléfonos, como los Windows Mobile 5, tienen un servidor SDP que no resuelve peticiones de canales asociados a perfiles Bluetooth.

Saludos

Marlon Cisternas Milla said...

Alberto:

Finalmente, la imagen se envió con el siguiente comando:

$ obexftp --nopath --noconn --uuid none -b 00:1D:98:D9:A3:C0 -B 9 -p owned.jpg
Suppressing FBS.
Browsing 00:1D:98:D9:A3:C0 ...
Channel: 10
Connecting...done
Sending "owned.jpg".../done
Disconnecting...done
$

Ahora voy a modificar el código para que todo funcione perfecto.

Gracias por la ayuda, un abrazo!

José Luis Santorcuato Tapia said...

Alberto... muy interesante como dejar el soft detectando y enviando de manera infinita... dijiste algo del while... como y donde habria que programarlo...saludos desde Chile

Domingo said...

Hola Alberto
me gustaria saber si tienes algun conocimiento de las redes Ad-Hoc con bluetooth y si un codigo con la aplicacion de el tuyo se podria utilizar en ese tipo de redes.

Gracias

Alberto said...

Hola Domingo,

Lo siento pero no he trabajado con redes Ad-Hoc Bluetooth. No obstante, podrás hacer uso de algunas funciones de BlueZScanner y BlueZSpammer para el descubrimiento e identificación de dispositivos Bluetooth y el envío de objetos, si decides utilizar BlueZ, la pila de protocolos para Linux.

Un saludo.

Domingo said...

Gracias Alberto.
yo descargue el BlueZSpammer y logro compilarlo pero me da un erro al querer correrlo me pudes decir como hacerlo

Domingo said...

Buenos dias Alberto!
me disculpo por mi ultima pregunta y es que no me fije bien que los screenshot que estaban arriba eran para compilar el codigo.

la razon por la que escribo es porque eh intentado compilar el codigo desde el IDE Code::Block y me da errores con las libreria de bluetooth. la parte que en el terminal se pone como: "-lbluetooth" que es para relacionar el codigo a las libreria y no he encontrado informacion de como hacerlo que funcione.

si me pudieras ayudar lo agradeceria.

Saludos

Alberto said...

Hola Domingo,

¿Cumples los siguientes requisitos?

- Pila de protocolos BlueZ para Linux: librerías bluez-libs
- Librerías OpenObex, Openobex-apps y Obexftp

Saludos

Domingo said...

oh! si si Claro
el codigo me funciona perfecto cuando lo compilo por la terminal... pero quisiera saber si sabes como relacionar las librerias de bluetooth en el IDE code::block

Anonymous said...

Hola, tengo una duda, y quisiera saber si podrias orientarme un poco.

estoy realizando algo parecido a lo que hace el Spammer que realizaste, pero es con fines educacionales, lo que hace es enviar informacion del lugar (universidad).

pero me di cuenta que cuando hago un envio a traves de OBEXftp, el envio lo hace secuencial, y debe esperar que la persona lo recepcione, para luego enviar el siguiente.

(creo que el BlueSpammer pasa lo mismo), lo rehice con Threads, para crear hilos de envios, entonces poder hacer envios varios (creo que Bluetooth soporta hasta 8 nodos, siendo uno el Servidor), en base a eso intente realizar el envio a traves de hilos, pero no funciona, pues el siguiente hilo (luego del primero), el obexftp, se cae, o rechaza la conexion.

he estado debugeando para ver si es problema de codigo mio, pero no logro ver problemas.

mi pregunta: es posible hacer envios paralelos a traves de Bluetooth con OBEXFTP ????

desde ya muchas gracias por darte el trabajo de leer y responder.

saludos.

Alberto said...

Hola,

Me parece que no es posible hacer envios paralelos a traves de un único adaptador Bluetooth porque Bluetooth soporta únicamente una conexión activa por perfil. La solución que se me ocurre es utilizar varios hilos y varios adaptadores Bluetooth, de forma que cada hilo lance la conexión con OBEXFTP por cada adaptador libre o bien espere a que haya uno libre. Creo que existe una modificación de redfang (permite descubrir dispositivos ocultos por fuerza bruta) multi-hilo para utilizar varios adaptadores Bluetooth en paralelo. Échale un ojo al código y es posible que te sirva.

Un saludo

Luis Sánchez said...

te felicito por tu sitio Alberto!
me pregunto... porque decidiste Linux para tu BlueZSpammer? Solo por gusto o eres anti-microsoft?

Windows es mas comercial y popular no?

cuales son las ventajas de usar Linux?

Diego Mendoza said...

Hola Alberto, disculpa que te moleste a estas alturas, estuve viendo tu codigo y me parece fantastico, lo que queria preguntar es como puedo enviar un archivo a dispositivos seleccionados, y no asi a todos, espero no te molestes y felicidades por tu trabajo...!!

Anonymous said...

Hola buenas!
He estado probábdo el BlueZSpammer y sólo me ha funcionado con teléfonos Nokia (con symbian). Los blackberries, por ejemplo o muestran un mensaje de error (error de conexion con el PC) o piden un código para emparejarse con el que envía el push... Lo he probado con un HTC con android y tampoco ha ido. ¿Es que con los smarphones no se puede usar el programa?
Muchas gracias!

Alberto said...

Respondiendo a las dos última preguntas,

Puedes modificar el código e implementar filtros dependiendo de las características de los dispositivos a los que se va a enviar la información. Por ejemplo, a partir de la dirección BD_ADDR puedes conocer el fabricante y enviar únicamente a estos teléfonos. También puedes pedir autorización al usuario de BlueZSpammer para enviar un archivo a un dispositivo detectado o no.

BlueZSpammer utiliza el Perfil de Carga de Objetos (OBEX Object Push). Generalmente este perfil suele requerir autorización pero no autenticación en los teléfonos Bluetooth. Esto ha sido siempre así en el pasado. Sin embargo, por políticas de seguridad el usuario del teléfono o el fabricante pueden forzar la autenticación para dicho perfil. Puede que sea así con Blackberry. Si ese es el caso, será necesario emparejar los dispositivos para poder enviar el archivo, por requisitos del perfil Bluetooth.

Saludos