Hoe een programma commercializeren

Status
Niet open voor verdere reacties.

Maximvdw

Gebruiker
Lid geworden
7 feb 2009
Berichten
921
Hallo,

Ik heb een vraagje, iets wat ik me toch al een tijdje afvraag.
Hoe kan ik een programma verkopen?. En dan richt ik me vooral op het maken
van serials etc..
Ik heb geen flauw benul van hoe ik eraan moet beginnen.
Heeft iemand hier ervaring mee?

Offtopic: Heeft iemand dan ook een idee hoe ik ervoor kan zorgen dat die serials worden gegeven aan
mensen die het kopen

gr,
Maxim
 
makkelijkste oplossing? 3de partij in de hand nemen.

Serials zijn niet zo heel moeilijk. Je hebt een masterkey nodig en een one-way hash. Je maakt een calculatie met de gegeven serial, eventueel samen met andere data, en het antwoord moet een standaard response of een veelvoud van een bepaald getal zijn. Maar er zijn zoveel manieren als mensen waarschijnlijk.
 
Dank voor je reactie,
Heb je een idee hoe ik deze one-way hash dan kan valideren?
Kent er ook iemand een site die deze hashs dan geeft/genereerd?

gr.
Maxim
 
Je kunt dit zelf doen. Meestal maakt men gebruik van een speciale DLL. dit omdat een DLL vaak moeilijker is te decrypten. Als je weet hoe een applicatie zijn key berekend kun je namelijk zelf ook een key genereren. Dit is de basis van zogenaamde "keygens".

Als je dat ook wil voorkomen kun je online validatie toevoegen. Je stuurt dan iemand een key en je programma stuurt die key weer terug naar een server waarna de server de uiteindelijke ontsleuteling regelt. Een en ander natuurlijk moeite voor de beveiliging versus het risico dat iemand het probeert te kraken, kosten voor die server e.d.

Dat zelf opzetten kan veel tijd en geld kosten. Er zijn diensten die je helpen met dit alles en dan x% van de omzet vragen voor hun diensten.

Ik heb even lopen prutsen en heb hier wat C# code die serials kan genereren. Het kan nog veel veiliger, maar dit is om te laten zien hoe je zoiets opzet lokaal:

Code:
        private void button1_Click(object sender, EventArgs e)
        {
            
            if (textBox1.Text == "" || textBox2.Text == "")
            {
                MessageBox.Show("informatie invullen");
                return;
            }
            RNGCryptoServiceProvider randje = new RNGCryptoServiceProvider();
            byte[] rng = new byte[4];
            bool legal = false;
            string rnencode = "";
            while (!legal)
            {
                randje.GetNonZeroBytes(rng);
                rnencode = Convert.ToBase64String(rng);
                rnencode = rnencode.Substring(0, 6);
                if (rnencode.Contains("+") || rnencode.Contains("/"))
                {
                    legal = false;
                }
                else
                {
                    legal = true;
                }
            }
            int rngseed;
            rngseed = BitConverter.ToInt32(rng,0);
            Random randgen = new Random(rngseed);
            rngseed = 0;
            foreach (byte a in rng)
            {
                rngseed = rngseed + a;
            }
            for (int i = 0; i < rngseed; i++)
            {
                randgen.Next();
            }

            byte[] naaminput = Encoding.ASCII.GetBytes("SUPERNAAM" + textBox1.Text);
            byte[] plaatsinput = Encoding.ASCII.GetBytes("SUPERPLAATS" + textBox2.Text);
            byte[] Hnaam;
            byte[] Hplaats;
            byte[] samen = new byte[64];
            SHA512 myhash = new SHA512Managed();
            Hnaam = myhash.ComputeHash(naaminput);
            Hplaats = myhash.ComputeHash(plaatsinput);
            for (int i = 0; i < 64; i++)
            {
                samen[i] = (byte) (Hnaam[i] ^ Hplaats[i]);
            }
            string resultaat = Convert.ToBase64String(samen);
            resultaat = resultaat.Substring(0, 86);
            resultaat = resultaat.Replace("+", "a");
            resultaat = resultaat.Replace("/", "O");
            resultaat = resultaat.Replace("0", "O");
            textBox3.Text = rnencode + "-" + resultaat.Substring(0 + randgen.Next(21), 5) + "-" + resultaat.Substring(20 + randgen.Next(21), 5) + "-" + resultaat.Substring(40 + randgen.Next(21), 5) + "-" + resultaat.Substring(60 + randgen.Next(21), 5);

deze code gebruikt 3 textboxen en een button en genereert 16mln unieke keys voor elke combinatie van textbox 1 en 2. Dit kan bijvoorbeeld naam en woonplaats zijn. Door dezelfde sequence (gedeeltelijk) in je programma te doorlopen kun je zien of de key legaal is. Dit is niet de meest veilige denkbaar, maar het houd 99.9% van de gebruikers al buiten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan