Come posso impedire a un client di vedere il mio codice scritto in una lingua interpretata?

16

Sto costruendo un programma interpretato abbastanza complesso in Python. Ho lavorato sulla maggior parte di questo codice per altri scopi per alcuni mesi, e quindi non voglio che il mio cliente sia in grado di copiare semplicemente e provare a venderlo, poiché penso che valga la pena di fare un buon investimento.

Il problema è che ho bisogno che lo script venga eseguito su un server che il mio cliente sta pagando, quindi c'è un modo per proteggere una particolare cartella sulla macchina da un accesso root, o renderlo così solo un uso particolare può accedi alla directory? Il sistema operativo è Ubuntu.

    
posta Mike Partridge 06.04.2011 - 17:45
fonte

6 risposte

39

Autorizzalo.

Davvero, questo è tutto!

    
risposta data 06.04.2011 - 17:46
fonte
9

È sempre possibile compilare tutti i file in codice byte pyc. Ci sono decompilatori là fuori che possono generare codice sorgente ma niente di grave.

Tuttavia ciò risolverà solo la capacità di leggere il codice del tuo programma. Per proteggere l'unico modo è la licenza come ha detto il nightcracker, perché anche se hai compilato il tuo codice, per dire il codice macchina, se il tuo lavoro non è protetto da una licenza, può ancora essere commercializzato contro la tua volontà.

Bottom line, compile to byte code e, soprattutto, Licenza it

    
risposta data 06.04.2011 - 17:55
fonte
7

Usa Cython. Questo ti permetterà di compilare il tuo programma come eseguibile nativo. Quindi dovrebbe essere molto più difficile da rubare.

Per quanto riguarda la directory, l'unico consiglio che posso darti è assicurarti di aver impostato correttamente le tue autorizzazioni. Gli ACL possono essere tuoi amici, anche se non sono sicuro al 100% che possano impedire a root di accedere a un file. Anche se potessero, root potrebbe ancora cambiare l'autorizzazione. Lui è root, lui è dio - è così che funzionano queste cose.

link

    
risposta data 06.04.2011 - 17:51
fonte
1

Come ha mostrato l'utente sopra, i disassemblatori possono recuperare il codice, ma al momento non è molto leggibile (almeno non per i disassemblatori open source).

Ci stavo pensando, e un modo in cui penso che potresti risolvere questo problema (se chiami un codice aperto forzato è un problema) è scrivere uno script di re-factoring automatico. Questo sarebbe abbastanza semplice in realtà. Dovresti semplicemente alimentare lo script del tuo modulo e rinominare tutte le variabili specifiche del modulo. Questo, insieme al solo rilascio del file compilato, farebbe molto per offuscare il tuo codice.

Facendo una ricerca su PyPI, ho trovato questo: link . Dovresti controllarlo e gli altri lo fanno e riportare: D

Inoltre: dovresti anche licenziarlo, naturalmente.

    
risposta data 06.04.2011 - 18:50
fonte
1

Suggerirei anche le licenze. Oltre alle licenze, crittografiamo il codice sorgente delle routine principali utilizzando l'algoritmo della chiave asimmetrica in modo che solo la macchina del tuo cliente possa eseguirlo. Una delle chiavi della coppia è qualcosa ottenuto dall'hardware (esempio: numero di serie della scheda di rete) della macchina del cliente. Usa l'altra chiave della coppia per decrittografare il codice sorgente durante l'esecuzione del programma. Si noti che l'unico deliverable in testo normale sarebbe la routine di decodifica e il resto sarebbe in testo cifrato.

In questo modo il tuo cliente può copiare e incollare il tuo codice apparentemente senza senso ma non può eseguirlo altrove. Tuttavia, il mio suggerimento non è completamente a prova di proiettile: l'interprete può memorizzare il programma decrittografato da qualche parte nella memoria. Quindi è possibile che alcuni hacker recuperino il tuo programma in testo normale durante l'esecuzione, credo.

Per quanto riguarda la prevenzione delle cartelle dall'accesso root, sono d'accordo sul fatto che root non può essere fermato dall'accesso a file / cartelle.

    
risposta data 15.11.2011 - 21:51
fonte
0

La licenza è la migliore risposta qui. Detto questo, perché deve correre sulla loro attrezzatura? Se è così importante da criticare potresti desiderare di ottenere un servizio e creare una sorta di API di servizio intorno alle cose, così la gente non può nemmeno vedere la tua proprietà intellettuale per rubarla.

    
risposta data 15.11.2011 - 20:40
fonte

Leggi altre domande sui tag