Autore Topic: bluespam.py  (Letto 7821 volte)

gecco

  • Hero Member
  • *****
  • Post: 744
    • Mostra profilo
    • Carlo Minucci a.k.a. Gecco
bluespam.py
« il: Aprile 21, 2009, 12:34:32 pm »
sottotitolo: "lo spam in tasca"

qualcosa che forse di me non sapete e' che suono in un gruppo (precisamente http://www.myspace.com/djminaccia303 )
vista la mia attitudine nerd, e visto che ancora non c'e' neppure un cdr eventualmente da vendere al pubblico (che di solito non supera le 20 unita' di cui in genere il 70% e' gente che viene a vedermi suonare solo per farmi un piacere) ho pensato bene di usare la tecnologia che ho sempre in tasca, ovvero l'openmoko.

oramai un buon 80% di possessori di cellulare ne ha uno col bluetooth, di cui circa il 20% lo lascia attivo, inoltre all'uscita di windows vista nelle grandi citta' c'erano i manifesti microsoft che mandavano pubblicita' via bluetooth.

ho unito il tutto e ho pensato bene di usare lo stesso stratagemma per mandare i miei mp3 agli utenti, piu' o meno, ignari, e ho sviluppato questo software

Codice: [Seleziona]
#!/usr/bin/python

import os
import string
import time

while 1>0:
dev_scan = "hcitool scan"

list_dev=os.popen(dev_scan)
tot= list_dev.read()
tot= tot.split("\n")
tot.pop(0)
tot.reverse()
tot.pop(0)
for dev in tot:
dev=dev.split("\t")
#browse_dev_command="sdptool browse " + dev[1]
get_channel = "sdptool browse " +dev[1] + " | tr -s ' ' | grep -e \"Channel\" | sed 's/ Channel: /Channel: /g' | cut -d\  -f2"
#print dev[1] + " - " + dev[2]
channel_scan=os.popen(get_channel)
channel=channel_scan.read()
send_file="obextool push file.txt " + dev[1] + " " + channel
print "sending file to " + dev[2]
send=os.popen(send_file)
time.sleep(5)

in linea teorica dovrebbe funzionare, l'ho testato solo col mio macbook il quale riceve della roba dal bluetooth ma poi non mi chiede di salvare i file come succedeva col vecchio nokia (oramai deceduto)

purtroppo al momento non ho altri device bluetooth in grado di ricevere i file per testare tutto questo ambaradan di roba, quindi se c'e' qualche anima pia che mi fa il piacere di provarlo ne sarei grato :)

dovete installare il pacchetto obexpush

grazie e arrivederci
« Ultima modifica: Aprile 21, 2009, 12:44:14 pm da gecco »

xela92

  • Hero Member
  • *****
  • Post: 3983
    • Mostra profilo
Re:bluespam.py
« Risposta #1 il: Aprile 21, 2009, 01:51:25 pm »
Cioè... Un programma per spammare prima che un programma per gestire graficamente il bluetooth?!?!? XD
Beh, è un buon inizio direi :)
Lo proverò, magari stasera...
~ I see your true colors, shining through... ~
Flash: Di tutto e di più XD A rotazione
SD: QtMoko V8, FDTF, SHR

pietrao

  • Visitatore
Re:bluespam.py
« Risposta #2 il: Aprile 21, 2009, 04:59:10 pm »
Cioè... Un programma per spammare prima che un programma per gestire graficamente il bluetooth?!?!? XD
Beh, è un buon inizio direi :)
Lo proverò, magari stasera...

è sempre stato così: è stata inventata prima la mitragliatrice automatica della macchina da scrivere, ergo, l'uomo ha inventato prima come uccidere velocemente e poi come scrivere velocemente...

sneak

  • Sr. Member
  • ****
  • Post: 304
    • Mostra profilo
    • ~sneak
Re:bluespam.py
« Risposta #3 il: Aprile 21, 2009, 09:31:15 pm »
fenomenale  ;) domani provo!  :P

gecco

  • Hero Member
  • *****
  • Post: 744
    • Mostra profilo
    • Carlo Minucci a.k.a. Gecco
Re:bluespam.py
« Risposta #4 il: Aprile 22, 2009, 07:13:16 am »
dai miei test effettuati in bicicletta nel tragitto di ritorno a casa dal lavoro, in cui passo per la stazione delle corriere, il che vuol dire centinaia di studenti coi cellulari col bluetooth probabilmente attivo, ho trovato 3 telefoni col bluetooth attivo a cui ho mandato un file di prova (poi se sia arrivato o meno questo non lo so)
pero' questo test mi ha fatto scoprire che quando obextool invia il file ad un telefono, tiene occupato il device del bluetooth e non aspetta di inviare un altro file ad un altro telefono quindi mi sono ritrovato con una sfilza di resource busy
detto questo bisogna prima scoprire se il file viene effettivamente spedito, provando manualmente verso un solo telefono, e poi bisogna escogitare il modo di capire quando ha finito di mandare il file oppure quando va in timeout oppure mettere un qualche sistema che ferma obextool se ci impiega troppo tempo

per evitarvi la lettura di pagine e pagine di documentazione vi dico subito che per mandare un file, almeno in linea teorica, si fa cosi':
prima bisogna trovare il mac address e il canale del device bluetooth remoto, cosi':
Codice: [Seleziona]
sdptool browse | tr -s ' ' | grep -e "Channel" -e "Browse"| sed 's/ Channel: /Channel: /g' | cut -d\  -f2questo da in output il macaddress e il canale
poi per mandare il file si fa cosi':
Codice: [Seleziona]
obextool push file.txt 00:00:00:00:00:00 3dove il 3 e' il canale, file.txt e' il file che vogliamo mandare, e il coso pieno di zeri e' ovviamente il macaddress

comunque, ripeto, non sono mai riuscito a mandare un file conq uesto metodo perche' non ho un altro telefono bluetooth attualmente, quindi provate voi :)

monto

  • Administrator
  • Hero Member
  • *****
  • Post: 1308
    • Mostra profilo
Re:bluespam.py
« Risposta #5 il: Aprile 22, 2009, 08:20:30 am »
eh si, il bluetooth ha un uso "esclusivo" ovvero la risorsa può essere usata "uno alla volta".
There's no place like 127.0.0.1

gecco

  • Hero Member
  • *****
  • Post: 744
    • Mostra profilo
    • Carlo Minucci a.k.a. Gecco
Re:bluespam.py
« Risposta #6 il: Aprile 22, 2009, 10:05:40 am »
ho scoperto perche' il mio mac non riceveva i file e ho scoperto che la cosa adesso si e' fatta un attimo piu' complicata.
inanzitutto sul mac c'era la ricezione dei file disattivata. attivandola l'output di hcitool scan è piu' verboso, eccovelo per condividere la verbosita':
Codice: [Seleziona]
root@saponettofono:~# sdptool browse
Inquiring ...
Browsing 00:1F:5B:75:98:8E ...
Service Name: OBEX Object Push
Service RecHandle: 0x10002
Service Class ID List:
  "OBEX Object Push" (0x1105)
Protocol Descriptor List:
  "L2CAP" (0x00000100)
  "RFCOMM" (0x0003)
    Channel: 10
  "OBEX" (0x0008)
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "OBEX Object Push" (0x1105)
    Version: 0x0100

Service Name: OBEX File Transfer
Service RecHandle: 0x10003
Service Class ID List:
  "OBEX File Transfer" (0x1106)
Protocol Descriptor List:
  "L2CAP" (0x00000100)
  "RFCOMM" (0x0003)
    Channel: 15
  "OBEX" (0x0008)
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "OBEX File Transfer" (0x1106)
    Version: 0x0100

Service Name: Bluetooth-PDA-Sync
Service RecHandle: 0x10004
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 3
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Serial Port" (0x1101)
    Version: 0x0100

Service Name: AVRCP Target
Service RecHandle: 0x10001
Service Class ID List:
  "AV Remote Target" (0x110c)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 23
  "AVCTP" (0x0017)
    uint16: 0x100
Profile Descriptor List:
  "AV Remote" (0x110e)
    Version: 0x0103

leggendolo poi si evince che a seconda del servizio usa un canale diverso
quello che interessa a me/noi e':
Codice: [Seleziona]
Service Class ID List:
  "OBEX Object Push" (0x1105)
Protocol Descriptor List:
  "L2CAP" (0x00000100)
  "RFCOMM" (0x0003)
    Channel: 10
  "OBEX" (0x0008)

infatti con:

Codice: [Seleziona]
obextool push file.txt 00:1F:5B:75:98:8E 10
riesco a mandare tranquillamente il file

ora vado a cercare un modo per estrarre solo quel canale

Onef

  • Sr. Member
  • ****
  • Post: 373
    • Mostra profilo
Re:bluespam.py
« Risposta #7 il: Aprile 22, 2009, 10:32:02 am »
... madonnina santissima ... spam col BT ... una nuova frontiera dello spamming ahahah!!!
bella sta idea cmq!
SHR (testing) on board...

gecco

  • Hero Member
  • *****
  • Post: 744
    • Mostra profilo
    • Carlo Minucci a.k.a. Gecco
Re:bluespam.py
« Risposta #8 il: Aprile 22, 2009, 11:20:57 am »
in realta' non e' proprio nuova
come gia' detto i cartelloni pubblicitari della microsoft lo facevano, inoltre anche al mi ami festival di milano dell'anno scorso lo facevano.

comunque, sono forse arrivato ad una conclusione, ecco il codice:
Codice: [Seleziona]
#!/usr/bin/python

import os
import string
import time

start_bluetooth="echo 1 > /sys/bus/platform/devices/neo1973-pm-bt.0/power_on; echo 0 > /sys/bus/platform/devices/neo1973-pm-bt.0/reset; /etc/init.d/bluetooth start"
os.system(start_bluetooth)

while 1>0:
dev_scan = "hcitool scan"
list_dev=os.popen(dev_scan)
tot= list_dev.read()
tot= tot.split("\n")
tot.pop(0)
tot.reverse()
tot.pop(0)
for dev in tot:
dev=dev.split("\t")
get_channel = "sdptool search --bdaddr " + dev[1] + " OPUSH | sed 's/ //g' | grep Channel | cut -d: -f 2"
channel_scan=os.popen(get_channel)
channel=channel_scan.read()
print "!" + channel[:-1] + "!"
if channel != "":
send_file="obextool push file.txt " + dev[1] +  " " + channel
print "sending file to \"" + dev[2] + "\""
send=os.system(send_file)
time.sleep(5)

ho trovato, almeno credo, la soluzio ai problemi di timeout o di resource busy (soluzione posticcia ma pare funzionare)
ho cambiato os.popen in os.system perche', almeno pare, che la os.system aspetti che il comando che ha lanciato finisca prima di continuare alla riga successiva del codice python, mentre la os.popen lancia il comando e poi continua senza aspettare.

inoltre ho aggiunto una verifica che se trova il device con opexpush attivo ma non il canale non fa nulla.
lavorare in una scuola mi permette di avere tanti cellulari bluetooth attivi e di testare la scansioni su dispositivi diversi (senza che nessuno se ne accorga tra l'altro) e ne ho trovati alcuni senza il canale specificato.
siccome, vabbe', mi diverti si ma non mi diverto a mandare realmente file a tutti i malcapitati, non ho testato cosa succede a mandare un file ad un dispositivo senza canale, per cui ho preferito evitare. (poi mi sbizzarrisco quando torno a casa :) )

ma perche' ho usato obextool e non obexftp che serve, appunto, a trasferire i file?
inanzitutto pare che il pacchetto obexftp non ci sia compilato per openmoko (almeno io non l'ho trovato e comunque non ho assolutamente voglia di compilarlo), e poi pare che con obexftp bisogna inserire il pin, mentre con obextool no (comunque nel device "vittima" l'utente deve comunque confermare se accettare il file o meno)

icp

  • Hero Member
  • *****
  • Post: 546
    • Mostra profilo
Re:bluespam.py
« Risposta #9 il: Aprile 22, 2009, 01:50:58 pm »
Ho provato ora lo script il terminale mi continua a dire !! !! !! !! ma non invia niente!!!

gecco

  • Hero Member
  • *****
  • Post: 744
    • Mostra profilo
    • Carlo Minucci a.k.a. Gecco
Re:bluespam.py
« Risposta #10 il: Aprile 22, 2009, 04:29:52 pm »
mhh, pensavo di aver rimosso quella riga di codice
era solo per il debug

se scrive !! e' perche' non trova il canale del servizio obexpush del bluetooth (in teoria tra i due punti esclamativi dovrebbe esserci il numero

prova a dare, da terminale,:
Codice: [Seleziona]
sdptool browse e vedi cosa ti tira fuori, se non capisci pastalo pure qua cosi' lo leggo

sneak

  • Sr. Member
  • ****
  • Post: 304
    • Mostra profilo
    • ~sneak
Re:bluespam.py
« Risposta #11 il: Aprile 24, 2009, 03:39:18 pm »
funziona alla grande...
unica pecca è che lasciando il neo "in zona" continua ad inviare il file a dispositivi
che lo hanno già ricevuto...  ::)

icp

  • Hero Member
  • *****
  • Post: 546
    • Mostra profilo
Re:bluespam.py
« Risposta #12 il: Aprile 24, 2009, 05:37:27 pm »
il comando mi dice:
Codice: [Seleziona]
Inquiring ...
Inquiry failed

gecco

  • Hero Member
  • *****
  • Post: 744
    • Mostra profilo
    • Carlo Minucci a.k.a. Gecco
Re:bluespam.py
« Risposta #13 il: Aprile 24, 2009, 06:01:48 pm »
inquiry failed... boh... non so, forse lo fa quando non trova nessuno dispositivo??boh...

si, certo, lui continua comunque a inviare lo stesso il file di continuo... non gli ho programmato nulla per dirgli di smettere... altrimenti che spammer sarebbe? :)

sneak

  • Sr. Member
  • ****
  • Post: 304
    • Mostra profilo
    • ~sneak
Re:bluespam.py
« Risposta #14 il: Aprile 24, 2009, 06:14:53 pm »
cool ;)