string obfuscation



  • string obfuscation
    di lucippo (utente non iscritto) data: 27/02/2014 12:08:26

    ciao ragazzi/e!

    mi chiedevo se fosse possibile criptare o offuscare una connection string (con password, userid etc etc) che sta in un VBA module in modo che nessuno la possa vedere nel modulo e nemmeno utilizzando la watch list o immediate window in modalita' di debug.
    Ho pensato di inserire la connection string in un hidden worksheet invece che nel modulo, ma cosi' facendo la stringa e' sempre visibile agli utenti piu sgamati utlizzando la watch list o immediate window.

    any idea?



  • di patel data: 27/02/2014 12:38:46

    ma ne vale la pena ? esistono macro vba in grado di individuare la password di protezione del documento.





  • di lucippo (utente non iscritto) data: 27/02/2014 13:31:41

    e quindo cosa si puo' fare per aumentare la protezione del documento? proprio nulla?



  • di Zer0Kelvin data: 27/02/2014 13:40:07

    Ciao.
    Puoi memorizzare la tua password in un Name e renderlo nascosto.
    Comunque, chiunque possa accedere al progetto VBA sarà lo stesso in grado di scoprire la password.
    Qui trovi un articolo che spiega come utilizzare un NAME per memorizzare un valore:
    h t t p://www.maurogsc.eu/excel/xlsarchivaredatinome.aspx



  • di Zer0Kelvin data: 27/02/2014 13:50:22

    PS: puoi impedire l'accesso al progetto VBA impostando una password.
    In tal modo sarà un "pò" più difficile che qualcuno vada a curiosare nei moduli VBA
    Dalla finestra del VBA:
    - Nel menu principale clicca su: Strumenti
    - Seleziona: Proprietà di VBAproject
    - Clicca su: scheda Protezione
    - Metti la spunta su: Proteggi progetto dalla visualizzazione
    - Inserisci la password e confermi con ok
    - Salvi il file, lo chiudi e poi riapri.

    D'ora in poi, per visualizzare la finestra del VBA verrà richiesta la password.
    Come detto da Patel, la protezione è tutt'altro che insuperabile, ma meglio di niente.



  • di lucip (utente non iscritto) data: 27/02/2014 17:23:38

    si, si, i miei progetti VBA di solito li proteggo con pwd, esattamente come mi hai indicato te. ma questa volta (la prima volta che mi capita) dovrei lasciare "aperti" alcuni module del progetto e nasconderne uno solo. Purtroppo il blocco tramite pwd blocca tutti i moduli, non e' seletttivo, che io sappia.

    p.s. provo ad utilizzare il "name" appena posso, grazie!



  • di Vecchio Frac data: 27/02/2014 17:42:25

    Questa faccenda del Name definito ma nascosto è molto interessante.
    Anche se sembrano proprietà di classe (e forse lo sono).
    Grazie per la dritta.





  • di Zer0Kelvin data: 27/02/2014 18:58:08

    Anche se sembrano proprietà di classe (e forse lo sono).
    _______________________________________________
    confermo, i Name sono degli oggetti e sono accessibili da
    Workbook.Names
    che è l'insieme di tutti i Name definiti della cartella.



  • di patel data: 27/02/2014 19:38:53

    però se il vba è accessibile la segretezza va a quel paese, ma la password del vba si scopre tanto facilmente quanto quella del documento ? sono legate tra loro ?





  • di Vecchio Frac data: 27/02/2014 21:01:46

    No, la password VBA è difficile da scoprire (anche quella dei fogli è difficile da rivelare).
    In entrambi i casi, coi comuni mezzi a disposizione, puoi impostare una password che ha la stessa forza decritattrice dell'originale.
    Significa che puoi sproteggere tranquillamente ma non puoi conoscere la password originale che viene così persa.
    Però per eludere la password VBA serve qualche accorgimento e un buon editor esadecimale.
    Avevo anche uno strumentino che sfruttava una backdoor di VBA ma sono secoli che non lo uso più e adesso chissà dov'è finito... :)





  • di scossa data: 27/02/2014 21:13:25

    A parte quanto già detto sull'inutilità della protezione a fini di "segretezza", devi considerare che se memorizzi la password (ad esempio in un hidden name) e quindi mettendone una fasulla nella stringa di connessione, poi devi prevedere un pulsante per lanciare l'aggiornamento della query tramite un codice che faccia il replace della password fasulla con quella reale.



  • di patel data: 28/02/2014 08:24:29

    A questo punto mi sempra inutile nascondere in un nome, se il vba è accessibile è accessibile anche il nome, quindi basta proteggere con password il vba, chi fosse tanto abile da scoprire la password sarebbe anche capace di leggere il nome nascosto.





  • di Vecchio Frac data: 28/02/2014 20:04:23

    A parte nascondere password, io pensavo alla grande utilità di avere variabili persistenti.
    Vero che per questo scopo si possono anche usare celle (nascondendole), ma l'idea è carina.





  • di Zer0Kelvin data: 28/02/2014 21:52:19

    Cit: Patel
    ________________________________________________________________________________________________________
    A questo punto mi sempra inutile nascondere in un nome, se il vba è accessibile è accessibile anche il nome, quindi basta proteggere con password il vba, chi fosse tanto abile da scoprire la password sarebbe anche capace di leggere il nome nascosto.
    ________________________________________________________________________________________________________
    Non ci scommettere, volendo ci sono diversi modi per rendere difficile la vita ad un hacker dilettante...



  • di Zer0Kelvin data: 28/02/2014 21:56:18

    Modi che richiedono "vere" abilità.

    PS: agli admin
    - non si potrebbe inserire la funzione "modifica post" nel forum?



  • di patel data: 01/03/2014 08:27:21

    sono curioso, perché non ce li illustri ? parlo di protezione, non il contrario.





  • di Vecchio Frac data: 01/03/2014 09:06:57

    Con gli strumenti Excel e VBA, dubito che si possa ottenere una protezione efficace.
    Con mezzi di terze parti (di crittazione seria intendo) forse si fa qualcosa.
    In ogni caso bisogna chiedersi quanto ne valga la pena, cioè non credo per esempio che un mio qualsiasi progetto - per quanto interessante e ben fatto - possa mai fare gola a chiunque :)
    Il principio fondamentale rimane comunque quello di non inserire mai nel codice user name, password o altri dati di accesso.
    Poi le tecniche di protezione adottabili sono comunque efficaci per scoraggiare l'hacker dilettante o, almeno, l'utente smanettone, distratto o troppo curioso. Per esempio in Azienda distribuisco volentieri i miei progetti e spesso effettuo una Protezione dei fogli ma senza password (senza dirlo), per cui chiunque sarebbe in grado di rimuoverla e fare danni, ma a quel punto diventa una cosa deliberata. Il metodo è più che sufficiente a raggiungere lo scopo: far lavorare gli utenti con la relativa sicurezza che non possono modificare celle inibite e che quindi vengono guidati nella compilazione.

    @Zer0Kelvin
    La struttura di questi forum è semplificata perchè rispecchia la semplicità dell'approccio alla community.
    Tutto l'impianto (PHP e HTML) è interamente costruito e mantenuto da patron Mauro senza appoggiarsi ad alcun sovrastrato di piattaforme forum, perciò risulta difficile implementare funzionalità avanzate o complesse.
    Ne consegue soprattutto che occorre mettere una certa attenzione nell'inviare i propri post e, se accade di dover correggere, è sufficiente inviare un post di modifica. Trovo anzi che sia meglio così, rispetto ad altri sistemi che consentono la modifica degli interventi, modifica dopo la quale si perde la traccia originaria.






  • di Zer0Kelvin data: 01/03/2014 17:57:58

    __________________________________________________________________
    di patel (Utente esperto) data: 01/03/2014 08:27:21
    sono curioso, perché non ce li illustri ? parlo di protezione, non il contrario.
    __________________________________________________________________
    Ce ne sarebbero diversi, ma richiedono tutti abbastanza tempo per essere realizzati.
    Per fare solo un esempio, è possibile:
    -Criptare la password prima di memorizzarla nel name, di modo che non sia possibile leggerla direttamente rendendo il name visibile
    -Creare dei "falsi bersagli", cioè una quantità di names che non contengono la vera password
    - "confondere" il codice VBA, con una sequenza di function di cui solo una restituisce la password corretta ed inserendo dei "circoli viziosi" usando Select Case, If e Goto, in modo da disorientare l'eventuale "Hacker"
    - inserire delle "trappole" che compromettono il funzionamento del codice se la password corretta non è stata inserita. Un buon posto dove inserire una trappola sono le routines degli eventi, per esempio.
    -rendere "invisibile" la routine che imposta la password. Il codice della routine può essere anch'esso nascosto in un name criptato, e viene inserita nel progetto VBA solo quando è necessario, per poi essere eliminata...
    -lo stesso metodo può essere usato per rendere invisibili altre routines, volendo.

    Potrei continuare, ma credo che questo sarebbe già sufficiente a scoraggiare chunque non sia "del ramo".
    Non dico che sia facile, o che ne valga la pena, solamente che si può fare.

    __________________________________________________________________
    di Vecchio Frac iniziata il 01/03/2014 09:06:57
    La struttura di questi forum è semplificata perchè rispecchia la semplicità dell'approccio alla community...
    __________________________________________________________________
    Ricevuto!



  • di patel data: 01/03/2014 20:47:22

    grazie Zer0, hai reso bene l'idea





  • di lucippo (utente non iscritto) data: 03/03/2014 16:00:03

    abbastanza difficile a quanto pare
    mi chiedevo se ci fossero dei software a posto per lo scopo?
    un software nel quale si potesse "far passare" il programmino excel e avere come risultato lo stesso programma funzionante e completamento "sigillato" ad occhi indiscreti??



  • di patel data: 03/03/2014 16:13:00

    esistono programmi che trasformano il file in exe
    www.drmsoft.com/Excel-to-exe-converter.asp
    h t t p://xlstoexe.com/