venerdì 4 maggio 2018

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

Change Detection with structural similarity

L'idea di base e' quella di cercare le differenze tra le due immagini sottostanti Non e' immediatamente visibile ma ci sono dei ...