Forum >> Programmazione Python >> Scripting >> CRIPTARE DATABASE GENERATO CON SHELVE

Pagina: 1

Salve a tutti amici, come da titolo è possibile proteggere l'accesso ai database creati con il modulo shelve con una password ? grazie in anticipo :)



PS: Se questo non fosse possibile (come deduco dalla documentazione) esiste un metodo alternativo ? :hug-left:


--- Ultima modifica di dandi98 in data 2018-10-23 11:39:36 ---
Prima di ogni altra considerazione, dovizia di dettagli la tua domanda. Di che DB stai parlando, su quale piattaforma ed aggiungi tutte quelle belle informazioni che tanto piacciono a chi dovrebbe risponderti. inoltre a seconda di quale DB stai usando, esistono degli strumenti proprietari che potresti usare.

Ma andiamo per gradi.

Cya
buongiorno Daniele, scusami mi ero dimenticato di fornire dettagli



innanzitutto sto lavorando su Windows, ho realizzato questo script per convertire i dati di un file csv in un dizionario memorizzato con il modulo shelve.

Ora vorrei proteggere la lettura di questo database che vado a creare con un codice o una password in modo da poter proteggere il suo contenuto da persone che non abbiano il codice segreto








import csv, shelve




shelfFile = shelve.open('db',writeback=True)




shelfFile['codici'] = {}




openedCsv = open('codici.csv')




readerCsv = csv.reader(openedCsv)




codici_importati = list(readerCsv)




for i in codici_importati:

    shelfFile['codici'][i0] = i1




shelfFile.close()



--- Ultima modifica di dandi98 in data 2018-10-23 13:57:35 ---
Mah, la risposta è sì e no. Prima di tutto, *non* stiamo parlando di un database. I database sono bestie di un'altra natura, e hanno le loro regole. Tu hai un semplice file di testo (un csv nel tuo caso) che vuoi "criptare", diciamo così. Ora, qualcosina per fare questo lo trovi anche nella libreria standard https://docs.python.org/3/library/hashlib.html#key-derivation ma sicuramente l'opzione più completa in Python è il pacchetto Pycrypto. Un'alternativa più facile da usare è questa https://cryptography.io/en/latest/


Il problema con tutto questo, naturalmente, è sempre *dove* conservi la tua chiave (password, per capirci). Capisci bene che se la chiave è direttamente nel codice, allora chiunque ha accesso al codice ha accesso anche alla chiave. E più in generale, se la chiave sta da qualche parte nel computer dell'utente, allora l'utente può averci accesso. E qui si apre tutta una lunghissima filastrocca che ogni volta si sente ripetere... "sì ma io metto la password in un file e lo nascondo bene in una directory molto annidata... sì ma guarda che il codice deve comunque contenere il nome di quella directory, quindi... e ma io "compilo" il codice in pyc... sì ma guarda che ci vuol poco a decompilare un pyc... sì ma io faccio girare il programma come altro utente... ma guarda che l'altro utente devi comunque crearlo, sulla macchina host..."... eccetera eccetera.


La morale della favola è che se fisicamente sia il codice sia il file da "criptare" sono ospitati in macchine non tue, allora *non* puoi "criptarlo" in maniera sicura. La soluzione è spostare l'una e/o l'altra cosa su una macchina di tua proprietà, e offrire queste cose all'utente come un servizio (tipo, una web application).


In ogni caso, puoi sicuramente divertirti a "criptare" un file, come esercizio, usando uno degli strumenti che ti ho linkato. Devi essere consapevole, comunque, che stai solo *offuscando*, non criptando veramente. Magari è sufficiente per le tue esigenze, eh.




ciao Ric

volevo fare una domanda forse è solo un buco nell'acqua

ma se con python si realizza un programma che apre i file

csv dove vengono memorizzate le chiavi per i file criptati

e lo stesso programma lo si converte in un eseguibile .exe?
E' ancora solo offuscamento. E nemmeno dei più complicati, visto che i tools che generano questi eseguibili non sono certo pensati per offuscare particolarmente il codice. Probabilmente basta aprire l'eseguibile con un editor esadecimale e ti ritrovi il codice in chiaro o tutt'al più con lo stesso livello di complessità di un normale pyc.


Tutto ciò che è a disposizione fisica dell'utente può essere ispezionato dall'utente, per definizione. Se quel "tutto" comprende anche la chiave, allora l'utente ha la chiave. Poi è ovvio che certe forme di offuscamento sono più difficili di altre da smontare, ma del resto certi utenti sono più bravi di altri a smontarle. E per contro, l'utente medio non sa neanche come cominciare a disassemblare un pyc. Dipende dal tuo target. Poi intendiamoci, è pefettamente lecito basarsi su tecniche di offuscamento. Non è che "criptare è figo, offuscare è da perdenti". Se offuscare funziona, perché no.

buongiorno ragazzi e grazie a tutti per l'aiuto.. sono consapevole che non sarà un sistema infallibile, ma quantomeno richiederà un buon grado di conoscenza per scoprire la password !
Per l'utilizzo che devo farne va più che bene ;) mi studio queste librerie che mi avete citato e vi aggiorno :)
Come sempre grazie di tutto! siete mitici :) ! ho utilizzato il modulo che mi avete citato "cryptography" e per camuffare al meglio il codice l'ho compilato utilizzando pyinstaller e l'opzione onefile :D


Pagina: 1



Esegui il login per scrivere una risposta.