[PIPython] pyo e pyc files
Alex Martelli
aleaxit
Ven 19 Nov 2004 15:16:41 CET
On Wednesday 04 February 2004 08:44 am, Giovanni B. Lenoci wrote:
...
> Non mi chiedevo tanto se fosse lecito, ma quanto un programmatore
> potesse stare tranquillo distribuendo il bytecode del proprio programma.
Un programmatore puo` stare _estremamente_ tranquillo: basta praticare la
meditazione trascendentale, o, per chi ha poca pazienza, usare il Valium, e
la tranquillita` e` garantita. "Se non puoi farci niente, che ti agiti a
fa'"...?-)
> Mi hai comunque risposto in seguito. Credo che valga con tutti i
> linguaggi di programmazione; se trovi un programmatore disonesto che
> vuole utilizzare il tuo codice in pochi passaggi partendo dal bytecode
> puņ ottenere il sorgente.
Esatto (non necessariamente lo stesso sorgente da cui quel bytecode e` stato
generato, ma comunque uno grosso modo equivalente). In effetti questo vale
per qualsiasi linguaggio di partenza e di arrivo.
> Naturale che va contro la legge, ma questa č un'altra storia.
Le protezioni di tipo legale e contrattuale sono l'unica storia.
> Esiste qualche modo per criptare il bytecode? Ad esempio che funziona
> solo passando una determinata chiave?
> Forse dico una castroneria, non lapidatemi :P
Se distribuisci codice che puo` essere eseguito sulle macchine dei clienti,
chiaramente stai distribuendo anche tutto quel che occorre allo scopo di
decrittarlo, se no non potrebbe mai venire eseguito. Solo questione per chi
fosse interessato al tuo codice di scoprire come lo decritti, e c'e` chi ci
si diverte e lo fa a puro scopo ludico anche per codice di cui non gli cale
ne` poco ne` punto, cosi` come un altro risolve cruciverba o rebus. Basta
guardare sui siti di "warez" per vedere quanto resistono le "protezioni"
anche dei videogiochi piu` "corazzati", pieni di trucchi linguaggio-macchina
ecc ecc.
L'unica vera protezione e` non distribuire TUTTO il codice che serve per
rendere la tua applicazione pienamente funzionale. Nel mondo dei giochi
questo "santo graal" e` stato raggiunto con i giochi che prevedono
interazioni in internet: la parte "server" e` pienamente sotto il controllo
degli sviluppatori e nessuno (che non cracchi il server, ma quelli E`
possibile corazzarli davveror) potra` mai vedere o modificare quel codice.
Nel mondo business la prospettiva emergente sono i web services. Ma con un
minimo di ingegno puoi certo pensare a _qualche_ funzionalita` che richiede
un accesso alla rete, specificamente ad un server sotto il tuo controllo, e
quindi ti permette di tenere sotto pieno controllo pirateria et simila. Un
esempio delizioso che ho appena scoperto: il gratuito "calculator" dei
sistemi Mac ha fra le sue funzioni la conversione di valute. Ovviamente per
farla bene deve potere aggiornare le sue tabelle dei tassi di cambio, e
questo lo fa connettendosi all'opportuno server, naturalmente. Ora e` chiaro
che ad Apple poco interessa se qualcuno pirateggia o hackera quel particolare
programmillo che tanto lei distribuisce gratis come parte di un sistema
ricchissimo. Ma il punto e` che grazie a funzionalita` perfettamente
legittime e desiderabili ormai in pratica QUALSIASI programma ha un'ottima
scusa per connettersi in rete ogni tanto, e in queste connessioni sta la tua
opportunita` di proteggere efficacemente il valore aggiunto dei tuo
programma. L'hacker puo` studiare il codice che distribuisci, e rimuovere le
chiamate di rete, ma se lo fa perde funzionalita` importanti (tipo
l'aggiornamento automatico dei tassi di cambio, nell'esempio). Metti sui
server le parti piu` importanti, idealmente indispensabili, e tutto il
problema si sposta sulla sicurezza dei tuoi server (hint: OpenBSD).
Alex
More information about the Python
mailing list