Usuário com melhor resposta
KeyGen

Pergunta
-
Galera eu baixei uma classe de keygen na internet mais não estou conseguindo decifrá-la, alguém com uma lógica avançada pode me ajudar.
using KeyGen; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace KeyGen { public enum SNKeyLength { SN16 = 16, SN20 = 20, SN24 = 24, SN28 = 28, SN32 = 32 } public enum SNKeyNumLength { SN4 = 4, SN8 = 8, SN12 = 12 } } public static class RandomSNKGenerator { private static string AppendSpecifiedStr(int length, string str, char[] newKey) { string newKeyStr = ""; int k = 0; for (int i = 0; i < length; i++) { for (k = i; k < 4 + i; k++) { newKeyStr += newKey[k]; } if (k == length) { break; } else { i = (k) - 1; newKeyStr += str; } } return newKeyStr; } /// /// Generate //standard serial key with alphanumaric format /// /// //the supported length of the serial //key /// returns formated serial //key public static string GetSerialKeyAlphaNumaric(SNKeyLength keyLength) { Guid newguid = Guid.NewGuid(); string randomStr = newguid.ToString("N"); string tracStr = randomStr.Substring(0, (int)keyLength); tracStr = tracStr.ToUpper(); char[] newKey = tracStr.ToCharArray(); string newSerialNumber = ""; switch (keyLength ) { case SNKeyLength.SN16: newSerialNumber = AppendSpecifiedStr(16, "-", newKey); break; case SNKeyLength.SN20: newSerialNumber = AppendSpecifiedStr(20, "-", newKey); break; case SNKeyLength.SN24: newSerialNumber = AppendSpecifiedStr(24, "-", newKey); break; case SNKeyLength.SN28: newSerialNumber = AppendSpecifiedStr(28, "-", newKey); break; case SNKeyLength.SN32: newSerialNumber = AppendSpecifiedStr(32, "-", newKey); break; } return newSerialNumber; } /// /// Generate serial key with only numaric /// /// the supported length of //the serial key /// returns formated serial //key public static string GetSerialKeyNumaric(SNKeyNumLength keyLength) { Random rn = new Random(); double sd = Math.Round(rn.NextDouble() * Math.Pow(10, (int)keyLength) + 4); return sd.ToString().Substring(0, (int)keyLength); } }
__________________________________________________________________________________________________________ Atenciosamente, Mike Rodrigues De Lima.
Respostas
-
Isso. Seguindo a linha de pensamento do Mr. GMSOFT, é melhor você mesmo criar sua lógica. Fiz algo parecido da seguinte forma:
- Na instalação do sistema, tinha uma DLL específica que o método "ValidaCDKEY" era chamada em todas as requisições ao sistema (no caso de ASP.NET) ou por dia, para DESKTOP.
- Esse método concatenava "NOME-SERVIDOR" + "NOME-BANCO" + "NOME-CLIENTE" + "DATAHORAVALIDADE";
- Criava um hash dessa string e essa se tornava a cd-key do cliente. Ao instalar o sistema, para aquele cliente, naquele servidor, minha DLL sempre esperava a cd-key que eu gerei.
- Cada requisição, eu pegava os mesmos parâmetros e comparava usando a DLL. Assim sabia quando vencia. AO vencer, o cara tinha que solicitar uma nova serial.
É uma idéia.
- Sugerido como Resposta William John Adam TrindadeModerator quarta-feira, 11 de março de 2015 13:41
- Marcado como Resposta William John Adam TrindadeModerator sexta-feira, 13 de março de 2015 15:30
-
O codigo que voce postou só gera a chave. A implementaçao do uso da chave nao esta incluso.
Eu sugiro usar esta biblioteca open source:
http://sourceforge.net/projects/activelock/
http://www.activelocksoftware.com/downloads.html
Ele é free e permite criar diversos tipos de lincenciamentos: por chave, por tempo, por uso, etc..
Existem varios exemplo de uso tanto para VB como C#.
O KeyGen esta incluso, como pode ser visto na imagem abaixo:
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator terça-feira, 10 de março de 2015 13:32
- Sugerido como Resposta William John Adam TrindadeModerator quarta-feira, 11 de março de 2015 13:41
- Marcado como Resposta William John Adam TrindadeModerator sexta-feira, 13 de março de 2015 15:29
-
Você fala tipo um form de aviso? se for basta fazer uma verificação a cada abertura de sua aplicação comparando a ultima data de execução do programa com o prazo da caducidade
- Sugerido como Resposta William John Adam TrindadeModerator quarta-feira, 11 de março de 2015 13:41
- Marcado como Resposta William John Adam TrindadeModerator sexta-feira, 13 de março de 2015 15:29
Todas as Respostas
-
-
Mais qual a parte que você não entendeu, parece ser complicado mais é um código simples (ao meu ver)
------------------------------------------------
Talvez esse código não me atenda, eu queria um keygen para o a cada 30 dias o programa bloqueasse, e só fosse liberado com um código aleatório de a cordo com o numero que o keygen forneceu. E muito dificíl fazer isso?
__________________________________________________________________________________________________________ Atenciosamente, Mike Rodrigues De Lima.
-
O que você pode fazer é o seguinte, pode gerar uma chave com os dados da maquina (SERIAL HD,PROCESSADOR ETC) e adicionar a data a esse serial.
Por exemplo o programa vencerá na data 20/12/2014 então eu adicionaria essa data ao ID gerado com as combinações acima citadas e comparava com a data da caducidade do programa (quando fosse vencer no dia 20/12/2014).
Deu mais ou menos para entender? o código que você realmente creio que não sirva para esse proposito.
- Sugerido como Resposta William John Adam TrindadeModerator quarta-feira, 11 de março de 2015 13:41
-
Isso. Seguindo a linha de pensamento do Mr. GMSOFT, é melhor você mesmo criar sua lógica. Fiz algo parecido da seguinte forma:
- Na instalação do sistema, tinha uma DLL específica que o método "ValidaCDKEY" era chamada em todas as requisições ao sistema (no caso de ASP.NET) ou por dia, para DESKTOP.
- Esse método concatenava "NOME-SERVIDOR" + "NOME-BANCO" + "NOME-CLIENTE" + "DATAHORAVALIDADE";
- Criava um hash dessa string e essa se tornava a cd-key do cliente. Ao instalar o sistema, para aquele cliente, naquele servidor, minha DLL sempre esperava a cd-key que eu gerei.
- Cada requisição, eu pegava os mesmos parâmetros e comparava usando a DLL. Assim sabia quando vencia. AO vencer, o cara tinha que solicitar uma nova serial.
É uma idéia.
- Sugerido como Resposta William John Adam TrindadeModerator quarta-feira, 11 de março de 2015 13:41
- Marcado como Resposta William John Adam TrindadeModerator sexta-feira, 13 de março de 2015 15:30
-
O que você pode fazer é o seguinte, pode gerar uma chave com os dados da maquina (SERIAL HD,PROCESSADOR ETC) e adicionar a data a esse serial.
Por exemplo o programa vencerá na data 20/12/2014 então eu adicionaria essa data ao ID gerado com as combinações acima citadas e comparava com a data da caducidade do programa (quando fosse vencer no dia 20/12/2014).
Deu mais ou menos para entender? o código que você realmente creio que não sirva para esse proposito.
__________________________________________________________________________________________________________ Atenciosamente, Mike Rodrigues De Lima.
-
Você fala tipo um form de aviso? se for basta fazer uma verificação a cada abertura de sua aplicação comparando a ultima data de execução do programa com o prazo da caducidade
- Sugerido como Resposta William John Adam TrindadeModerator quarta-feira, 11 de março de 2015 13:41
- Marcado como Resposta William John Adam TrindadeModerator sexta-feira, 13 de março de 2015 15:29
-
-
O codigo que voce postou só gera a chave. A implementaçao do uso da chave nao esta incluso.
Eu sugiro usar esta biblioteca open source:
http://sourceforge.net/projects/activelock/
http://www.activelocksoftware.com/downloads.html
Ele é free e permite criar diversos tipos de lincenciamentos: por chave, por tempo, por uso, etc..
Existem varios exemplo de uso tanto para VB como C#.
O KeyGen esta incluso, como pode ser visto na imagem abaixo:
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator terça-feira, 10 de março de 2015 13:32
- Sugerido como Resposta William John Adam TrindadeModerator quarta-feira, 11 de março de 2015 13:41
- Marcado como Resposta William John Adam TrindadeModerator sexta-feira, 13 de março de 2015 15:29