none
KeyGen RRS feed

  • 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.

    sexta-feira, 19 de dezembro de 2014 14:53

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.

    sexta-feira, 19 de dezembro de 2014 18:27
  • 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
    ----------------------------------------------------------


    terça-feira, 10 de março de 2015 13:31
    Moderador
  • 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
    sexta-feira, 19 de dezembro de 2014 19:51

Todas as Respostas

  • Mais qual a parte que você não entendeu, parece ser complicado mais é um código simples (ao meu ver)
    sexta-feira, 19 de dezembro de 2014 16:37
  • 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.

    sexta-feira, 19 de dezembro de 2014 17:58
  • 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.

    sexta-feira, 19 de dezembro de 2014 18:17
  • 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.

    sexta-feira, 19 de dezembro de 2014 18:27
  • 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.

    Obrigado. Pra fazer isso eu descobri uma coisa bem mais simples. Tenho uma outra duvida, como fazer um form aparecer na inicialização de um programa a cada 30 dias? é possível?

    __________________________________________________________________________________________________________ Atenciosamente, Mike Rodrigues De Lima.

    sexta-feira, 19 de dezembro de 2014 19:21
  • 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
    sexta-feira, 19 de dezembro de 2014 19:51
  • Caso tenha finalizado, não esquece de fechar a Thread marcando a resposta

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 10 de março de 2015 12:47
  • 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
    ----------------------------------------------------------


    terça-feira, 10 de março de 2015 13:31
    Moderador