martedì 8 maggio 2018

Universita' di Firenze - Scienze della Terra 7 Maggio 2018

A quasi tre anni di distanza dalla precedente esperienza, mi sono trovato a chiaccherare di geologia ed Android con degli studenti universitari ospite presso il Dip. di Scienze della Terra di Firenze (praticamente come giocare in casa)




Acer Travelmate 518TX

Mi e' stato chiesto di ridare vita ad un Acer Travelmate 518TX, una macchina del 1999 (che all'epoca costava in configurazione base 6.000.000 di lire) con P2 a 400 MHz ed una sheda di rete 3Com su PCMCIA
Fino ad adesso con Linux avevo sempre risolto i problemi ma con questo portatile sono sorti un po' di problemi. Primo vincolo: l'utente finale e' una persona a cui non posso dare una Debian netinstall e dirgli di risolversi i problemi. Si tratta di un utente che ha bisogno di un Window Manager decente e deve avere l'utlizzo di un browser un minimo moderno


La macchina, data l'eta', ha ovviamente la batteria esaurita ma anche la batteria del BIOS scarica. Con Win98 tutto funziona tranne il fatto che al momento di settare ora e data nel BIOS questo si pianta...cio' e' ovviamente un problema nel momento di utilizzare Linux (particolarmente permaloso quando vedi gli inode con data nel futuro). Ho provato a smontare gli sportelli per vedere se era facile sostituire la batteria ma questa, come l'HD, sono nascosti in punti non raggiungibili dalle botole....su internet non si trovano informazioni su come si smonta...probabilmente sono entrambi nascosti sotto la tastiera ma non ci sono ganci visibili...prima di rompere qualcosa ho rimandato la sostituzione)

La ram installata era di 128 Mb ma e' stata portata a 192 Mb (il massimo installabile e' 256 Mb secondo la scheda tecnica) con un disco da 6Gb



Ho provato diverse distribuzioni gia' confezionate ma i problemi sono

1) Le immagini di installazione sono ormai piu' di 700 Mb quindi non entrano in un CD. Il Bios della macchina non permette l'avvio da USB Drive

2) I requisiti di memoria RAM sono oramai quasi tutti sopra i 256 MB

3) Alcune distro, nonostante usino pacchetti i386, usano un kernel con PAE, funzionalita' non suppportata dalla macchina


Alla fine, visto che Win98 installato funziona in modo decente (specialmente con i 64 Mb Ram aggiuntivi), ho consigliato di usarlo come macchina da scrivere (il pacchetto Office 2000 e' installato e funzionante) piuttosto che rischiare di avere un computer aggiornato ma non utilizzabile

venerdì 4 maggio 2018

Suse 6.0

Un tuffo nel passato ... mi e' stata prestata una distribuzione Suse Linux 6.0 (indicativamente 1998) ed ho voluto vedere se mi ricordavo come si installava un Linux negli anni 90


Pur avendo un hardware del periodo ho preferito usare una macchina virtuale. Primo dettaglio: il sistema riconosce solo dischi PATA, per questo motivo la macchina virtuale deve avere un disco virtuale non SATA (come di default)

L'installazione non e' grafica ma in generale non crea troppi problemi

Ho montato il sistema di default. Installazione di LILO (!). Al riavvio qualcosa che avevo dimenticato. Bisogna configurare il server X con xf86config ...ricordandomi i mal di testa con questo comando ho abbandonato immediatamente

Intersezione superficie topografica con piani con qgSurf

Un plugin di QGis che non conoscevo ma che puo' tornare utile per verificare la correttezza delle faglie disegnate su una carta geologica.

Questo plugin, presi un modello digitale del terreno e un piano, calcola la linea di intersezione tra le due superfici...una regola della V tecnologica



Per tentativi puo' essere anche stimata la pendenza del piano di faglia ove sia riesca a mappare il contatto in campagna

giovedì 3 maggio 2018

Stereoscopio interattivo con QGis2ThreeJS

Circa 3 anni fa avevo provato il plugin di QGis Qgis2ThreeJS per fare DEM stereoscopici da usare Google CardBoard ma poi avevo lasciato li' la cosa perche' non riuscivo ad avere l'interazione per girare il modello. Adesso ho trovato la soluzione ed e' molto piu' banale di quanto potessi immaginare...un mouse bluetooth. Basta accoppiare il mouse al telefono, inserire il telefono in un CardBoard o DayDream e si puo' visualizzare il modello da piu' punti di vista

Per fare il progetto QGis si deve utilizzare il plugin nel ramo sperimentale

https://github.com/minorua/Qgis2threejs/tree/exp_stereo

e si deve selezione il template 3DViewer.html


Si seleziona poi il modo di controllare il modello


e questo il risultato finale (ovviamente da inserire nel visore)


mercoledì 2 maggio 2018

DEM da stereo orto foto con Photoscan

Un tentativo di ricostruzione di DEM partendo da una coppia di ortofoto riprese da aereo (immagini della mia zona di tesi su un volo del 1973) utilizzando Photoscan
Le foto in originale erano su supporto analogico e sono state scannerizzate alla massima risoluzione disponibile dallo scanner (formato circa 5000x5000 pixels)






Questo il risultato. Considerando che si tratta di due sole immagini e' veramente notevole





Anaglifo (tasto 9 su Photoscan)

venerdì 27 aprile 2018

DayDream Emulator Controller

Ho trovato ad un prezzo stranamente basso (30 euro) un visore Daydream e il controller collegato ed ho voluto provarlo
Solo dopo ho scoperto che non e' necessario avere Daydream per poterci sviluppare.
Avendo un telefono di riserva (non necessariamente supportato da Daydream) si puo' installare un emulatore di controller che si collega al telefono principale sia via Bluetooth che via WiFi



L'emulazione del controller funziona anche con il package Unity mediante una connessione USB

Peraltro sto sperimentando molti problemi con il controller fisico (quello grigio all'estrema destra) che e' molto carino ma ha difficolta' a rimanere collegato al telefono. In un caso estremo sono dovuto andare in Impostazioni/App/Servizi Google VR/Spazio di archiviazione/Cancella Dati. Questa operazione resetta le impostazioni di Google VR



Daydream Controller in Unity

Un semplice esempio di script da aggiungere al Player per muovere la Camera di Unity con il DayDream Controller





public class move_player : MonoBehaviour {


    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        Quaternion ori;

        ori = GvrController.Orientation;
        if (ori.eulerAngles.z > 20 && ori.eulerAngles.z < 90) {
            Debug.Log ("Roll Left ");
        }

        if (ori.eulerAngles.z > 270 && ori.eulerAngles.z < 340) {
            Debug.Log ("Roll Right");
        }

        if (ori.eulerAngles.x > 20 && ori.eulerAngles.x < 90) {
            Debug.Log ("Drop");
            var rot = transform.rotation;
            rot.z -= Time.deltaTime * 1;
            transform.rotation = rot;
        }

        if (ori.eulerAngles.x > 270 && ori.eulerAngles.x < 340) {
            Debug.Log ("Climb");
            var rot = transform.rotation;
            rot.z += Time.deltaTime * 1;
            transform.rotation = rot;

        }





        Debug.Log ("X : " + ori.eulerAngles.x.ToString("#.0")); //pitch
        Debug.Log ("Y : " + ori.eulerAngles.y.ToString("#.0")); // yaw
        Debug.Log ("Z : " + ori.eulerAngles.z.ToString("#.0")); // roll



        if (GvrController.IsTouching) {
            Vector2 touchPos = GvrController.TouchPos;
            Debug.Log ("Toccato " + touchPos.x.ToString ("#.00"));

            var x = touchPos.x * Time.deltaTime * 5.0f;
            var y = touchPos.y * Time.deltaTime * 5.0f;
            if (touchPos.x < 0.5f)
                x *= -1.0f;
            else
                x *= +1.0f;
            
            if (touchPos.y < 0.5f)
                y *= -1.0f;
            else
                y *= +1.0f;

            transform.Translate (x, y, 0.0f);
        }
        
    }
}

giovedì 12 aprile 2018

Alla ricerca di WannaCrypt

Ogni tanto ritorno sul luogo del delitto e mi trovo a giocare con una sottorete di una LAN piuttosto complessa che e' distribuita in diversi punti di Firenze. Esiste una organizzazione gerarchica per cui sono presenti nei vari uffici degli amministratori di rete locali (ruolo che ho ricoperto per un periodo di tempo anche io) che fanno capo ad un amministratore generale responsabile delle macchine di frontiera.

Qualche giorno fa l'amministratore generale ha inviato un warning del tipo

Oggetto: WARNING: GARR-CERT-A-B-1803100820-0007 Nodo probabilmente infetto da wannacrypt su XXX.XXX.XXX.XXX

la macchina di frontiera aveva individuato un traffico relativo al malware wannacrypt per la chiamata su porta 80 al dominio di controllo di WannaCrypt

 Porta locale: 49197
 IP:porta C&C: 104.17.41.137:80
(www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com)
 Malware: wannacrypt
 URL: /

il problema e' che la macchina di frontiera non era riusciuta a risolvere l'IP della macchina compromessa ma solo l'indirizzo di uscita fornito dal DHCP...c'era quindi da cercare il responsabile tra 256 computer distribuiti in diversi edifici. Come fare?

La prima ipotesi era quella di sniffare il traffico su porta 80 sullo switch in attesa che il client si collegasse al 104.17.41.137. Cosa lunga e poco efficace. 
C'e' pero' da considerare che WannaCrypt si basa su una vulnerabilita' su protocollo SMB di Windows fino alla versione 7 o Windows Servers 2008 e precedenti...considerando che adesso i client della rete sono quasi tutti Mac i Win10 il campo si restringe in modo significativo

Usando nmap ho lanciato la seguente ricerca

nmap --script smb-os-discovery -p 445 XXX.XXX.XXX.1/24 

ovvero la ricerca in tutti i computer della sottoclasse del servizio SMB aperto e facendomi fornire anche il tipo di sistema operativo installato

Nmap scan report for xxx.xxx.xxx.xxx
Host is up (0.00052s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: F0:4D:XX:XX:XX:XX:XX (Dell)

Host script results:
| smb-os-discovery: 
|   OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
|   OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
|   Computer name: XXXXXXX
|   NetBIOS computer name: XXXXXX
|   Workgroup: XXXXXXX
|_  System time: 2018-03-16T10:35:03+01:00


Una volta andato a controllare il client di persona e' emerso che la macchina non effettuava gli aggiornamenti automatici ed era quindi priva di patch di sicurezza. Problema trovato

mercoledì 11 aprile 2018

Tango Tablet vs Kinect

Ho provato a mettere alla prova il Tablet di Project Tango con il Kinect sulle Mura Etrusche a Fiesole gia' utilizzate come bersaglio in questo post


Pur ammettendo una giornata piovosa la prova con il tablet Tango e' stata disastrosa. Il sensore di profondita' e' riuscito ad acquisire al massimo 1100 punti da una distanza compresa tra 1.0 e 1.5 m; allontanandosi non veniva effettuata nessuna acquisizione mediante il software ParaView.

L'idea che mi sono fatto e' che il sensore di profondita' del tablet Tango non risulta avere una potenza di emissione cosi' elevata da avere riflessioni significative su superfici non omogenee e poco riflettenti.

In buona sostanza non e' possibile farne un utilizzo "in campagna" per scopi geologici. Il suo mondo e' il rilevamento di interni

martedì 10 aprile 2018

Esperimenti Tango : ParaView

Continuano gli esperimenti con Tango Tablet. La applicazione RTAB-MAP e' decisamente completa ma a me serviva una soluzione semplice per esportare la nuvola dei punti di una singola acquisizione ed ho trovato ParaView in versione Android per l'acquisizione e Desktop per la successiva visualizzazione

IMPORTANTE : non si devono aggiornare le applicazioni originali del tablet. Sia Tango Core che le GApps danno continuamente errore se aggiornate




I fotogrammi vengono acquisiti circa ogni 200 millisecondi.
Il massimo di numero di punti acquisiti e' intorno a 11.000-12.000.
Ad una distanza di 2 m da un muro la visione laterale e' +/- 1.0 m circa sull'asse X (orizzontale) e circa +/- 0.6 m sull'asse verticale. La FOV stimata e' di circa 53°x33°


I dati dello snapshot della app Android vengono salvate in formato .vtk. Dalla versione desktop i dati  possono essere esportati in csv in formato testo da File/Save Data/*.csv

sabato 7 aprile 2018

Test di Project Tango Tablet per la geologia

Scansioni 3D effettuate con Tablet Project Tango ed RTAB-MAP con visualizzazione in MeshLab

L'aspetto interessante di utilizzare RTAB-MAP e' che non e' necessario utilizzare una ripresa statica da cavelletto ma si puo' muovere la camera perche' viene gestito il motion tracking. Questo permette di riprendere anche zone che possono risultare "in ombra" da una ripresa frontale

Prova 1 







Prova 2







giovedì 5 aprile 2018

Project Tango

Visto che il Progetto Tango di Google e' stato dismesso a Marzo 2018 i prezzi dei dispositivi Tango sono scesi ad un livello umano e mi sono preso un Project Tango Tablet Development Kit. In estrema sintesi si tratta di una tablet Android NVidia con processore Tegra K1 e 128 Giga di memoria dotato di sensori simili a quelli del Kinect per il calcolo della distanza degli oggetti inquadrati


Il nome in codice del tablet e' Yellowstone altrimenti conosciuto con la sigla NX-74751 (in Star Trek la nave USS Yellowstone ha il codice NX-74751) ed e' stato sviluppato internamente da Google presso Google's ATAP (Advanced Technology and Projects). Per sapere quale hardware c'e' dentro si rimanda a questo link

Attualmente la documentazione delle API di Tango sono sparite dal sito sviluppatori di Google ma sono sempre recuperabili su Archive.org mentre il codice di esempio e' stato spostato qui. Al momento non sono riuscito a trovare una immagine del firmware da poter scaricare
Il sensore di profondita' e' un OV4682 con una matrice di 320x180 pixels (risoluzione molto lontana dal Kinect) ed ha funzione anche di camera RGB. Ci sono inoltre una camera standard da 4 Megapixels piu' una camera fisheye da 120° ed una da 180° (in totale di sono 4 camere)

OSAndroid™ 4.4 (KitKat®)
Screen7.02” 1920x1200 HD IPS display (323 ppi)
Scratch-resistant Corning® glass
Camera1 MP front facing, fixed focus
4 MP 2µm RGB-IR pixel sensor
Size119.77 x 196.33 x 15.36 mm
Weight0.82 lbs (370 g)
Battery4960 mAH cell (2 x 2480 cells)
ProcessorNVIDIA Tegra K1 with 192 CUDA cores
Network/Wireless4G LTE¹
Dual-band Wi-Fi (2.4GHz/5GHz) WiFi 802.11 a/b/g/n
Bluetooth 4.0
NFC (reader and peer to peer modes)
Memory128 GB internal storage (actual formatted capacity will be less)
4 GB RAM
ConnectivityMicro HDMI
USB 3.0 host via dock connector²
Micro SD card
Nano SIM slot
SensorsMotion tracking camera
3D depth sensing
Accelerometer
Ambient light
Barometer
Compass
aGPS
Gyroscope
Audio OutputDual stereo speakers
3.5 mm audio connector (OMTP)

Viene riportato che il sensore della bussola non sia funzionante

Il tablet viene fornito con un dock che funziona da ricarica ed ha una porta USB. La porta USB serve solo per connettere eventuali USB drive o simili, non funziona come canale Adb. Inoltre il tablet e' talmente assetato di risorse che se si connette il solo cavo USB (e non l'alimentazione del dock, 12V 2A con connettore positivo al centro del jack) il dispositivo si scarica invece di caricarsi)

Alcune applicazioni gia' pronte risultano essere
  • App Discovery Project Tango 
  • Room Scanner
  • RTAB-Map (permette esportazione in ply)
  • Tango Scan View (converte i file OBJ in PLY)
  • ADF Tools
  • Tango Explorer
  • Java Point Cloud Example (dagli esempi Java)
Scansione con RTAB-Map visualizzata con MeshLab

E' possibile ancora ricompilare gli esempi ma non sono riuscito a ricompilare questo progetto


Per ottenere i permessi di root si usa TangoRoot e ChainFireSU (io non sono riuscito ad eseguire il root perche' Android continua a dire che e' TangoRoot e' una applicazione pericolosa e non la mette in esecuzione)

I dati delle immagini di profondita' vengono immagazzinati di default in formato super compresso binario proprietario ADF che risulta poco documentato. In ogni caso ci sono applicazione di terze parti che esportano in formati piu' comuni come PLY. La directory di salvataggio dei file ADF e' mutata nel tempo ma in ogni caso sembra richiedere i permessi di root


venerdì 30 marzo 2018

Modello digitale del terreno con Google DayDream ed Unity

In questo post il metodo che ho usato per mostrare dati di modelli digitali del terreno con Unity ed il visore DayDream di Google

Il progetto che ho creato e'  di tipo Android. Nel Player Settings del progetto sotto XR Settings deve essere spuntato il supporto alla realta' virtuale e si aggiunge DayDream tra gli SDK. Sempre nel Player Settings si deve impostare in Other Settings un Minimum Level API a livello 24

Sicilia con Etna

Per prima cosa si crea il modello digitale.
L'immagine deve essere a scala di grigi, in cui il livello di grigio indica la quota sul livello del mare (nero equivale a livello piu' basso, spesso il livello del mare, il bianco e' la quota piu' alta)

Si crea un oggetto Terrain da GameObject/3D/Terrain con dimensioni pari a quelle del modello DEM
Si trascina l'immagine negli assets del progetto e si prende il file HeightmapfromTexture. Dalle proprieta' dell'immagine (a destra Advanced si deve spuntare Read/Write and Apply)
L'editor delle versioni moderne di Unity (Unity 3d 2017.2) non permettono di editare direttamente file JavaScript. Si copia quindi lo script in un editor e si aggiungono le seguenti linee (dove si dichiarano le variabili x ed y)

    var mapColors = heightmap.GetPixels();
    var map = new Color[w2 * w2];
    var y = 0.0;
    var x = 0.0;



 si salva il file e lo si trascina negli assets del progetto.

Si selezione negli assets l'immagine DEM importata e si clicca sul menu' in alto Terrain/HeightMapFromTexture

Per settare il livello di amplificazione delle quote si cambia il valore di Terrain Height nell'inspector

Il modello usato e' poco dettagliato 2048x2048 pixels


Una volta importato e settato il modello digitale si deve aggiungere il supporto DayDream a Unity.
Una volta scaricato il package Daydream per Unity e lo aggiunge al progetto con il menu Assets/Import Package/Custom/GoogleVRforUnity.unitypackage.


  • Si aggiunge quindi alla Hierarchy il modulo GvrEditorEmulator
  • Si crea quindi un GameObject (dal menu' in alto), Gameobject/Create Empty e si rinomina come Player
  • Si trascina la camera e si inserisce nell'albero sotto l'oggetto Player
  • Si aggiungono GvrControllerMain e GvrEventSystem
  • Se il progetto include una canvas deve essere aggiunto GvrPointerGraphicsRaycaster da Add Component
  • Si aggiunge GvrPointerPhysicsRaycaster alla Camera da Add component
  • Si aggiunge GvrControllerPointer agganciandolo al Player

giovedì 29 marzo 2018

Riconoscimento automatico targhe automobilistiche

Ho letto sul giornale che i Vigili Urbani di Firenze hanno a disposizione un sistema automatico di lettura delle targhe automobilistiche in modo da interrogare poi un database della motorizzazione per elevare multe...mi sono chiesto...quanto e' complicato questo metodo??

Avevo letto che la libreria OpenCV permetteva di fare il riconoscimento automatico ma frugando ho trovato un prodotto gia' fatto ovvero OpenALPR,,vale la pena provarlo facendo una prova veloce

(ps. per motivi di privacy le targhe sono oscurate, fidatevi che i risultati sono corrispondenti alla realta')

Fornendo all'algoritmo questa foto



Si ha come risultato questa lista. Il primo candidato, quello con il punteggio piu' alto, corrisponde al vero numero di targa.


Non tutte le immagini forniscono dati corretti e per assurdo se si fotografa una targa in primissimo piano l'algoritmo fallisce miseramente

Piccoli artisti crescono



Mamma e babbo

mercoledì 28 marzo 2018

Frecce Tricolori su Firenze 28 Marzo 2018











per cercare di fare partire il tempo la registrazione sbirciavo su un cellulare FlightRadar24 nella speranza che gli aerei delle Frecce avessero i transponder accesi....no...i militari a quanto pare non usano questo sistema ....in ogni caso ho avuto l'indicazione che la pattuglia era in zona quando un volo civile ha iniziato un circuito di attesa prima di entrare nell'area fiorentina


lunedì 26 marzo 2018

Immagini Raw su Gimp ed Android

Scattare una foto con un telefono cellulare e' semplice, scattare una foto con una resa cromatica soddisfacente non e' banale.

Per prima cosa si deve scattare una foto salvando i dati in formato Raw. Cio' non e' possibile con tutte le fotocamere dei telefoni (per quelli piu' costosi in genere si') e bisogna in ogni caso appoggiarci ad applicazioni esterne come AZ Camera (una delle poche che permette il salvataggio raw in modo gratuito). Lo scatto avra' una estensione .dng (il formato DNG non e' esattamente coincidente con il formato RAW ma per quello che seguira' non ci sono significative differenze) ed avra' la dimensione di qualche decina di Mb

Per avere dei colori fedeli si deve includere nell'immagine anche una tavola dei colori di riferimento come la CheckerColor di X-Rite. Si tratta di un oggetto molto costoso, sul centinaio di  euro al momento, che e' formato da 24 mattonelle di colore omogeneo e calibrato


Se si include la tavola di riferimento nell'immagine si puo' poi usare il software ColorChecker Camera Calibration che elabora l'immagine, trova il riferimento e crea un file .dcp di riferimento per la fotocamera (attenzione, se la foto e' sovraesposta il software non funziona)

A questo punto con il programma dpc2icc si puo' convertire il profilo camera in .icc, il formato desiderato da Gimp. (attenzione: per la conversione e' necessario inserire la temperatura di colore)

Di default Gimp non sa gestire i file raw ed e' necessario installare il pluging ufraw. Scaricando pero' questo pacchetto si trova Gimp con gia' incluso il pacchetto ufraw. Aprendo un file .dng si apre in automatico ufraw


Da qui si possono impostare le impostazioni della camera importando il file .icc. Premendo Ok l'immagine corretta viene quindi inviata a Gimp per le successive modifiche

A questo punto non e' finita....avere una foto cromaticamente calibrata non vuol dire che riusciamo a vederla a monitor con i colori giusti perche' anche il monitor (o lo schermo del telefono) deve essere calibrato mediante apposite applicazioni (tipo ColorTrue di X-Rite per Android) ed appositi dispositivi hardware chiamati colorimetri (tipo ColorMunki X-Rite del costo di un centinaio di euro)

In conclusione ottenere i colori corretti su PC o Android e' piuttosto costoso....

Estendere raggio d'azione dei beacons


Ho fatto una prova per estendere il raggio di ricezione del segnale dei Beacons Estimote. Per questo motivo ho preso un dongle USB Bluetooth 4.0 con connessione antenna SMA ed una antenna esterna direzionale della TP-LinK, anche questa dotata di connettore SMA



L'antenna e' nata per WiFi ma visto che sia WiFi che BT lavorano a 2.4 GHz non ci sono problemi

Le misure sono state fatte con un programma Python allontanandosi via via dall'antenna. In una prova di un beacon in modalita' Eddystone sono partito con un valore di RSSI di circa -46 per arrivare a circa 140 m di distanza ad un valore di RSSI -96.


Vettore normale su nuvola di punti

Il problema e' questo : data una nuvola di punti, generata da un sensore come Kinect, determinare i vettori normali delle superfici triangolari che hanno come vertici i punti della nuvola stessa.
Il sistema di coordinate ha l'asse Z orientato come la distanza dal sensore, X ed Y invece sono lungo la dimensione della matrice di acquisizione

Presi tre punti nello spazio (x1,y1,z1),(x2,y2,z2),(x3,y3,z3) non allineati (questa condizione visto che i dati vengono da uno strumento di misura reale diciamo che e' soddisfatta a priori) per calcolare l'equazione del piano si deve calcolare il determinante della seguente matrice con la condizione che sia uguale a zero

(x-x1,   y-y1, z-z1,
 x2-x1, y2-y1, z2-z1,
 x3-x2, y3-y2, z3-z2)

con la formula di Laplace per il determinante si ha che (x,y,z sono le variabili)

(x-x1)[(y2-y1)(z3-z1)-(y3-y1)(z2-z2)] - (y-y1)[(x2-x1)(z3-z1)-(x3-x1)(z2-z1)]+ (z-z1)[(x2-x1)(y3-y1)-(x3-x1)(y2-y1)]= 0

si ha cosi' un risultato nella forma

ax+by+cz = 0

una volta calcolato il piano si deve calcolare la normale (nx,ny,nz)si calcola la derivata parziale 

F = ax +by+cz

nx = dF/dx, ny = dF/dy, nz = dF/dz.

Visto che si tratta di un piano la derivata parziale e' banale e le componenti del vettore normale sono (a,b,c)

-----------------------------------------------------------
Un metodo alternativo (che non prevede di calcolare prima l'equazione di un piano) e' quella di calcolare il prodotto vettoriale tra i due del triangolo). Per esempio dati sempre i tre punti (x1,y1,z1),(x2,y2,z2),(x3,y3,z3) si prendono due vettori

v = (x2-x1, y2-y1, z2-z1)
w = (x3-x1, y3-y1, y3-y1)

il vettore normale e' dato dal determinante della matrice

(x,y,z
v1 ,v2 ,v3,
w1,w2,w2)

n = u X v = (v2w3-v3w2)x+(v3w1-v1w3)y+(v1w2-v2w1)z


Adesso c'e il problema e' di normali ce ne sono due essendo la superficie orientata (brutalmente una sotto ed una sopra al piano) oppure nel prodotto vettoriale dipende dall'ordine con cui si pongono i vettori (vXw e' diverso da wXv)

A questo punto si puo' procedere normalizzando il vettore.

nn1 = n1/sqrt(n1n1+n2n2+n3n3)
nn2 = n2/sqrt(n1n1+n2n2+n3n3)
nn3 = n3/sqrt(n1n1+n2n2+n3n3)

il passaggio da coordinate cartesiane a coordinate.




Se si guarda la libreria PCL la ricostruzione della normale ad una superficie viene effettuata mediante il calcolo delle componenti principali che permette anche di gestire anche che l'orientazione delle normali sia coerente 

mercoledì 21 marzo 2018

Rough AP

Ancora una domanda: ma se mi connetto ad un access point pubblico quali rischi si possono correre?? Ho provato a montarmi un Access Point per auto rubarmi le credenziali di accesso alla mia webmail lavorativa (Squirrel Mail su un accesso HTTP ..non HTTPS)

La cosa e' stata particolarmente banale. Per l'Access Point ho visto che c'erano molte alternative ma alla fine quella piu' semplice e' stata quella di usare WiFi Pumpkin.



Per recuperare le credenziali di accesso ho usato net-creds.py.
Il login e la password recuperati hanno necessitato 10 minuti di lavoro...non di piu'
Si ..vabbe'...ma HTTPS ?? Non ho provato ma qualcosa mi dice SSLSTRIP ... non funziona ovunque ma e' sempre una possibilita'

lunedì 19 marzo 2018

Nascondersi su una LAN

Mi e' venuta una domanda e provo a rispondermi...e' possibile nascondere completamente un dispositivo, per esempio Linux, su una LAN?

Iniziamo con le cose semplici. Per nascondersi da una scansione di port scanning tipo NMAP sicuramente bisogna non esporre nessun servizio di rete. Questo e' facile perche' basta configurare una regola del firewall della propria macchina che droppando (DROP su Iptables o simil) tutte le connessioni in ingresso.

Rimane il problema che alcuni tipi di demoni (tipo AVAHI) generano automaticamente traffico in uscita rendendovi visibili a livello di traffico sulla macchina di frontiera. Ovviamente la macchina deve essere configurata anche con un IP statico in modo da non fare richieste al DHCP server

E fino qui cose semplici...rimane il protocollo ARP, il responsabile di associare il MAC Address ad un IP. Per lavorare uno switch od un router devono avere una tabella di conversione tra MAC Address ed IP. Tale tabelle viene generata inviando delle pacchetti ARP Request a cui ogni client risponde dando le proprie generalita' di rete oppure monitorando in modo passivo il traffico di rete tenendo nota delle coppie IP-MAC (poi ci sono gli accoppiamenti statici ma questi vengono generati dall'amministratore di sistema direttamente nello switch e non sono di interesse)

E' possibile disabilitare le risposte del protocollo ARP ma cio' impedirebbe immediatamente alla macchina le sue funzionalita' di rete...si potrebbe solo vedere il traffico in modo completamente passivo in modalita' promiscua ma su una rete switchata, come sono praticamente tutte adesso, non avrebbe alcun senso.

In conclusione e' possibile nascondersi completamente in una lan come un computer spento o come un terminale con il cavo di rete staccato...non facendo niente

LLama3 Anita

A seguito di questo post ho provato a vedere ho provato a vedere cosa accadeva ad utilizzare un modello specifico per la lingua italiana in...