Jak stworzyc prosty keygen?

0

Jak w temacie. Jak stworzyc prosty serial. Chcialem zabezpieczyc program, ale nie moge nic wymyslec. Chodzi mi o taki cosik, zeby program sprawdzal poprawnosc seriala i zeby w serialu byla nazwa uzytkownika. Ma ktos jakis pomysl? :)

0

Chłopie wymyśl sobie jakiś wzór matematyczny np. aby pobierał kody ASCII z wpisanej nazwy użytkownika i je np. mnożył przez ilość znaków, później dzielił przez coś tam i dowaj jakieś literki i gotowe...ile operacji zrobisz na działaniach tak będzie trudniej go rozgryźć...

0

Dzieki. Wlasnie po wyslaniu posta naszedl mnie pomysl. Dzieki za uwagii. :)

0

Hm... moglbys zaszyfrowac nazwe+twoj jakis tam kod i powstaje serial
--Delphi 6
Pozdrowienia{hello} ,
Moderator Imperior

0

Ja bym proponował za pomocą kodowania Enigmy - mam artykulik o tym :)

0

Imperior napisał:
Hm... moglbys zaszyfrowac nazwe+twoj jakis tam kod i powstaje serial
&gt

Alew jemu chodziło o keygen... :) A ty dałeś pomysł na jakiś tam kod i to musiałby sobie takich kodów sam nawymyślać, albo był by jeden... POZDRAWIAM! {brawo}

0

OnoMaTO ma rację. Trzeba stworzyć jakiś wzór, o którego ideę będą opierały się kody, a które to program będzie potem mógł rozszyfrować. Najłątwiej jest zrobić jakieś sprawdzanie:
if serial[1]='U' then if (ord(serial[3]) + ord(serial[17]))=300 then //cośtam.
Jest to chyba najprostszy i najlepszy sposób - trzeba posiedzieć, wymyśleć wzór, i na jego podstawie zbudować keygen z random itd.

0

procedure TForm1.GenerujClick(Sender: TObject);
var
a,b,c,d,e : Integer;
Kod : String;
begin
if N.Text = '' then
MessageBox(0,'M u s i s z c o ś w p i s a ć !','-=&lt[ ..UPS.. ]&gt=-',MB_OK+MB_IconInformation)
else
begin

  • przypisanie do zmiennych a,b,c i d i zmiana ich na znaki w kodzie ASCII
    a := Ord(N.Text[2]);
    b := Ord(N.Text[1]);
    c := Ord(N.Text[Length(N.Text)]);
    d := Ord(N.Text[Length(N.Text) - 1]);
    e := Ord('T');

  • mnożenie wyników i przypisanie z powrotem do zmiennych
    a := a3;
    b := b
    2;
    c := c4;
    d := d
    8;
    e := e*2;

  • Wstawienie gotowego wyniku do zmiennej Kod
    Kod := IntToStr(a)+IntToStr(e)+IntToStr(b90)+IntToStr(c)+IntToStr(d2);

  • Wstawienie zmiennej Kod do edita i wyświetlenie
    R.Text := Kod;
    end;
    end;

I to by było na tyle :-)

Pozdrawiam
TheChoseN
http://www.dplanet.boo.pl/

0

Hehehe Ciekawa metoda..... Ale po kiego licha to *90 w IntToStr????? :-) To musi robić zamieszanie, ale czy nie lepiej robić coś takiego:

Jeżeli w a przechowuję kod ASCI znaku, to a:= (a*1000 mod 257)*100 mod 255 ?? Liczby można wybrać dowolnie, a kodowanie modulo jest naprawdę trudne do złamania.. :-)

--Delphi 4

Skysh The God, Your Slave

0

Skysh napisał:
Hehehe Ciekawa metoda..... Ale po kiego licha to 90 w IntToStr????? :-) To musi robić zamieszanie, ale czy nie lepiej robić coś takiego:
&gt
&gtJeżeli w a przechowuję kod ASCI znaku, to a:= (a
1000 mod 257)*100 mod 255 ?? Liczby można wybrać dowolnie, a kodowanie modulo jest naprawdę trudne do złamania.. :-)

Po pierwsze kodowanie modulo nie jest takie trudne do złamania...
A po drugie przykład który podałeś nie działa tzn np: dla a=232, a=243 i a=254 wyjdzie a=240, więc nie możliwe jest odkodowanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1