Avatar billede orca Nybegynder
16. maj 2005 - 14:09 Der er 10 kommentarer og
2 løsninger

Begrænsning af kørsel ud fra dato

Jeg vil begrænse min applikation så den ikke længere kan startes efter en given dato. Dette gøres for at sørge for at folk altid har opdateret til den nyeste version.

Hvad implementeres det smartest? Jeg skal naturligvis have lavet en simpel if(ikke_gyldig_dato) { Application.End }, men hvordan tjekker jeg om den nuværende dato har overksredet en given slutdato? Jeg kan ikke stole på systemets ur da brugerne i så fald bare vil kunne ændre dette.
Avatar billede arne_v Ekspert
16. maj 2005 - 14:17 #1
1)  Ulempen ved at fuske med uret på sin PC er noget større idag end for 15 år
    siden. Jeg tror ikke at at mange vil gøre det uden et virkeligt godt incitament.

2)  .NET applikationer er nemme at decompile, rette og retcompiler - så sikkerheden
    i den slags kod er ikke ret stor for dem som vil cracke.
Avatar billede orca Nybegynder
16. maj 2005 - 14:35 #2
Jeg bliver nødt til at gå ud fra at folk ikke vil decompile. Du kan have ret i at der er mange ulemper ved at snyde med uret, det er mildest talt besværligt.

Jeg har overvejet den simple løsning med at lade en webserver spytte en DateTime ud og så benytte denne som dags dato.
Avatar billede arne_v Ekspert
16. maj 2005 - 14:37 #3
ja - eller kontakte en af de mange NTP servere på nettet

men men - så virker din app jo kun når folk er online - er det OK ?
Avatar billede nielle Nybegynder
16. maj 2005 - 14:49 #4
Jeg er fuldståndig enig med arne_v hvad angår sikkerheden, men her er da et udkast til det rent tekniske:

using System;
using System.IO;
using System.Net.Sockets;
using System.Text;

namespace Eksperten
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            string TimeServer = "time.nist.gov";
            TcpClient TimeClient = new TcpClient(TimeServer, 13);

            string Hallo = "Hallo";  // Bare et eller andet
            Hallo += "\r\n";
            byte[] ArrHallo = Encoding.ASCII.GetBytes(Hallo);

            Stream WriteStream = TimeClient.GetStream();
            WriteStream.Write(ArrHallo, 0, ArrHallo.Length);

            NetworkStream ReadStream = TimeClient.GetStream();

            byte[] ResponseBytes = new byte[TimeClient.ReceiveBufferSize];
            ReadStream.Read(ResponseBytes, 0, (int) TimeClient.ReceiveBufferSize);
            string Response = Encoding.ASCII.GetString(ResponseBytes);
           
            Console.WriteLine("[{0}]", Response.Substring(0, 49));

            TimeClient.Close();
        }
    }
}
Avatar billede nielle Nybegynder
16. maj 2005 - 14:51 #5
Sammenkogt efter:

http://www.csharphelp.com/archives2/files/archive463/NISTTime.cs

- hvor der også er noget mere forklaring om teknikken bag - f.eks. hvordan formatet skal læses.
Avatar billede orca Nybegynder
16. maj 2005 - 16:04 #6
Programmet bruges udelukkende i online sammenhæng, så der vil altid være en internet forbindelse. Det ser meget lovende ud nielle, jeg forsøger lige at brygge videre på det :)
Avatar billede bjarner Nybegynder
17. maj 2005 - 11:20 #7
Jeg har just forsøgt mig med nielles kodestump, men kommer ikke igennem. Jeg får en Timeout. Da jeg sidder bag en Firewall antager jeg at det er årsagen (ændrer jeg portnummer til 80 afvikles mere af koden, men er så ligegyldigt). Den situation bør man jo nok lige have in mente.
Avatar billede poulsgaard Praktikant
17. maj 2005 - 14:26 #8
Du kan godt bruge systemets ud. hvis du blot hver gang du starter kontrollere om klokken er stillet tilbage.

<start>

if Now() > logedTime
  logTime = Now()
else
  application.end //tiden er stillet tilbage i forhold til sidste start
if logTime > maxtTime
  application.end  /tiden er overskredet
.
.
.

Dette stiller naturligvis krav til at uret altid går rigtig på maskinen (!)
Avatar billede orca Nybegynder
18. maj 2005 - 21:11 #9
Beklager jeg ikke har taget stilling til point fordeling endnu, jeg har ikke lige haft tid til at arbejde på projektet, men tråden er ikke glemt!
Avatar billede orca Nybegynder
30. maj 2005 - 21:56 #10
Jeg endte med en kombineret NIST/system urs løsning, det fungerer udemærket. nielle og arne_v, smider i svar? :)
Avatar billede arne_v Ekspert
30. maj 2005 - 22:00 #11
ok
Avatar billede nielle Nybegynder
30. maj 2005 - 22:00 #12
Ok :^)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester