sabato 14 aprile 2018

Firefox Portable Custom

Condeterminati applicativa da rilasciare nasce anche l'esigenza di un browser custom per ridurreal minimo il cambio di configurazione da parte dell'utenza che combina sempre disastri sulle configurazioni. Oppure semplicemente per bloccare l'update di firefox o bloccare le impostazione di proxy o configurare forzatamente dei plug-in evitanto che l'utenza possa andare a toccare le configurazioni.

La soluzione è quella di usare una versione portable di Firefox.

Tutte le configurazioni disponibile sono presenti a questo indirizzo e successivamente vediamo come modificarle.


Per prima cosa è necessario modificare/creare il file \FirefoxPortable\App\Firefox\defaults\pref\autoconfig.js
inserendo riferimenti nel nostro file di configurazione:

pref("general.config.filename", "nomefile.cfg");
pref("general.config.obscure_value", 0);


il nostro file di configurazione: \FirefoxPortable\App\Firefox\nomefile.cfg

//GENERAL - STARTUP

//pagina di default
pref("browser.startup.homepage", "http://miapagina.lan");
lockPref("browser.startup.homepage", "http://miapagina.lan");

pref("browser.startup.page", 1);
lockPref("browser.startup.page", 1);

//lock default brauser
pref("browser.shell.checkDefaultBrowser", false);
lockPref("browser.shell.checkDefaultBrowser", false);

//GENERAL - TABS
pref("browser.tabs.warnOnClose", false);
lockPref("browser.tabs.warnOnClose", false);


//GENERAL - Language and Apparence
pref("layout.spellcheckDefault", 2);
lockPref("layout.spellcheckDefault", 2);


//GENERAL - Browsing
pref("general.autoScroll", true);
lockPref("general.autoScroll", true);

pref("general.smoothScroll", true);
lockPref("general.smoothScroll", true);

pref("accessibility.typeaheadfind", false);
lockPref("accessibility.typeaheadfind", false);

pref("accessibility.browsewithcaret", false);
lockPref("accessibility.browsewithcaret", false);


//GENERAL - Proxy
pref("network.proxy.type",0);
lockPref("network.proxy.type",0);



//GENERAL - Updated

pref("app.update.enabled", false);
lockPref("app.update.enabled", false);

pref("app.update.silent", false);
lockPref("app.update.silent", false);

//expire history
pref("browser.history_expire_days",0);
lockPref("browser.history_expire_days",0);

pref("browser.search.update",false);
lockPref("browser.search.update",false);


//SEARCH
pref("browser.urlbar.autocomplete.enabled",false);
lockPref("browser.urlbar.autocomplete.enabled",false);


//PRIVACY
pref("browser.formfill.enable",false);
lockPref("browser.formfill.enable",false);

pref("browser.cache.disk.enable",true);
lockPref("browser.cache.disk.enable",true);

pref("browser.cache.disk.capacity",5000);
lockPref("browser.cache.disk.capacity",5000);

pref("browser.cache.check_doc_frequency",3);
lockPref("browser.cache.check_doc_frequency",3);

pref("signon.rememberSignons",false);
lockPref("signon.rememberSignons",false);

pref("browser.urlbar.autoFill",false);
lockPref("browser.urlbar.autoFill",false);

pref("browser.preferences.privacy.selectedTabIndex",4);
lockPref("browser.preferences.privacy.selectedTabIndex",4);

//PRIVACY - Permissions
pref("browser.urlbar.showPopup",true);
lockPref("browser.urlbar.showPopup",true);

pref("dom.disable_open_during_load",false);
lockPref("dom.disable_open_during_load",false);

pref("privacy.popups.policy",1);
lockPref("privacy.popups.policy",1);

//PRIVACY - Security
pref("browser.safebrowsing.enabled",true);
lockPref("browser.safebrowsing.enabled",true);

pref("browser.safebrowsing.malware.enabled",true);
lockPref("browser.safebrowsing.malware.enabled",true);

pref("browser.safebrowsing.phishing.enabled",true);
lockPref("browser.safebrowsing.phishing.enabled",true);

pref("signon.prefillForms",false);
lockPref("signon.prefillForms",false);

pref("signon.rememberSignons",false);
lockPref("signon.rememberSignons",false);

pref("signon.expireMasterPassword",true);
lockPref("signon.expireMasterPassword",true);

pref("security.OCSP.enabled",0);
lockPref("security.OCSP.enabled",0);

pref("security.warn_entering_secure",false);
lockPref("security.warn_entering_secure",false);

//VARIE
pref("browser.tabs.warnOnClose",false);
lockPref("browser.tabs.warnOnClose",false);

pref("browser.feedview.showBar",false);
lockPref("browser.feedview.showBar",false);

pref("layout.textarea.spellcheckDefault",true);
lockPref("layout.textarea.spellcheckDefault",true);

//disabilita il messaggio di firefox sulle https
pref("security.insecure_field_warning.contextual.enabled", false);
lockPref("security.insecure_field_warning.contextual.enabled", false);


con la creazione di questo file è possibile personalizzare la parte di contenuti

\FirefoxPortable\Data\profile\chrome\userContent.css

ad esempio se vogliamo eliminare delle voci dalla pagina di configurazione alla fine è una semplice pagina html modificabile da questo css.


@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */

 @-moz-document url("about:preferences") {
#category-sync { display:none!important; }
#category-search { display:none!important; }
}

@-moz-document url("about:addons") {
#category-discover { display:none!important; }
#category-theme { display:none!important; }
#category-plugin { display:none!important; }
#category-service { display:none!important; }
#category-locale { display:none!important; }
#category-dictionary  { display:none!important; }
}

#context-back #context-sep-navigation {
    display:none !important;
}

 Per intercettare le configurazioni basta usare lo strumento di sviluppo integrato:





per eseguire sia firefox portable che firefox installato è necessario inserire questo file nella cartella portable principale.

file: FirefoxPortable.ini

[FirefoxPortable]
FirefoxDirectory=App\firefox
ProfileDirectory=Data\profile
SettingsDirectory=Data\settings
PluginsDirectory=Data\plugins
FirefoxExecutable=firefox.exe
AdditionalParameters=-contentLocale it -UILocale it
LocalHomepage=
DisableSplashScreen=false
AllowMultipleInstances=true
DisableIntelligentStart=false
SkipCompregFix=false
RunLocally=false



venerdì 15 settembre 2017

Test Syma X8HW con Andoer 4k


Potenziare la camera del Syma X8HW è stato un test ottimo effettuato nel periodo estivo. Dopo varie ricerche e articoli non volendo spendere cifre eccessive trovo questa Andoer 4k 1080P Wifi Cam 16 MP Action Camera 5,08 cm (2") Ultra HD LCD 170°








Modificate anche le slitte di atterraggio e blocco porta camera

Ecco una prova veloce con 4K per verificarne la qualità.









naturalmente con la colonna sonora dei Doctor Groove .... :)

martedì 25 luglio 2017

MongoDB, C and Bulk Operation


E' molto tempo che voglio provare ad eseguire delle operazione su MongoDB utilizzando il Linguaggio C. Sono tantissimi anni che non uso più il C (circa 18.. dai tempi dei CGI sulla WebSphere Commerce Suite di IBM).

Per prima cosa vediamo come installare sotto Debian/Ubuntu il driver con i relativi sorgenti.

apt-get install libmongoc-1.0-0

A questo punto inizio ad analizzare il funzionamento del driver, la documentazione è molto valida.

Il problema che voglio risolvere è un calcolo su un numero elevato di record. Per testing utilizzo il db del Meteo. Il calcolo prevede di prendere i dati presenti nell'archivio delle piogge (Field RC) che sono in realtà un numero incrementale azzerato ad ogni riavvio della console del meteo. Quindi oggi il contatore è 200, domani 200, dopodomani 201, quindi andando per differenza oggi è caduto 1 mm di pioggia.

La struttura dell'object su cui vengono eseguite le query di mongo è la seguente:


 I record sono circa 1 M.



per la compilazione del pacchetto basta eseguire il comando:


sudo gcc -o raindata raindata.c utils.c $(pkg-config --cflags --libs libmongoc-1.0)

 La cosa molto interessante è la funzionalità di Bulk insert molto simile alle transazione dei classici db relazioni. Ovvero si caricano tutti i dati in una struttura e poi si esegue una flush e tutti i dati vengo inseriti in modo molto veloce.

Non mi soffermo tanto sul calcolo del dato puro ma sulle performance di inserimento. 
La prima esecuzione è con insert ripetitive, la seconda con la funzionalità di bulk. 

Si passa da 8 minuti a 12 secondi!!



come sempre trovate tutto il sorgente sul github https://github.com/marcoberri/mbmeteomongoc

mercoledì 19 aprile 2017

SqlServer 2014 - Spring Oauth2 Sql Table Script


Script per la creazione delle tabelle di Spring Security per la gestione del Oauth2 sul db di SQLServer 2014

https://gist.github.com/marcoberri/b02d5c523c0e511bdd18bda18ee5eb38





sabato 8 aprile 2017

Microservices : Spring Boot + Eureka + Zuul + OAuth2

Esempio completo della gestione a Microservices con Spring Boot e tutto il pacchetto completo  di gestione di proxy e bilanciamento. Per la gestione dell'autenticazione sempre attraverso i services di spring con Oauth2. L'esempio è basato su Jpa su Hibernate e MySql.

Trovate i sorgenti completi https://github.com/marcoberri/microservices-example



Gestione della security


mercoledì 28 dicembre 2016

Syma - X8HW

Regalo di Natale Graditissimo!!!

Un bellissimo Syma X8HW.

Il mio primo drone è stato un syma e questo regalato da Cinzia dimostra come si sono evoluti negli ultimi 4 anni. Abbiamo una stabilità per i filmati ottima, è quasi impossibile schiantarlo per una manovra sbagliata facendolo ribaltare in aria. La stabilità data dalle dimensioni delle eliche e dalle dimensioni è formidabile, certo non è paragonabile ad un 250 da race ma per filmati da molta affidabilità paragonata al prezzo.

Ecco un video fresco fresco...



Il mantenimento dell'altitudine è buono, essendo molto leggero una bava di vento laterale lo rende meno manovrabile e meno stabile. A mio parere per panoramiche a 360 gradi è utile usarlo in assenza di vento per avere un discorso di stabilità laterale.



giovedì 18 agosto 2016

WpScan - Trovare le criticità del vostro blog in Wordpress

Stavo cercando un tool per analizzare le criticità esposte di un Wordpress.
Cosa di meglio di WpScan compreso nella distribuzione linux Kali...
I risultati sono stupefacenti quanto paurosi....