Domanda

Sto sviluppando alcuni software desktop per un cliente di rivendere.Il cliente vuole restringere il software in modo che il codice di registrazione sarà specifico per un solo computer.

Oltre a usare il MAC della scheda di rete, qualcuno ha qualche altre tecniche (che funziona sia su Windows e Mac OS X) per identificare in modo univoco un computer?

È stato utile?

Soluzione

Un'altra soluzione è quella di utilizzare una tecnologia di licenza con un dongle . Questo è un piccolo dispositivo che si collega a un'altra porta di I / O sul host USB o, e serve come una chiave unica, fisico per attivare il software.

Una terza soluzione è quella di fornire un License Manager . Cioè, quando il software si avvia, si interroga un server in rete (sia sulla LAN del cliente o altro accesso presso la vostra azienda via internet) che convalida che l'utilizzo del cliente del software è legittima. Questa è una buona soluzione per "licenze simultanee" così i clienti possono installare il software su molti host, ma è una licenza per l'uso simultaneo su un numero limitato di ospiti. FLEXnet Publisher è un esempio di una soluzione di gestione delle licenze.

L'indirizzo MAC della scheda di rete è la soluzione che ho usato l'ultima volta che ho lavorato per una società che software concesso in licenza per l'esecuzione su un host specifico.

Tuttavia, voglio offrire un avvertimento: se si fa questo tipo di licenza, è necessario anticipare che sarà diventato un in corso lavoro di routine amministrativa per tenere traccia delle licenze dei vostri clienti. Una volta che avete qualche centinaio di clienti, sarete stupiti di come spesso si ottiene telefonate con le richieste di cambiare le chiavi

  

"Abbiamo cambiato la nostra server a un gigabit   adattatore di rete, e ora la licenza   non funzionerà perché il nuovo adattatore ha   un indirizzo MAC diverso ".

altrimenti i clienti possono sostituire tutta la loro macchina, e hanno bisogno di una licenza di aggiornamento per eseguire il software sulla nuova macchina. Abbiamo ottenuto queste chiamate praticamente ogni giorno presso l'azienda per cui lavoravo.

È inoltre bisogno di fiducia al cliente di smettere di usare il software sul vecchio computer (o scheda di rete) se si dà loro una nuova chiave. Se non si poteva fidare di loro ad obbedire della licenza, in primo luogo, come si può credere che faranno buttare via la chiave vecchia?

Se non si intende come si sta andando a sostegno di questa attività amministrativa, non licenza del prodotto in questo modo. Potrai inconveniente soltanto i vostri buoni clienti, che avrebbero collaborato in ogni caso.

Altri suggerimenti

giocherò l'avvocato del diavolo e vi dico che qualcosa di simile a questo probabilmente non è la cosa migliore da discutere in "pubblico".

Detto questo, guardare a ciò che gli altri possono avere fatto e possibilmente migliorare (o prendere una parte di) esso. indirizzo MAC, come hai detto, è forse bene utilizzare. Ho sentito dire che Windows e altri programmi utilizzano le informazioni sul disco rigido (numero di serie) - secondo questo sito , attivazione di Windows controlla 10 articoli diversi e li fa in una chiave univoca.

miglior modo sta prendendo l'UUID utilizzando C # in Windows

Il modo migliore per identificare in modo univoco su Windows macchina

public string GetUUID()
{
    var procStartInfo = new ProcessStartInfo("cmd", "/c " + "wmic csproduct get UUID")
    {
        RedirectStandardOutput = true,
        UseShellExecute = false,
        CreateNoWindow = true
    };

    var proc = new Process() { StartInfo = procStartInfo };
    proc.Start();

    return proc.StandardOutput.ReadToEnd().Replace("UUID", string.Empty).Trim().ToUpper();
}

Vorrei solo utilizzare l'indirizzo MAC per generare una chiave di richiesta, quindi richiede agli utenti di registrarsi con il tuo cliente.Il cliente avrà una speciale applicazione che prende una chiave di richiesta e produce una chiave di attivazione che l'utente può quindi utilizzare per attivare il software.Una volta attivato, il software funziona, solo non occasionalmente telefona a casa per la verifica e tale.

Se si trattasse di una reale esigenza.Il mio primo compito sarebbe quello di provare a convincere il cliente che questo era una cattiva idea.

Il motivo è che questi regimi praticamente mai evitare che il vostro codice di cracking.Esse, comunque, rendere la vita dei vostri veri clienti più difficile.Mi è difficile pensare a qualsiasi altra industria che va fuori del suo modo per infastidire i suoi veri clienti con regimi che mai a raggiungere i loro obiettivi (diversi da quelli governativi servizio, naturalmente :-).

Se si deve fare questo, mi basta fare un token sforzo per soddisfare l'obbligo contrattuale (non dire al vostro cliente di questo però).Prendendo l'indirizzo MAC (o un numero casuale se, $DEITY proibire, il computer non ha una scheda di rete) come la chiave di richiesta e l'utilizzo di un programma per soli XOR con una stringa ASCII per ottenere la chiave di attivazione, mi sembra un approccio funzionale.Vorrei anche conservare entrambe le chiavi dal momento che non si desidera che il software per de-attivare, se solo cambiare la propria scheda di rete (o anche la scheda madre) - ancora vedere che, come lo stesso computer e non sarà felice se il software smette di funzionare.

Il codice sta per essere rotto a prescindere (a meno che il programma è spazzatura, che sono sicuro che non è il caso) - questo metodo darà la vostra genuinità clienti un viale per lo spostamento dei loro software con un'altra macchina se il cliente non risponde in qualche modo (gocce di supporto, va fuori del business, e così via).

La difficoltà principale con tutti i regimi che si basano sull'unicità di un po ' di hardware che il cliente può scegliere di cambiare un pò di hardware:

  • ghosting loro contenuto di un disco a un disco rigido più grande rende HD numeri di serie cambiamento.
  • utilizzo di CPU numeri di serie significa che l'aggiornamento alla più recente tecnologia Intel bigmutha CPU uccidere il vostro software.
  • utilizzando l'indirizzo MAC, significa che non possono cambiare il loro NIC.

Tutti questi possono essere corretti utilizzando tali valori per creare una chiave al momento dell'installazione e di controllo solo contro quella chiave, non il valore modificato di sei mesi lungo la pista.Significa che si hanno per archiviare la richiesta di attivazione e di valori, ma gli aggiornamenti non richiedono agli utenti di passare attraverso il processo di ri-attivare il loro software.Credimi, lo disprezza per doverlo fare.

L'idea che sto accarezzando è usando un paio di numeri di serie o di id univoco relativo all'hardware e hashing insieme.

Le cose che vengono aggiornati: -Memoria -MACs (possono essere contraffatti, adattatori USB vengono collegati, ecc.)

Le cose che non vengono aggiornati spesso: -PROCESSORE -BIOS -Motherboard

Utilizzando WMIC può essere un ottimo modo per afferrare alcune informazioni, vorrei iniziare afferrando le cose che non cambiano spesso come il primo e preferito scelta, mi piacerebbe essere in grado di rilevare le impronte digitali di almeno 2 numeri di serie o dispositivi utilizzare per generare una chiave di registrazione.

wmic cpu get DeviceId /format:value

che catturerà l'ID della CPU, è possibile eseguire il comando di:

1 - CPU (CPU: DeviceID) 2 - Scheda madre (battiscopa: numero di serie) 3 - BIOS (BIOS: numero di serie)

se non si ottiene almeno 2 valori popolati, poi prendete

4 - Adattatore di rete - (NIC: MACAddress) 5 - RAM - (memphysical: NumeroSerie)

A seconda della logica di business è possibile utilizzare i primi due numeri seriali disponibili per creare il numero di registrazione, e se si seguono sempre lo stesso ordine poi ri-installa il numero di registrazione continua a funzionare, se un dispositivo modifica o un utente tenta di installare su un computer secondario cambiamento della id invalidare il numero di registrazione. Per ridurre la quantità di supporto tecnico chiama la minor quantità di hardware che di impronte digitali darà la minor quantità di mal di testa e se si tenta di impronte digitali gli elementi meno probabilità di essere aggiornato, che riduce ulteriormente il mal di testa. La mia preferenza è l'ordine sopra.

È possibile utilizzare un sistema di scambio di chiavi Diffie-Hellman per avere l'utente genera una coppia di chiavi / pulic privato con il loro hardware id come un carico utile, quindi passare queste informazioni ad un server di registrazione in cui il server di registrazione userebbe un pubblico / chiave privata per decifrare il payload e calcolare la chiave di registrazione per tornare indietro per l'utente finale. Mi piace usare JWT per passare le cose avanti e indietro Corrispondenza chiavi pubbliche inserite nel payload della JWT. Speranza che aiuta.

UUID è stato menzionato sopra e è una grande idea che è possibile ottenere utilizzando il comando seguito dalle finestre cmd.exe:

wmic csproduct get UUID /format:value      

di responsabilità questi comandi funzionano solo per Windows Penso 2000 e sopra, ma si avrebbe bisogno di verificare, che forse disponibile per i sistemi sotto 2000, ma a quel punto ho davvero cercare di non sostenere tali dispositivi. Buona fortuna.

Su Mac:

system_profiler | grep "Serial Number (system)"

Su Linux (Debian):

sudo dmidecode -t system | grep "Serial Number"

dmidecode e system_profiler ha altri componenti si può afferrare i numeri di serie da simile a wmic in finestre. Io non lavoro su Mac, quindi non posso confermare una lista di specifiche esatte, ma la creazione di un elenco di LCD (minimo comune denominatore) i numeri di serie per le parti che tutti e tre i comandi possono accedere è messo insieme e curato per la meno probabile parti da essere aggiornati o modificati. Poi una combinazione dei primi 2-3 numeri hash può fare per un ID macchina unica che è un po 'più robusta e consente una piattaforma app croce per essere attivato anche su un dispositivo con esso è il sistema operativo aggiornato.

Non esiste un modo sicuro per identificare in modo univoco un computer, se si assume un computer è costruito con molte parti che possono essere sostituiti alla fine.

Alcune parti hardware - indirizzo MAC, il numero di serie del disco rigido, anche di serie della scheda madre, ecc - sono alcune buone fonti di "unicità", ma come si può sapere se un cliente decide di aggiornare la parte della licenza dipende ... essere pronti per un po 'di assistenza clienti. Anche tenere a mente è che alcune parti possono essere contraffatti (MAC essere uno di loro).

Un controllo della licenza on-line è un altro buon modo per andare - è possibile gestire tutto sul lato server e anche definire le proprie regole per esso (il numero di licenze per client / install, concorrenza, ecc), ma la cosa più importante da notare è cosa succede quando non è possibile stabilire la connessione?

Come sull'utilizzo MotherBoard numero di serie unico?

Aprire Registro di sistema e accedere a

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography

Trova la chiave chiamata “MachineGUID” questa chiave viene generata in modo univoco durante l'installazione di Windows e non cambierà indipendentemente da qualsiasi scambio di hardware (a parte la sostituzione del disco rigido di boot-grado in cui il sistema operativo è installato). Ciò significa che se si vuole mantenere l'installazione di monitoraggio per ogni OS questa è un'altra alternativa. Non cambierà a meno che non si fa una reinstallazione fresca di Windows.

Ci deve essere utilizzato un numero di serie impresso nella CPU di, per quanto ho visto però; queste informazioni (numero di serie PSN, Pentium) è stato sconsigliato. L'informazione può eventualmente ancora esistere, ma almeno nel mondo P3 non c'era più. Inoltre, penso che la scelta più ovvia di indirizzo MAC della scheda di rete per l'interfaccia principale utilizzato per l'host deve essere considerata come una possibilità reale. A meno che il cliente non si aspetta interfacce Ethernet di essere presenti sugli host che vendono a.

Si potrebbe prendere in considerazione un programma di utilità di licenze di terze parti che più probabile ottenere questo "diritto" e anche voi (o il vostro cliente) fornire opzioni aggiuntive requisiti dovrebbero cambiare (e non fanno sempre?). Mi piacerebbe citare alcuni tra quelli specifici per nome, ma io non sono davvero intimamente familiare loro.

Ho una certa esperienza su questo. Nella mia soluzione emettiamo chiave di servizio quando vendiamo il prodotto al cliente.

Al cliente di tempo installare l'applicazione si genera una chiave leggendo la serie della scheda madre del computer client. Si suppone client di e-mail la chiave di servizio e la chiave generata presso l'impianto per la nostra organizzazione per attivare il prodotto.

Manteniamo una richiesta di amministrazione presso l'organizzazione in questione chiavi di attivazione. Offriamo solo una chiave di attivazione per la chiave per un particolare chiave di servizio.

Abbiamo venduto il numero di copie e funziona senza un problema. Ma poi abbiamo scoperto alcuni computer che non forniscono un numero di serie della scheda madre. Tali macchine restituiscono valore nullo come il numero di serie della scheda madre. ancora stiamo cercando di risolvere questo problema.

come su hashing tutto ciò che ha un bruciato-in SN, hard disk, proc, ram, ecc ... questo hash rimarrà con il computer fino a quando non ha le sue parti sostituito.

Si può creare un codice seriale che l'utente deve inserire una sola volta. Esso dovrebbe includere l'indirizzo di posta elettronica dell'utente (qualcosa come someuser@mailprovider.com-9828372-398232). Questo fermerà molte persone dal provare a manometterlo o dare ad altre persone. Durante l'attivazione, il software dovrebbe controllare contro un db online se il codice seriale esiste.

Oppure si potrebbe semplicemente non hanno il codice di attivazione e assicurarsi di avere i diritti di revisione scritti nel Contratto ed esercitare il vostro diritto di verificare di volta in volta.

fa miracoli per Oracle.

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography

tasto "MachineGuid” viene generato unicamente durante l'installazione di Windows e non cambierà indipendentemente da qualsiasi scambio di hardware (a parte la sostituzione del disco rigido di boot-grado in cui il sistema operativo è installato). Non sono sicuro di questo .

Il mio suggerimento

È possibile utilizzare tale MachineGuid, Hard Disk Serial Number, Scheda madre numero di serie e UUID. Insieme hash SHA utilizzando 256 o qualsiasi altra funzione hash.

UUID - wmic csproduct ottenere UUID

MachineGuid - HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography

Hard Disk Serial Number - wmic diskdrive get serialnumber

BIOS Serial Number - bios wmic ottenere serialnumber

Scheda madre Numero di serie - battiscopa wmic ottenere serialnumber

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top