czwartek, listopad 20th, 2008 | Author: admin

Watermarki czyli inaczej znaki wodne, znacie je z tych fajnych banknotow z dwoma zerami, tak wiem, ja tez je lubie :).Znaki wodne maja swiadczyc, o autentycznosci takiego papirusa, ale ta technike tzn. nie w doslownym tego slowa znaczeniu, mozna zastosowac w keygenach.

Czasami siedzi sie godzinami nad jakims keygenem, pelni dumy wypuszczamy nasze “dziecko” na ten okrutny swiat, az tu nagle okazuje sie, ze 2 dni po wypuszczeniu keygena jakis kolo z konkurencyjnej grupy robi serial do tego samego programu i zastanawiamy sie nieraz czy on rzeczywiscie jest takie dobry(no bo generacja kluczy to nie byla kaszka z mleczkiem) czy czasem nie “zwalil” sobie numerka korzystajac z naszego keygena a potem zbieral laury.Jak wiec zabezpieczyc swojego keygena przed takimi lamiastymi zagraniami?Sa 2 wyjscia z sytuacji, zalezne od rodzaju algorytmu uzytego w programie.Nie bede tu przytaczal zadnych kodowych rozwiazan a jedynie idee takiego zabezpieczenia.Mamy jakis tam program, ktory podczas rejestracji prosi nas o imie i sn.Serial ma np. postac:

WWWW-xxxx-YYYY-zzzz

i tak 2 i 4 czesc seriala zalezna jest od name, 3 np. jest zalezna od 2 i 1 czesci.Normalnie piszac keygena zazwyczaj robilem tak, generowalem sobie 2 i 4 czesc na podstawie name, nastepnie 1 czesc byla generowana przy uzyciu jakichs pseudo-losowych procek i z tego byla liczona ostatnia, czyli 3 czesc seriala.Przy takim postepowaniu nie ma mozliwosci zweryfikowania czy jakis znaleziony w sieci serial pochodzi z naszego keygena.Aby w jakims stopniu zostawic jakies slady mozna przyjac, ze 1 czesc bedzie jakas stala wartoscia np. zeby serial wygladal tak:

LAME-xxxx-YYYY-zzzz

takie rozwiazanie jest dobre, ale potencjalni zlodzieje seriali chyba sie kapna, ze te pierwsze 4 bajty to sygnaturka i raczej nie skorzystaja z takiego seriala, to dobra metoda bo odstrasza, ale zeby byl fun najlepiej zrobic nieco inaczej.Generujemy sobie 2 i 4 czesc seriala, wsadzamy je do jakiegos bufora i np. liczymy z nich sume CRC32, CRC16 w zaleznosci ile mamy miejsca dla 1 czesci seriala, jesli jest 8 bajtow do wykorzystania to CRC32 jesli 4 to CRC16, jesli jeszcze wiecej to mozna pokusic sie o uzycie np. md5, gdy wyliczymy ta unikalna sume wstawiamy ja jako 1 czesc seriala.Jesli teraz jakis kolo pusci na net serial do tego proga, z latwoscia bedziemy w stanie zweryfikowac czy pochodzi on z naszego keygena, liczymy sobie sume CRC32(czy czego tam uzylismy) z 2 i 4 czesci seriala i jesli okaze sie, ze jest ona rowna 1 czesci seriala to mozemy miec na 99% pewnosc, ze taki serial zostal wygenerowany naszym keygenem.Co zrobic z takim delikwentem, kiedy odkryjemy, ze opublikowal serial korzystajac z naszej roboty?Najlepiej, jesli wyjdzie nowsza wersja programu dla ktorego robilismy keygena, zrobic do niego keygena ofcoz :) i zamiescic w nfo odpowiednia notke z nickiem takiej osoby, serialem i grupa do ktorej nalezy, to starcza.

Troche klopotow zaczyna sie robic gdy np. mamy do wykorzystania tylko 2 bajty w serialu, ktore nie sa nijak wykorzystywane przez program, ani nie sa sprawdzane.Przyznam sie, ze tu nie mozemy miec 99% pewnosci, ze jak damy tu jakies zaleznosci to potem bedziemy w stanie wykryc taki sfejkowany serial.Jesli juz bedziemy chcieli sie jakos ustrzec to warto zastosowac taki trick, zastosujmy stale wartosci 2 bajtow np. ‘A’ i ‘X’ i dodatkowo piszac keygena zrobmy go tak zeby pracowal pod konsola, chodzi tu o to, ze jesli jakis lama-zlodziej bedzie generowal sobie numerki spod gui to po nacisnieciu magicznego “generate” bedzie widzial, ze pewne literki ciagle sa takie same, chyba, ze prog bedzie sie zamykal po wygenerowaniu 1 seriala, a pod konsola generacja bedzie nastepowala tylko raz i byebye. Watpie czy ktos sie zorientuje, ze 5 generowanych numerow ma w 2 miejscach ciagle takie same wartosci, no chyba, ze bedzie sprawdzal wszystkie 5 numerkow, ale takich maniakow chyba nie ma ;).Jesli serial ma np. 3 wolne miejsca, ale nie sa ulozone jeden za drugim, zamiast wstawiac tam stale wartosci bajtow, lepiej przekopiowac bajty juz wygenerowane w serialu w miejsce tych dziur, to tez w pewnym stopniu pozwoli zweryfikowac serial(nie wierze w przypadki), jesli natomiast te 3 bajty uzlozone sa jeden za drugim, zamiast cudowac najlepiej wstawic tam stala sygnature, jakis skrot grupy np. CPL.

Jesli prog wymaga przy rejestracji name, ale serial nie ma zadnych luk, zeby mozna bylo wrzucic tam jakies sygnaturki, mozna zrobic tak, przy wpisywaniu name prosimy uzytkownika, aby do name na koncu dopisal np. spacje, to w pewien sposob pozwoli nam wykryc wykradziony serial, bo jesli prog tego nie wymagal, a ktos puscil serial, zaznaczajac jednoczesnie, ze na koncu name jest spacja, to chyba bedzie podejrzane.Zamiast dopraszac sie usera aby wpisal na koncu spacje, mozna ten proces zautomatyzowac, zeby keygen automatycznie dodawal spacje do name a potem informowal uzytkownika, ze jego name musi byc w takie postaci ze wzgledu na jakies tak warunki jakie stawia program.

Najgorszy przypadek to wlasnie kiedy progs nie daje mozliwosci ingerencji w postac seriala, ktora wylacznie jest zalezna od name.Jesli serial jest zalezny od name to mozna postapic jak to wyzej napisalem, jesli jest dodatkowo zalezy od firmy, a nam az tak zalezy na zabezpieczeniu to zawsze mozna pocisnac kit, ze nazwa firmy jest generowana na podstawie seriala i nie moze byl dowolna, wtedy wystarczy np. zaszyfrowac name np. jakims DESem,Blowfishem,TEA itp. zamienic na postac czytelna i wyswietlic jako nazwa firmy, a serial wygenerowac z name i szyfrogramu.Jesli nazwa firmy nie jest wykorzystywana podczas generowania seriala(a jest to dosyc czesto spotykane) mozna postapic podobnie tylko, ze zaszyfrowac wygenerowany serial, albo zahashowac serial i wynik wyswietlic jako nazwa firmy(a userowi napisac, ze sa to jakies tajne checki programu, najlepiej jeszcze dodac anty-hakerskie ;)

Apropos company, prostym acz skutecznym sposobem blokujacym mozliwosc “wykradniecia” seriala przez inna grupe jest shitlista, o tak, shitlista z nazwami grup, gdy jakis kolo bedzie chcial zarejestrowac prog, a bedzie pole company, zazwyczaj wpisuje sie tam nazwe swojego teamu, jesli wiec nasz bambus bezczelnie wpisze nazwe swojej grupki mozemy zrobic np. taki bajer zeby keygen wywalal windowsa w kosmos, albo “przypadkowo” kasowal pare plikow np. win.ini etc.Dobrym choc z leksza drastycznym rozwiazaniem jest zastosowanie shitlisty, ale z nickami osob, ktore naleza do naszych rodzimych zespolow(a nie jest tego zbyt duzo).Zamiast wieszania windowsa po wykryciu takiego szwindla mozna np. zrobic tak, zeby wygenerowany serial byl specjalnie bledny.

Jesli nie zalezy wam na zabezpieczeniach albo sadzicie, ze sa one zbyteczne bo wszyscy na naszej pl scenie sa tacy ql i ogolnie panuje przyjazn to po kiego grzyba to czytacie ;).W kazdym razie zycze wam, aby takie incydenty was omijaly, a jesli juz sie zdarza to nalezy porzadnie zweryfikowac fakty, zanim bedzie mozna postawic jakies zarzuty.

Swiat jest wielki, ale jeszcze sie spotkamy, cu.

bart

Category: ctrl-d
You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Comments are closed.