Ecco come ti proteggo il software

Di Fabio Lenzarini ©

All’interno della nostra SW House, abbiamo a lungo pensato come proteggere il software e le installazioni illegali, soprattutto perché la nostra applicazione funziona in rete e viene venduta a licenze oltre che a pacchetto.

Dopo varie elucubrazioni questa ci è sembrata la strada migliore.

In un file (ascii o dbf) salvato in locale sul PC viene scritto in modo criptato il numero seriale del disco.

All’avvio della procedura viene eseguita una routine che si rilegge il seriale del disco e lo confronta con quello letto dal file decriptato. Se i codici coincidono si procede, altrimenti… nel nostro caso parte una versione demo che non permette di salvare più di XX dati.

In questo modo si può distribuire l’applicazione tranquillamente e chi è interessato potrà continuare a usare la procedura senza perder i dati che ha già inserito o reinstallare un nuovo prodotto.

Nel nostro caso, nella directory che viene creata sul client, c’è un piccolo eseguibile con una form dove vengono visualizzati il codice del disco leggermente criptato (cioè leggibile) e viene chiesto in input il codice di "sblocco". Naturalmente nel codice iniziale c’è un codice simile a quello proposto che si va a leggere il seriale.

* start code

aa=Q_loc+"txt" && dove Q_loc vale la rirectory attuale

private ACapo

ACapo=CHR(13)+CHR(10)

set alte to Q_bat.bat

set alte on

set cons off

?? "dir c:\x > "+ aa + ACapo

?? "exit "+ ACapo

close alte

! Q_bat.pif && il .pif deve essere creato la Windows

do while !file(aa)

wait window "Test codice" timeout .5

enddo

S_file=aa

S_fcb =Fopen(S_file) && Apro in Read-Only

if S_fcb<0 && Il file non esiste

S_err=.T.

else

S_err=.F. && Il file esiste

S_byte=Upper(Fgets(S_fcb,100)) &&

S_byte=Upper(Fgets(S_fcb,100)) &&

S_byte=Upper(Fgets(S_fcb,100)) && il serial e' sulla terza riga

if at("VOLUME",S_byte)#0

S_byte=alltrim(S_byte)

num_hd=right(S_byte,9) && A destra c'e' il valore

endif

=Fclose(S_fcb) && Chiudo il file

endif

wait window "Calcolo" timeout .5

num_hd=alltrim(num_hd)

delete file &S_file

delete file &aa

* end code

Se l’utente salva un codice di sblocco, tale valore viene salvato criptato su un file.

All’avvio dell’applicazione vera e propria, con la stessa routine, si legge il seriale del disco, si legge il codice di sblocco salvato sul file, lo si decripta e, secondo l’algoritmo col quale abbiamo calcolato il codice di sblocco, li confrontiamo.

Questa procedura funziona correttamente in ambienti Windows ® su tutte le versioni (da 95 a NT) ed è molto sicura, a parte qualche bravo utente che riesca a duplicare un disco con anche col seriale! J

Buon lavoro.

Per altri consigli in merito potete contattarmi .

Copyright dell'articolo di Fabio Lenzarini

© FoxPro e Visual FoxPro sono un marchi registrati da Microsoft Corporation



Data: 28/02/2000
webmaster@foxitaly.com

dal 22 Giugno 1999