• Category Archives Tricks
  • Metodi per ottenere molto faticando poco.

  • How to consume a web service, through client certification and Oauth2 Authentication, writing c# code.

    Versione Italiana.
    Who has done similar task , using visual studio, knows the IDE helps the developers, providing some classes useful to easly call a webservice. If the developer has available the WSDL file defining the service, Visual studio parses it , and automatically builds the libraries

    But, if the call must use a channel, encrypted by a client certificate, and further the server expect an Oauth2 authentication token , enclosed in the request, the task becomes quite harder

    With C# it’s quite simple to make an HTTP request using a client certificate to make the call, on the same HTTP request and also simple to add the OAuth2 token among the Headers.
    If the request is simple (It has few parameters and is not structured on several levels), the developer can send a raw HTTP request, inserting the parameters in the body of this.
    If instead the parameters of the request are many and very structured, doing such a thing would take a lot of time.

    I found a way to use the libraries generated by Visual studio, on an encrypted channel and with the Oauth2 authentication token.

    Below, is the code that would be used for a call with the usual method:

    var Binding = new BasicHttpBinding();
    EndpointAddress ServiceEndPoint = new EndpointAddress("http://EndpointAddress.com");
    ServiceReference.Serviceclient client = new ServiceReference.Serviceclient(Binding, ServiceEndPoint);
    ServiceReference.ServiceResult result = client.Method(ServiceParameter);

    If you want to make the call on an encrypted channel, you must first create a certificate object:

    X509Certificate2 certificate = new X509Certificate2("filePath.p12", "Password");

    Where the file containing the certificate must be in p12 format and the insertion of its relative password is mandatory.
    Next you need to create a binding type object different from the usual one, while the endpoint object will remain on the same type:

    var Binding = new WSHttpBinding();
    Binding.Security.Mode = SecurityMode.Transport;
    Binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
    EndpointAddress ServiceEndPoint = new EndpointAddress(https://EndpointAddress.com);

    Note: This time the endpoint is on HTTPS, no longer on HTTP, indeed this type of binding is compatible only with https.

    Then you need to create the client object and set the certificate on it:

    ServiceReference.Serviceclient client = new ServiceReference.Serviceclient(Binding, ServiceEndPoint);
    ServiceReference.ServiceResult result = client.Method(ServiceParameter);
    
    Client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication = 
    new System.ServiceModel.Security.X509ServiceCertificateAuthentication();
    System.ServiceModel.Security.X509CertificateInitiatorClientCredential certificateInitiator = 
    Client.ClientCredentials.ClientCertificate;
    certificateInitiator.Certificate = certificate;

    With this we have set up communication through the certified channel, now we must make sure that a token at our convenience is also included in the header of the generated HTTPS request. This is quite complicated, to be able to do it you need to act on the context of the call:

    using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
    {
           MessageHeader<string> header = new MessageHeader<string>("Bearer " + Oautoken);
           var untyped = header.GetUntypedHeader("Authorization", "");
           OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
           HttpRequestMessageProperty requestMessage = new 
           HttpRequestMessageProperty();
           requestMessage.Headers["Authorization"] = "Bearer " + "TokenString";          
           OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] 
           = requestMessage;
           result = client.method(serviceParameter);
    }


  • Come chiamare un Web service tramite certificato Client e autenticazione Oauth2 tramite libreria c#

    English version.
    Chi è già del mestiere , sa che Visual studio viene in aiuto degli sviluppatori che devono eseguire chiamata a servizi web, fornendo a questi, delle librerie generate analizzando il file WSDL del servizio.

    Ma quando la chiamata deve avvenire attraverso un canale cifrato, con un certificato client, ed in più il server si attende un token di autenticazione Oauth2 incluso nella richiesta, il lavoro si complica.

    Con C# è abbastanza semplice effettuare un richiesta HTTP utilizzando un certificato client per effettuare la chiamata, sulla stessa richiesta HTTP è semplice anche aggiungere il token OAuth2 fra gli Header.
    Se la richiesta è semplice (Ha pochi parametri e non strutturati su più livelli), lo sviluppatore può inviare una richiesta HTTP grezza, inserendo i parametri nel body di questa.
    Se invece i parametri della richiesta sono molti e molto strutturati , fare una cosa del genere, porterebbe via moltissimo tempo.

    Io ho trovato il modo di utilizzare le librerie generate da Visual studio , su un canale criptato e con il token di autenticazione Oauth2.

    Qui di seguito il codice che si userebbe per una chiamata con il metodo consueto:

    var Binding = new BasicHttpBinding();
    EndpointAddress ServiceEndPoint = new EndpointAddress("http://EndpointAddress.com");
    ServiceReference.Serviceclient client = new ServiceReference.Serviceclient(Binding, ServiceEndPoint);
    ServiceReference.ServiceResult result = client.Method(ServiceParameter);

    Volendo invece effettuare la chiamata su canale cifrato, occorre prima creare un oggetto certificate:

    X509Certificate2 certificate = new X509Certificate2("filePath.p12", "Password");

    Dove il file contenente il certificato deve essere in formato p12 e l’inserimento della sua relativa password è obbligatorio.
    Successivamente bisogna creare un oggetto di tipo binding diverso dal consueto, mentre l’oggetto endpoint rimarrà dello stesso tipo:

    var Binding = new WSHttpBinding();
    Binding.Security.Mode = SecurityMode.Transport;
    Binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
    EndpointAddress ServiceEndPoint = new EndpointAddress(https://EndpointAddress.com);

    Nota bene: L’endpoint questa volta è su HTTPS , non più su HTTP, infatti questo tipo di binding è compatibile sono con https.

    Poi è necessario creare l’oggetto client e impostarvi sopra il certificato:

    ServiceReference.Serviceclient client = new ServiceReference.Serviceclient(Binding, ServiceEndPoint);
    ServiceReference.ServiceResult result = client.Method(ServiceParameter);
    
    Client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication = 
    new System.ServiceModel.Security.X509ServiceCertificateAuthentication();
    System.ServiceModel.Security.X509CertificateInitiatorClientCredential certificateInitiator = 
    Client.ClientCredentials.ClientCertificate;
    certificateInitiator.Certificate = certificate;

    Con questo abbiamo impostato la comunicazione attraverso il canale certificato, adesso dobbiamo fare in modo che nell’header della richiesta HTTPS generata, venga incluso anche un token a nostro piacimento.
    Questo è abbastanza complicato, per poterlo fare bisogna agire sul contesto della chiamata:

    using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
    {
           MessageHeader<string> header = new MessageHeader<string>("Bearer " + Oautoken);
           var untyped = header.GetUntypedHeader("Authorization", "");
           OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
           HttpRequestMessageProperty requestMessage = new 
           HttpRequestMessageProperty();
           requestMessage.Headers["Authorization"] = "Bearer " + "TokenString";          
           OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] 
           = requestMessage;
           result = client.method(serviceParameter);
    }


  • Nuova versione di Filtro

    Mi sono reso conto che il programma da me scritto e pubblicato in questo articolo pur essendo utile a riposare la nostra vista, non permette la facile interazione con le finestre.
    Per questo motivo ho modificato la vecchia versione con una migliore.
    Con il nuovo FILTRO scaricabile da qui è possibile riposare la vista mentre si lavora.
    I valori di colore e di trasparenza si regolano come nella versione precedente (come precedentemente descritto qui)
    Le novità sono le seguenti:
    -Il programma si apre autonomamente a pieno schermo , togliendo un po di impegno all’utente.
    -Il riquadro semitrasparente rimane sempre la prima finestra in vista, e diventa trasparente appena il puntatore viene mosso sopra di esso. Quando è completamente trasparente è possibile operare con le finestre sottostanti come se il riquadro non esistesse. Dopo circa 3 secondi che il mouse non viene mosso il riquadro torna ad essere visualizzato. Questo permette di leggere in maniera riposante un documento, scorrendo senza fatica la visuale sulle diverse pagine.


  • Filtro lettura

    Ho gia descritto in questo vecchio articolo il modo per permetterci di stancare meno la nostra vista mentre lavoriamo al PC.
    Tuttavia mi sono imbattuto nel problema che esistono documenti il cui colore di sfondo non viene modificato dal colore di sistema di Windows. Per esempio un documento in formato PDF con lo sfondo bianco , rimarrà sempre con lo sfondo bianco, che a mio avviso risulta molto stancante.
    Trovandomi a dover leggere molti documenti Pdf di quel genere per svariate ore, ho fatto fronte a questo problema creando un programma che appare come un vetro semitrasparente su tutto lo schermo.
    Il programma si può scaricare qui
    Per usarlo è sufficiente avviarlo e allargarlo a tutto lo schermo.
    È Possibile modificare il colore e il livello di trasparenza con la tastiera in questo modo:
    -Per modificare il livello di trasparenza si usano i tasti SU e GIU della tastiera. SU per diminuire la trasparenza e GIU per aumentarla.
    -Per modificare il colore bisogna operare separatamente su ogni singolo colore primario: Tenendo premuto il tasto R (red) è possibile alzare e abbassare il livello di rosso con i tasti SINISTRA e DESTRA della tastiera. Stressa cosa per gli altri colori tenendo premuto G (green , Verde) e il tasto B (blue , blu)
    Ogni volta che viene effettuata una modifica i valori dei colori e dell’opacità (alpha) vengono descritti dal testo in alto a sinistra della finestra.
    Provate a modificare questi valori in modo da riuscire a leggere il testo che sta sotto senza stancare gli occhi.
    Spero che Il programma possa essere utile anche a voi.
    ————————————————-
    Adesso ho sviluppato una nuova versione leggi qua


  • Da pdf a jpg.

    Cercando sulla rete per motivi di studio ho trovato un interessante programma che permette di ottenere le immagini in formato JPG di ogni singola pagina di un documento PDF.
    Il file è scaricabile da qui
    Il programma è liberamente utilizzabile da tutti.
    Funziona da riga di comando attraverso il prompt di ms-dos.
    Ma esiste un modo più semplice veloce e intuitivo per utilizzarlo. Basta fare Drag & drop con l’interfaccia del nostro sistema operativo Windows. Per ottenere le immagini di ogni pagine del documento PDF dobbiamo cliccare sul file PDF e trasportarlo sull’icona dell’eseguibile del nostro programma appena menzionato.
    Automaticamente il programma creerà una cartella nella stessa cartella dove è presente l’eseguibile chiamata “PDF_to_JPG_files” contenente tutte le immagini.
    Per il corretto funzionamento è necessario accertarsi che non sia già presente una cartella con lo stesso nome. In quel caso il programma termina l’esecuzione restituendo un messaggio di errore.


  • Il registro delle opposizioni

    Il registro delle opposizioni è un archivio, istituito di recente per tutelare tutte le persone che non vogliono essere disturbate con chiamate commerciali e promozionali al telefono di casa.
    Ogni persona che si è inscritta per essere inserita in questo registro, diventa automaticamente non contattabile telefonicamente delle aziende che fanno promozioni.
    Dopo l’istituzione di questo registro vi è l’obbligo da parte delle aziende che fanno promozione telefonica di consultare il registro prima di ogni chiamata, per verificare se il numero vi è presente oppure no.
    Iscriversi al registro è semplicissimo, basta visitare il sito http://www.registrodelleopposizioni.it/ cliccare su “Area abbonato”, selezionare la modalità di iscrizione via Web, e cliccando sull’apposito link raggiungere la pagina dove dovranno essere inseriti tutti i dati personali per l’iscrizione.
    Una volta effettuata l’iscrizione occorre aspettare un po di tempo per ricevere un’e-mail all’indirizzo specificato che comunica la presa in carico dell’ iscrizione.
    In questo messaggio è riportato un codice che serve (utilizzandolo sul sito) di consultare lo stato effettivo della nostra iscrizione al registro.
    Appena effettuata la procedura di registrazione la richiesta rimarrà pendente per un breve periodo di tempo. Successivamente quando la linea telefonica sarà ufficialmente inserita nel registro nessun operatore commerciale potrà chiamare quel numero.
    Ho letto articoli in cui si parla di un minimo di 6000 euro di risarcimento per le chiamate a numeri iscritti al registro.


  • Configurazione di un modem router.

    Molto spesso quando acquistiamo un router troviamo nella confezione anche un cd per l’installazione.
    Sappiate che, a meno che il router non funzioni anche attraverso la porta usb questo cd non è assolutamente necessario.
    Spiegherò passo passo come configurare manualmente un router
    Per prima cosa è necessario collegare tutti i cavi come descritto nelle istruzioni (telefono, Ethernet, alimentazione)
    Dopo aver fatto questo il nostro computer stabilirà autonomamente una connessione con il router. A questo punto dovremo indagare nelle impostazioni di rete per trovare l’indirizzo del “Gateway” un indirizzo IP che non è altro che una serie di 4 numeri separati da un punto. (Ad esempio 192.164.0.1)
    Ora apriamo il browser per navigare e li scriviamo nella barra degli indirizzi, il numero che abbiamo appena trovato e premiamo Invio.
    Si aprirà la schermata per le impostazioni del router sotto forma di sito internet.
    Dobbiamo navigare all’interno di questo “sito” per cercare la pagina con le impostazioni di connessione. In quella pagina inseriremo i parametri per la connessione(username e password) che ci sono stati dati dal nostro provider per la connessione.
    Dopo aver inserito questi dati e aver salvato le modifiche il gioco è fatto, il router dovrebbe connettersi e permettere ai computer ad esso collegati di navigare in internet.


  • Password

    Le password , custodi dei nostri dati confidenziali e dei nostri account online.
    In che modo funzionano? Come sceglierne una?
    In questo articolo spiegherò tutto brevemente.
    La password, concretamente , anche se noi la vediamo come un insieme di caratteri, è in realtà uno stream di byte, ovvero una sequenza di 1 e di 0, come qualsiasi cosa che ha a che fare con l’informazione elettronica.
    I tipi di password si dividono principalmente in due, quelle che servono per garantire l’accesso esclusivo a un sistema( e-mail, account di banking online, o anche nel computer di casa) e quelle che servono per proteggere i dati, in qualunque supporto siano essi memorizzati.
    Vediamo Il primo tipo
    Se la password serve a garantire l’accesso esclusivo ad un servizio remoto, il funzionamento della password non è molto complicato. Quando la persona che vuole entrare nell’account invia la sua password questa viene confrontata con la password che sta sul server del servizio, se corrisponde il server concede l’accesso all’utente che ha inviato la password.
    In questo caso il confronto avviene sul server, quindi l’utente generico non riceverà mai la password, per questo motivo la password può essere memorizzata sul server senza nessuna codifica. Un tocco di sicurezza in più consiste nel fare passare le comunicazioni di autenticazione tra utente e servizio in un canale sicuro,(canali criptati , tipo HTTPS su SSL).
    Se invece la password serve per evitare l’accesso a un sistema non remoto, come ad esempio la password che viene richiesta all’accensione del computer di casa, le cose si complicano.
    Ogni volta che il computer viene acceso, e l’utente inserisce una password, che poi dovrà essere confrontata dal computer, con un altra che è stata inserita prima , come password giusta per l’accesso.
    Come memorizzare questa password? Dove?
    Non è possibile memorizzarla nello stesso computer, perché chiunque voglia usare il computer potrebbe leggerla dal disco.
    Il problema viene risolto utilizzando delle cose che si chiamano “funzioni Hash one-way” , in termini matematici sono delle funzioni non invertibili. In parole povere se io uso una di queste funzioni su di una valore, il risultato è un altro valore , ma avendo a disposizione il secondo valore non posso arrivare a sapere qual’è il primo.
    Tutte le volta che un utente crea un account su un computer e inserisce la sua password, questa viene lavorata con la funzione one-way e il risultato viene memorizzato. Nessuno può arrivare alla password leggendo questo valore memorizzato.
    Ogni volta che un utente vuole accedere al suo account la password che inserisce viene a sua volta lavorata con la funzione ,e il risultato viene confrontato con quello memorizzato sulla macchina. Se i 2 sono uguali l’utente ottiene l’accesso, altrimenti no.

    Del secondo tipo fanno parte le password che servono per non permettere a chiunque di accedere a dati segreti.
    La cosa più semplice per fare questo è codificare i dati in modo non comprensibile, usando sistemi di codifica tipo il cifrario di Cesare o quello di Vigenère, ma al giorno d’oggi con le moderne tecnologie è possibile decodificare qualsiasi messaggio codificato con i cifrari in breve tempo.
    Ci vengono in aiuto i sistemi di cifratura a blocchi in chiave simmetrica. A blocchi perché i dati vengono prima divisi in blocchi e ogni blocco viene cifrato a se stante, chiave simmetrica perché la chiave che serve per cifrare è uguale a quella che serve per decifrare.
    I più famosi di questi sono AES, DES e il triple-DES.
    Con questi sistemi, solamente conoscendo la parola chiave è possibile risalire ai dati in chiaro. Solamente con sistemi che spiegherò nelle prossime righe è possibile (aspettando qualche anno 🙂 ) decodificare dei dati cifrati.

    COME SCEGLIERE LA PROPRIA PASSWORD.
    Quando scegliamo la nostra password per qualsiasi cosa, dobbiamo tenere conto che un computer è velocissimo nelle applicazioni meccaniche e ripetitive. Provare tutte le parole esistenti come password è un applicazione ripetitiva!!
    Questo approccio che usano gli hacker per trovare una password è denominato “Brute-Force” e consiste nel provare tutte le possibili combinazioni di caratteri.
    Un piccolo accenno teorico: il problema di trovare una password è un problema che si definisce “non polinomiale”, ovvero è un problema la cui complessità computazionale non è esprimibile con un polinomio. Se devo provare tutte le possibili sequenze di 5 caratteri dell’alfabeto italiano dovrò fare 21 elevato alla 5 tentativi. Più aumenta il numero di caratteri e più grande diventa l’esponente.
    Alla luce di ciò, se vogliamo complicare il lavoro allo “scassinatore” dobbiamo scegliere parole più lunghe possibile , e dobbiamo includere in essa numeri e simboli.
    Dato che provare solamente le parole di senso compiuto richiede meno tempo di provare tutte le combinazioni possibili, e lo scassinatore sa che tutte le persone sono portate a utilizzare come password parole che si ricordano bene, proverà volentieri tutte le parole di senso compiuto.
    per questo dobbiamo evitare di usare parole italiane, la cosa migliore sarebbe utilizzare simboli lettere e numeri alla rinfusa, tipo “ci/!rh%3m8” ma in questo modo si rischia di scordare la parola. Un altro buon metodo per scegliere una parola è mescolare parole di senso compiuto con simboli e numeri ad esempio : “tavolo7barca#” , “pino%pigreco1” che sono facilmente memorizzabili.
    Teniamo conto che utilizzando le lettere , i numeri e i simboli della codifica ASCII abbiamo a disposizione 128 scelte per ogni carattere della nostra password, quindi per ogni carattere che aggiungiamo alla nostra password moltiplichiamo per 128 il tempo necessario per scoprirla. Usando 12 caratteri lo scassinatore dovrebbe fare (128 elevato alla 12) prove per trovare la password, che sono 19342813113834066795298816. Ipotizzando che riesca a fare un milione di tentativi al secondo, gli occorrerebbero piu di 613356580 anni per trovare la password.


  • Immagini di dischi.

    Che cosa sono le immagini dei CD e dei dvd di cui si sente parlare?
    Non sono altro che file, in cui sono contenute tutte le informazioni che sono nel supporto ottico dal quale sono state create, tali per cui dal file dell’immagine è possibile riprodurre una copia del supporto.
    La cosa buona in questo è che creando l’immagine di un cd o un dvd questo puo essere trasportato all’interno di una penna USB, che è molto più piccola e pratica.
    Per utilizzare l’immagine di un supporto non occorre necessariamente masterizzare il contenuto dell’immagine su di un supporto, ma possiamo utilizzare un tool come ad esempio Daemon Tools che ci permette di accedere al contenuto dell immagine senza masterizzare nulla.
    Per esempio, mettiamo che io abbia un dvd da cui non mi voglio separare per nessuna ragione al mondo, anche un mio amico vuole questo dvd, e nessuno di noi due possiede un masterizzatore.
    Come posso fare?
    Semplicissimo, mi basta creare un immagine del dvd, farla avere al mio amico ,in un qualsiasi modo( tramite penna usb o tramite internet) il mio amico userà l’immagine con Daemon tools, e per lui sarà come avere il dvd originale.
    Vediamo in maniera più dettagliata i passi da compiere.
    Per creare un immagine , dovrò utilizzare un programma di masterizzazione, Clone cd , Nero Burning o lo stesso Daemon tools vanno benissimo.(Con il primo è facilissimo, c’è un tasto apposta nella schermata principale, con il secondo è un po più laborioso, occorre effettuare una copia di un supporto senza effettuare l’eliminazione dell’immagine a copia avvenuta)
    Una volta che avrò i file dell immagine (.CCD e .CUE nel primo caso, .NRG nel secondo) farò avere questi al mio amico.
    Il mio amico installerà Daemon tools nel suo computer, e questo provvederà a creare un lettore di supporti ottici virtuale.
    Da quel momento in poi il mio amico potrà inserire le immagini dei Dvd nel supporto virtuale come se fossero veri dischi, e funzioneranno allo stesso modo.


  • Rimuovere Office Genuine advantage

    Cosi come Windows Genuine Advatage (WGA) per la validazione della copia di Windows installata, Office Genuine Advantage (OGA) è un programma che la Microsoft utilizza nel tentativo di arginare la pirateria e diffusione delle copie contraffatte di Office.

    Anche se questo strumento non è necessario per il funzionamento di Office, Microsoft lo contrassegna come aggiornamento “necessario” o “importante”, e una volta installato non potrà più essere rimosso cosi come facciamo per i comuni programmi.

    Se state cercando di disinstallare Office Genuine Advantage dal vostro PC, non provate nemmeno ad usare i comuni programmi per la disinstallazione in quanto i tentativi saranno vani.

    Non per questo bisogna rinunciare, e ringraziando Dio, o in questo caso, MyDigital Life, c’è sempre un modo per porre rimedio.

    Esiste una laborioso e complessa procedura manuale per disfarsi di OGA, ma perché sforzarsi quando possiamo usare un comodo script.

    RemoveOGA è uno script batch che vi permetterà di disinstallare completamente Office Genuine Advantage dal vostro PC. Basta scaricare ed eseguire il file batch per automatizzare la procedura e dire addio a OGA.

    Sia chiaro, rimuovere Office Genuine Advantage non significa per forza che avete una copia pirata di Office, infatti le due cose non sono correlate e magari volete rimuoverlo solo perché temete che la Microsoft spii il vostro sistema, cosa che tra l’altro è già successa con WGA, trascinando l’azienda in tribunale.