Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Proteggere file EXCEL con VBA?

    Salve a tutti,
    volevo sapere se è possibile rendere un file excel non diffondibile, vi faccio un esempio:

    - pincopalla ha fatto un bel programma in excel e vorrebbe venderlo/affittarlo a dei clienti
    - pincopalla non vorrebbe che il suo cliente lo "regalasse" ad altri
    - pincopalla vorrebbe che, allo scadere della licenza, il programma fosse inutilizzabile

    Personalmente non sono un superesperto di excel o di VBA, ma avevo pensato ad una soluzione tipo:
    inserire una funzione VBA che, ad ogni avvio, vada a scrivere (se non è già presente) o leggere un file nascosto in cui è memorizzata una data di scadenza e la confronti con la data odierna (magari non recupera proprio dalla macchina stessa, insomma trovata in modo che sia veritiera). Se le due date coincidono viene scatenata una funzione che cancella le macro.
    Ok, qui ho risolto il problema della scadenza (forse), vorrei sapere come fare per evitare che lo diffondesse...avete qualche idea? Anche ad ampio respiro, cioè se è il caso di integrare il programma excel in un'altro software ad esempio...non saprei.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Tutto dipende dalla volonta' del cliente di pincopalla di "fregarlo" ...

    Se la volonta' e' molto alta, non ci sara' metodo valido insuperabile (dal cliente stesso o da un esperto su suo incarico ...) ...

  3. #3
    Qualunque protezione basata su macro non è assolutamente sicura, anche solo per la banalissima ragione che si tratta di codice leggibile dall'utente finale, il quale può avviare senza problemi l'editor di macro e rimuovere la funzione di controllo scadenza o modificarla in modo che consenta sempre l'esecuzione delle altre macro. La protezione macro di excel, per cui dovrebbe essere possibile bloccare la visualizzazione delle stesse con una password, non vale una cicca: infatti aprendo il file di excel con un hex editor (o più banalmente con il classico notepad) è comunque possibile visualizzare il codice sorgente, individuare il file "segreto" e modificarlo in modo da non far scadere mai il periodo d'utilizzo. In più la stessa protezione può essere bypassata facilmente (ho scritto in un'oretta - il tempo di documentarmi - un programma in C++ che si occupa di sostituire la password delle macro di excel con una password nota, uno spazio), per cui si ritorna ad incorrere nei problemi descritti prima.
    Quanto al blocco della distribuzione del file ti basti pensare al fatto che non ci sono riuscite nemmeno le multinazionali del software, per cui...
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459

    Moderazione

    Ho spostato la discussione all'interno del forum dedicato a Visual Basic (VBx, VBA, ...) e ai linguaggi per .NET Framework (VB.NET, C#, ...).

    In futuro, poni in questo forum le domande relative a questi linguaggi.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5

    Re: Moderazione

    Originariamente inviato da alka
    Ho spostato la discussione all'interno del forum dedicato a Visual Basic (VBx, VBA, ...) e ai linguaggi per .NET Framework (VB.NET, C#, ...).

    In futuro, poni in questo forum le domande relative a questi linguaggi.

    Ciao!
    Si scusa, contavo EXCEL come argomento principale, quindi non trovando nessuna sezione ho postato qua...il VBA era solo una pensata fatta da me sul momento

    Grazie a tutti comunque!

    Che soluzione mi proponete? Nel senso, data per ormai impossibile la protezione definitiva del programma excel, come posso fare per risolvere/aggirare il problema?
    - includere il foglio excel in un'altra struttura, magari fatta con uno strumento "proteggibile"
    - rifare il foglio excel, ma non più in excel (e a questo punto vorrei sapere che linguaggio/strumento mi consigliate).

    Grazie!

    Francesco

  6. #6
    Forse puoi aprire in un container OLE il tuo foglio, salvarlo come file OLE, crittografarlo e includerlo come risorsa binaria in un'applicazione nella quale viene decrittato e aperto da un container OLE che permette di lavorarci sopra.
    Ancora meglio: per risolvere il problema della durata della licenza puoi crittografare il file OLE salvato con una chiave ricavata dall'anno/mese/settimana/... in corso; il programma all'avvio tenterà di decrittare il file ricavando la chiave di decifratura dall'anno/mese/settimana/... in corso. Ora, se questo è corretto l'applicazione non avrà problemi, decritterà correttamente il documento OLE e lo caricherà; altrimenti il programma si ritroverà con una chiave scorretta, per cui non riuscirà a decrittare il documento OLE e quindi avviserà l'utente che il periodo di utilizzo è scaduto. Il principale difetto di questo sistema è che dovresti ricifrare il documento OLE e rilinkare con le risorse il programma per ogni nuovo periodo di validità (ad es. ogni anno); in più non sono assolutamente sicuro che sia impossibile spiare il contenuto dei container OLE per estrarne il documento in essi contenuto.
    E se l'utente modifica la data per fare andare il programma? In questo caso si può obbligare l'utente a connettersi ad internet, in modo che la tua applicazione si connetta ad un server NTP per rilevare data e ora corretta (anche se questo sistema può essere aggirato mettendo in piedi un server NTP fasullo e collegando nel file hosts il suo IP al nome del server che interroga la tua applicazione); un'altra possibilità è scrivere da qualche parte (registro/file nascosti/...) la data e l'ora di ogni avvio e chiusura del programma, in modo che non sia possibile "tornare indietro nel tempo" senza che il programma non lo noti al volo. Anche questo sistema non è immune da problemi: con appositi strumenti è possibile individuare il file (monitorando l'attività I/O del programma) e modificarlo in modo da farlo andare.
    Circa il blocco della copia tra un PC e l'altro di questo applicativo credo che l'unica sia sviluppare un sistema di attivazione tipo Windows XP.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.