Protezione programma

di
Anonimizzato10204
il
9 risposte

Protezione programma

Visto che mi sembrate molto disponibili volevo chiedervi come posso fare che un mio programma non venga duplicato?

9 Risposte

  • Re: Protezione programma

    Per impedire la copia potresti usare le chiavette hardware, che ormai costano poco, oppure abilitare il tuo programma a essere eseguito su un solo computer tramite il riconoscimento dell' hardware.

    In pratica generi una chiave a partire dall' hardware del pc, i vari componenti hanno dei codici che possono essere letti e in alcuni casi sono unici. Scrivi la chiave in un file e quando il programma parte controlla se quella chiave è quella corretta in caso negativo si arresta.

    Dimmi se ti interessa del codice C# per leggere i dati dell' hardware che te lo scrivo, così rimaniamo in tema NetFramework.
  • Re: Protezione programma

    Si grazie mi interessa sapere come si fa.
  • Re: Protezione programma

    Et voila:
    
    public static void ReadDiskSerialNumber(StringBuilder sb)
    {
        ManagementObjectSearcher ms =
            new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_LogicalDisk");
    
        foreach (ManagementObject o in ms.Get())
        {
            try 
            { 
                    sb.AppendLine(o.GetPropertyValue("VolumeSerialNumber").ToString()); 
            }
            catch { }
        }
    }
    
    public static void ReadMainBoardSerialNumber(StringBuilder sb)
    {
        ManagementObjectSearcher ms = 
              new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BaseBoard");
       
        foreach (ManagementObject o in ms.Get())
        {
            try 
            { 
                   sb.AppendLine(o.GetPropertyValue("SerialNumber").ToString()); 
            }
            catch { }
        }
    }
    
    
    public static void ReadNetworkAdapterMacAddress(StringBuilder sb)
    {
        ManagementObjectSearcher ms = 
              new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_NetworkAdapterConfiguration");
        
         foreach (ManagementObject o in ms.Get())
        {
            try 
            { 
                    sb.AppendLine(o.GetPropertyValue("MacAddress").ToString()); 
            }
            catch { }
        }
    }
    
    Ci sono poi moltissime altre chiavi di ricerca per le quali ti conviene guardare la doumentazione, comunque queste dovrebbero bastarti.
  • Re: Protezione programma

    Ho provato e funziona, ora ti volevo chiedere dove nascondere il file con la chiave.
  • Re: Protezione programma

    Veramente non lo devi nascondere da nessuna parte, anche se uno legge quella chiave non è in grado di crearne un' altra che funzioni su un altro pc, dato che non conosce il modo in cui è stata generata.
  • Re: Protezione programma

    Ma non c'è pericolo che qualcuno capisca che quello è il codice ad esempio della scheda madre?
  • Re: Protezione programma

    Beh, ma mica scrivi il codice della mather board. Partendo dai codici hardware (magari più d' uno) componi una stringa, poi la alteri con qualche algoritmo e magari la crittografi. Quando fai il controllo rifai le stesse operazioni e vedi se arrivi alla stessa stringa.
  • Re: Protezione programma

    Mi dici un sistema semplice per crittografare la chiave?
  • Re: Protezione programma

    Eccoti una funzioncina semplice semplice:
    
    private string Crittografa(string text)
    {
        MD5 md5 = MD5.Create();
        byte[] v = Encoding.ASCII.GetBytes(text);
        byte[] h = md5.ComputeHash(v);
    
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < h.Length; i++)
            sb.Append((h[i] % 10).ToString());
    
        return sb.ToString();
    }
    
    Ho usato il modulo 10 per avere una stringa più corta, se vuoi puoi convertire gli h in esadecimale e generare la stringa.
Devi accedere o registrarti per scrivere nel forum
9 risposte