Nu kommer det jo et eller andet sted også an på hvad målgruppen er... når man siger det "let kan omgås".... det er jo et fåtal der rent faktisk vil vide hvor de skulle tage fat hvis det var...
Løsning A, som er lokalt er som Nielle siger, at ligge informationer om det i registrerings databasen, eller i en keyfile i applikationens dir... Jeg vil i begge tilfælde anbefale en form for kryptering... udelukker lidt flere fra nemt at omgås det..
Løsning B, som er mere sikker, er at bruge en webadresse med en "server" der tilader kørsel... evt. yderligere lade nogle af "key-functionalities" ligge implementeret på serveren, og kun som interfaces hos klienten... således ville de ikke være muligt at "fjerne" det tjeck op mod nettet, da programmet ganske simpelt ikke ville kunne kører uden at have fået visse objekter leveret...
Løsning A er jo nemmest, og samtid mindst sikker... Løsning B kan laves meget sikker... men den kræver også en hel del fæere resourcer... vis programmet pluselig bliver udbredt til 10.000+ brugere skal sådan en server pluselig kunne håndtere en del kald jo...
i denne sammenhæng hælder jeg mest til den lokale løsning, netop for ikke at skulle have et gigant web show kørende (potentielt).
nogen der har et lille code snippet til at skrive dags dato i krypteret form i registry (f.eks. som del af en custom action)? altså sådan at det er nemt at hente den ud igen til en sammenligning når programmet kører
Det er netop meningen at den skulle skrive ved installationen og krypteres for at man ikke lige kunne gætte formatet af datoen (kunne jo være et tidsstempel) og dermed ikke let gennemskue hvad den skulle rettes til for at forlæng prøveperioden.
Jeg er ikke så meget inde i det med Instalationsprojekter osv... men jeg ved så meget at hvis du laver din instalation i Visual Studio, så får du mulighed for direkte at skrive noget kode du afvikler som en del af instalationen... dermed har du sådanset adgang til hele .NET frameworket i forbindelse med en instalation... Så kan DateTime.Now jo bruges... Hvertfald så vidt jeg har fåstået konceptet...
(Tror det er det der heder Custom Actions, dog ikke sikker)
Og til krypteringen bruger man jo bare en alm Ciphers fra frameworket... ja eller skriver sin egen hvis man mener man behærsker det... (a rare situation i think) :P...
Det med at skrive en dato i registrereinfsdatabasen første gang programmet køres, kan være fornuftigt og simpelt nok - men hvis det skal være sikkert, så bare lave en MD5 check-værdi på datoen + noget fyldkode/pass som kun du kender. Således MD5 ikke bare kan genereres påny (ofte mange der glemmer det).
Så tager du både MD5 værdien og datoen, tjekker først om disse er ok - derefter hvis ok, så kan du så tjekke for hvor længe programmet må køre. Hvis første tjek ikke var ok, så kan du bare lukke programmet eller hvad du nu har lyst til, så tror jeg hurtigt brugerne fatter at det ikke er lige til at pille i.
Jeg vil personligt ikke mene det er velegnet til dette da MD5 er en Hash og ikke Kryptering, MD5 kan bruges til at lave en key til at benytte med krypteringen...
Dvs at du teknisk set skal de sidste X dage igennem og lave et tjeck for at se om det nu lige var den dag den blev registræret, det er lige 90 checks du skal igennem... (Hvis vi ikke skal ned på stører præsision end en dag)...
Vælger du at bruge fx TripleDES så kan du når du vil lave checket Derkyptere dine data, dvs at...
"2006/07/05 - 13:14:24" kan krypteres til Volapyk med nøglen "XD34SKOR"... kunne være:
iO4HSOz/wt1UYJwh8CCoHoCywCjqeDKM
og tilbage igen... Der skal så bruges en Key og en Vector...
Hovedsagen er at man frem for at skulle til at rende et range igennem af data, så kan man bare læse den værdi der står i registrætingsdatabasen og Dekryptere den... og så sammenligne den med nuværende tidspunkt...
Og self kan man pakke mange andre spændende ting ind i i feltet... Som du selv nævner så kan du med en MD5 hash forholdsvis nemt lave en ny hash at komme i databasen, dette kræver dog at du ved hvordan han lagre datoer... er det en Long værdi, er det en string kan Hash'er...
Med DES kryptering foregår det anderledes, der har du en nøgle og fx med en 128 bits nøgle har du en pænt sikker kryptering...
Men i begge tilfælde vil man ved at disassemble kunne finde enten det abskure dato format man Hasher med MD5, SHA eller whatever..., eller den nøgle man bruger i TripleDES eller hvilken som helst anden algoritme...
Fordelen med at kryptere istedet, er at kan program ikke skal til at "gætte"...
sikke alt det besvær. brugeren ryder selvfølgelig bare op efter programmet, og installerer det igen, så behøver han ikke vide hvordan strengen skal afkodes
plx>> i dette tilfælde bliver nøglen med datoen ikke automatisk fjernet når man afinstallerer og nøglen er ikke gemt under et produktnavn i registry, så man skal være rimelig ivrig hvis man vil lede efter den.
Det er heller ikke for at lave en vildt sikker løsning, blot at det ikke er alt for nemt at snyde sig fra at registrere kopien (i nogle tilfælde vil registreringen være gratis, men derfor kan den jo være interessant for udvikleren alligevel)
men det er altså ikke ret mange almindelige brugere, der benytter sysinternals værktøjer, endsige vil sætte sig ind i hvordan det fungerer... Hvis man er lidt avanceret så ja, men det er nok ikke en relevant målgruppe her
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.