2009-02-23 13 views
35

Conoscete uno strumento che potrebbe aiutarmi a offuscare il codice Python?Offset di codice Python

+99

Converti in Perl? Boom, boom, grazie per l'ascolto, sono qui per tutta la settimana :-) – paxdiablo

+1

Duplicato: http://stackoverflow.com/questions/261638/how-do-i-protect-python-code –

+0

E discussioni più generali: http : //stackoverflow.com/questions/164137/how-do-i-deploy-a-python-desktop-application – tzot

risposta

5

In molte situazioni è possibile spedire file di byte-compilato .pyc invece dei file di origine Py. Questo ti dà un certo livello di offuscamento. Come suggerisce il README pyobfuscate, questo ha dei limiti. Ma potresti essere in grado di combinare i due approcci.

15

Lo spazio del tuo problema è inferiore a quello specificato. È questo per un'applicazione della riga di comando? Questo codice dovrebbe essere usato come libreria?

In aggiunta alle altre due risposte, è possibile incorporare il codice in un file binario. Quando inizia, decodifica il codice e valuta la stringa. Funziona anche per un'estensione di libreria condivisa. Potresti farlo anche con il codice byte, credo, ma non sarebbe così semplice come chiamare Py_EvalCode.

py2exe o freeze sono altre soluzioni che convertono il codice in un file eseguibile. Include solo il codice nel file binario e non produce alcun tipo di vera e propria insoddisfazione, ma è ancora più difficile dell'apertura di un file .py.

È possibile scrivere il codice in Cython, che è simile a Python e scrive i file di estensione Python in C, da utilizzare come .so. È forse il più difficile di questi a decodificare e ancora darti un linguaggio di alto livello per lo sviluppo.

Sono tutti hackerabili, come tutte le soluzioni. Quanto vuoi che sia?

+6

+1 per Cython, che ho utilizzato di recente e l'ho trovato abbastanza buono in cosa fa. – Dan

+0

qual è la soluzione più semplice da usare, se proprio non voglio un facile 'decompyle' possibile? – Basj

4

La libreria standard di Python include compileall.py. È possibile eseguire questo su una directory e genererà file .pyc per tutti i file di origine. I file .pyc includeranno solo bytecode e docstrings e rimuoveranno tutti i commenti. È quindi possibile copiare questa directory e quindi eseguire qualcosa come rm -rf $(find . -name .py) per rimuovere i file di origine originali.

2

La soluzione migliore è compilarlo utilizzando Shed Skin, un compilatore sperimentale da Python a C++.

+0

C'è anche Pypy, ma non è documentato e molto limitato nel codice che accetta. – Antimony

+0

@Antimony: stai parlando di RPython?PyPy (che usa RPython) è un'implementazione completa di Python e non è affatto limitato nel codice che accetta. –

+0

@John Sì, sto parlando di RPython. Fa parte del progetto PyPy. – Antimony

6

In realtà ho trovato un progetto molto bello che converte fondamentalmente un Python in C++ e crea un file binario, collegato staticamente.

Check this out: http://www.nuitka.net/

0

Anche se non fa offuscamento, questo Python recipe funziona molto bene per ridurre al minimo le dimensioni del codice Python, tra cui escludendo commenti.