Potresti non volere che i tuoi script Python cruciali vengano decodificati da attori malintenzionati. Ecco come salvaguardarlo.
Python è altamente leggibile e ha un uso diffuso. Sebbene questa leggibilità incoraggi la collaborazione, aumenta il rischio di accesso non autorizzato e uso improprio. I tuoi concorrenti o attori malintenzionati possono replicare i tuoi algoritmi e la logica proprietaria senza adeguate protezioni. Ciò influirà negativamente sull'integrità del tuo software e sulla fiducia dei tuoi utenti.
L'implementazione di solide misure di sicurezza, come l'offuscamento e la verifica della licenza, rafforza il tuo software contro potenziali minacce. Salvaguardare gli script Python non è solo una pratica; è una strategia fondamentale per garantire la riservatezza delle tue innovazioni e mantenere la fiducia dei tuoi utenti nel panorama digitale.
Capire Pyarmor
Pyarmor è una libreria a riga di comando. Aiuta a proteggere e offuscare script e pacchetti Python. Trasforma il codice Python originale in una forma più difficile da comprendere pur mantenendo la sua funzionalità. Il processo di offuscamento rinomina variabili, funzioni e classi con nomi non descrittivi. Rimuove anche i commenti e ristruttura il codice. Ciò rende difficile il reverse engineering, la manomissione o la copia del codice.
Pyarmor può proteggere singoli script Python e interi pacchetti e persino aggiungere la verifica della licenza al tuo codice.
Installazione della libreria Pyarmor
Pyarmor è elencato nel Python Package Index (PyPI). Usa pip per installarlo eseguendo il seguente comando:
pip install pyarmor
Non è necessario installare Pyarmor nella stessa directory che ospita il tuo progetto. Puoi installarlo ovunque sul tuo computer ed essere in grado di proteggere qualsiasi script Python da qualsiasi directory.
Tuttavia, se desideri eseguire gli script protetti senza dover installare Pyarmor sulla macchina di destinazione, devi installarlo nella stessa directory che ospita il tuo progetto. Questo perché gli script protetti conterranno riferimenti al runtime Pyarmor, che dovrà essere presente per eseguire gli script.
Protezione dei singoli script Python
Proteggere i singoli script utilizzando Pyarmor è semplice. Il seguente script che aggiunge due numeri servirà da esempio.
defadd_numbers(num1, num2):
result = num1 + num2
print("The sum of {} and {} is: {}".format(num1, num2, result))
# Example usage
num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
add_numbers(num1, num2)
Usa la riga di comando per navigare nella directory in cui hai installato Pyarmor. Quindi esegui il seguente comando per crittografare e offuscare il tuo script. Sostituire principale.py con il nome del tuo script.
pyarmor gen --output dist main.py
Dopo aver eseguito il comando, Pyarmor crea una nuova cartella denominata dist. Al suo interno risiede il tuo script protetto.
Apri lo script protetto per visualizzarne il contenuto.
Lo screenshot sopra mostra l'output dopo che Pyarmor ha offuscato e crittografato il semplice script di addizione. Ora non puoi dire cosa fa la sceneggiatura solo guardandola.
Per eseguire lo script protetto, apri il terminale o il prompt dei comandi e vai alla posizione che contiene il file dist directory. Quindi utilizzare il seguente comando per eseguire lo script:
python dist/main.py
Sostituire principale.py con il nome del tuo script. Lo script dovrebbe essere eseguito come farebbe senza offuscamento. Testalo accuratamente per assicurarti che tutte le funzioni funzionino come previsto.
Salvaguardia di interi pacchetti Python
I pacchetti possono contenere pochi moduli o centinaia di moduli a seconda del loro scopo. Salvaguardare ogni modulo separatamente può essere faticoso. Fortunatamente, Pyarmor ha la capacità di proteggere un intero pacchetto senza che tu debba specificare ciascun modulo separatamente.
Supponiamo di avere un semplice pacchetto Python denominato pacchetto_campione con la seguente struttura:
sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py
Puoi crea tutti i moduli che desideri.
Per crittografare e offuscare il pacchetto, apri il terminale o il prompt dei comandi e vai alla directory in cui risiede il tuo pacchetto. Quindi eseguire il seguente comando:
pyarmor gen -O dist -r -i sample_package
Sostituire pacchetto_campione con il nome del tuo pacco. Questo comando crittograferà e offuscherà la directory del pacchetto e salverà l'output protetto nel file dist directory. Usa il pacchetto protetto come faresti per qualsiasi altro pacchetto Python.
Per esempio. Per utilizzare il pacchetto di esempio precedente, creare un nuovo script all'interno del file dist rubrica:
from my_package import module1, module2
module1.say_hello()
module2.do_something()
Quando si esegue il codice, il pacchetto dovrebbe funzionare come prima di proteggerlo.
Controllo dell'accesso al tuo script
Potresti voler limitare il tempo in cui un utente esegue il tuo script. Ad esempio durante il periodo di prova.
Per limitare il tempo di esecuzione dello script, utilizzare il comando seguente quando si offusca lo script.
pyarmor gen -O dist -e 30 main.py
Sostituire 30 con il numero di giorni in cui si desidera che lo script sia attivo. Puoi anche sostituirlo con una data esatta. Al termine dei giorni, lo script scadrà.
Puoi testare questa funzionalità impostando una data passata. Questo dovrebbe far sì che l'esecuzione dello script generi un errore. Utilizzare il seguente comando per offuscare lo script con una data scaduta:
pyarmor gen -O dist -e 2022-01-01 main.py
Quindi eseguire lo script protetto.
L'errore mostra che la chiave di licenza è scaduta, quindi lo script non può essere eseguito.
Bilanciare sicurezza ed efficienza
Sebbene Pyarmor offra robusti meccanismi di offuscamento per migliorare la sicurezza del tuo codice, lo è importante trovare un equilibrio tra le misure di sicurezza e il mantenimento dell'efficienza e delle prestazioni del vostro Software. Puoi raggiungere questo obiettivo:
- Valutazione della necessità di offuscamento: se il tuo software include algoritmi proprietari, dati sensibili o una logica aziendale univoca, l'offuscamento è estremamente vantaggioso. Tuttavia, per gli script open source con problemi di proprietà intellettuale minimi, il compromesso tra sicurezza e prestazioni tende maggiormente all'efficienza.
- Valutazione dell'impatto sulle prestazioni: l'offuscamento introduce un ulteriore sovraccarico di runtime dovuto alle operazioni e alle trasformazioni extra applicate al codice. Questo impatto è trascurabile per i piccoli script ma diventa più evidente per i progetti più grandi. È necessario valutare attentamente le implicazioni sulle prestazioni dell'offuscamento e condurre test per garantire che il software rimanga reattivo ed efficiente.
- Condurre aggiornamenti e manutenzioni regolari: Aggiorna regolarmente il codice, le licenze e i meccanismi di sicurezza offuscati per stare al passo con potenziali vulnerabilità. Bilancia questo con la necessità di ridurre al minimo le interruzioni per i tuoi utenti.
Qualcuno può decifrare il codice offuscato?
Il cracking del software si riferisce all'atto di rimuovere la protezione dalla copia o i meccanismi di licenza di un'applicazione software. Al fine di ottenere l'accesso non autorizzato alla sua piena funzionalità senza pagarlo. È importante notare che l'offuscamento del software non lo protegge completamente dai cracker.
Con sufficiente determinazione e risorse, il codice offuscato può essere decifrato. Questo è il motivo per cui dovresti mirare a condurre aggiornamenti e manutenzioni regolari per correggere eventuali falle sospette.