folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Lisans Kontrol (Beyin Fırtınası)



Lisans Kontrol (Beyin Fırtınası)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    unbalanced bunu yazdı
    Asayisci bunu yazdı

    fikirler çok hoş :) üşenmeden yazdığınız için teşekkür ederim. İnanın ufkumu genişletti.
    Ancak offline çalışma bizde kaçınılmaz. yani müşteriyi online olarak web servis üzerinden lisans kontrolüne zorlayamam.

    peki şöyle birşey aklıma geldi? Bu konudaki fikirlerinizi merak ediyorum.

     

    yukarıda anlattığım lisans kontrolü müşterimiz tarihi geri alarak aşabiliyordu.
    veritabanında ya da registery de her online lisans kontrolünde bu kontrolün "yapıldığı güne" ilişkin bir tarih tutsak ki bunu encrypt etsem. (LastControlDate)
    bir de lisans bitiş tarihini tutsak (örn: LicenceDate:13.04.2023)
    kullanıcı lisansının dolduğu bi gün online ya da ofline bir şekilde kontrol yaptı (örn: 14.04.2023) haliyle bu tarih yine kaydedilecek (LastControlDate:14.04.2023)

    eğer bu aşamadan sonra kullanıcı tarihi geriye alırsa basit bir if else döngüsü ile bunu tespit edebilirim diye düşünüyorum

    DateTime Bugun:DateTime.Now();

    if(Bugun<LastControlDate)

    {

             "Kullanıcı tarihi geri almış. Sistemi kapat"

    }
    else { "Sorun yok"}

    Aşılabilir mi?

    Bugun:DateTime.Now();

    sorun buradan kaynakli hocam. Adam tarihi geri alinca zaten burasi dogru calismayacak.

    O sebeple ticker ile sayman gerektigini söyledim. 

    Dedigin license date ve last control olayini yapabilirsin, orada zaten süresi gecmisse direk uygulamayi bloklarsin ama adam internete baglanana kadar lisansi gecmis olsa da tarihi geri alarak kullanabilir.

     

    şimdi şöyle düşün;
    Lisans bitiş tarihi 10.03.2023 olsun ve bunu registery de özel birşekilde tutuyoruz =>LicenceDate
    adam 10 gün önce lisans kontrolü yaptı ve lisans online (05.03.2023) =>LastControlDate
    sonra müşteri offline olarak 11.03.2023 tarihinde programa erişmeye çalıştı ve  LicenceDate geçtiği için lisanssız uyarısı aldı.
    Bu esnada sistem LastControlDate öğesini 11.02.2023 olarak güncelledi.
    sonra uyanıklık yapmaya kalkıp tarihi geri aldı. 01.01.2023 => DateTime.No()

    şimdi bu durumda aşağıdaki kodumuz sorunsuz çalışması gerekmiyor mu :)

    DateTime Bugun:DateTime.Now(); //01.01.2023

    if(Bugun<=LastControlDate) //01.01.2023 <= 11.02.2023

    {

             "Kullanıcı tarihi geri almış. Sistemi kapat"

    }
    else { "Sorun yok"}

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    Asayisci bunu yazdı

    şimdi şöyle düşün;
    Lisans bitiş tarihi 10.03.2023 olsun ve bunu registery de özel birşekilde tutuyoruz =>LicenceDate
    adam 10 gün önce lisans kontrolü yaptı ve lisans online (05.03.2023) =>LastControlDate
    sonra müşteri offline olarak 11.03.2023 tarihinde programa erişmeye çalıştı ve  LicenceDate geçtiği için lisanssız uyarısı aldı.
    Bu esnada sistem LastControlDate öğesini 11.02.2023 olarak güncelledi.
    sonra uyanıklık yapmaya kalkıp tarihi geri aldı. 01.01.2023 => DateTime.No()

    şimdi bu durumda aşağıdaki kodumuz sorunsuz çalışması gerekmiyor mu :)

    DateTime Bugun:DateTime.Now(); //01.01.2023

    if(Bugun<=LastControlDate) //01.01.2023 <= 11.02.2023

    {

             "Kullanıcı tarihi geri almış. Sistemi kapat"

    }
    else { "Sorun yok"}

    yazilarinda celiski var hocam ki öyle olmasa bile yine de yanlis yapmissin.. Yani sen kendi senaryona uygun bir tarih buluyorsun :) Ben yapayim sen bak..

     

    Lisans Bitis tarihi 10.03.2023

    Son lisans kontrolü (internete baglanmis) 05.03.2023 

    buraya kadar tamam olsun.. 

    tarih 08.03.2023 olsun.. ben programi kullandim.. kücük bir program kullanarak tarihi her zaman 08.03.2023 olarak ayarladim, ya da hergün elle ayarladim... 

    ne oldu?

    Iste senin mantiginda bunu anlamanin hic bir yolu yok hocam. O yüzden tick sayman gerekli dedim.

    ayrica senin lisans kontrolün sadece bu if else ise zaten program 12.03.2023 den itibaren normal calismaya devam eder. Tabi LicenseDate'i de kontrol etmen lazim (muhtemelen belirtmemissin)

     

    Tarihi degistirmis oldugunu aslinda anlayabilirsin hocam, eger tarih degismisse direk olarak lisansi devre disi birak.

    Nasil mi yaparsin? Program ilk kullanimda bir kere internete baglanacak degil mi? O zaman utc time alirsin su siteden https://time.is/UTC 

    elinde canli olarak bir tarih olacak ve onu sifreli olarak kaydet. Ve tabi bir de elinde lisans bitis tarihn var. Yani elinde toplam 2 tarih var.

    Daha sonra program her programin acildiginda anlik tarih ve saati alip kaydet.

    Burada 2 seyi karsilastiracaksin

    1- lisans baslangic ve bitis tarihleri arasinda mi bu tarih? 

    2- en son kaydettigin tarih'ten eski mi?

     

    iste burada dügüm cözülmüs olur. 

    üstteki senaryoyu uygulayalim

    Lisans baslangic: 10.01.2023

    Lisans Bitis:  10.03.2023

    Programi calistirdi ve o UTC tarihinide aldik onu da 10.01.2023 diyelim.

     

    tarih 08.03.2023 oldu. Ve bu güne kadar herhangi bir tarih degistirme olayi olmadi

    O halde program suana kadar 10.01.2023 den 08.03.2023 e kadar olan tüm tarihleri kaydetti.

    Ve 09.03.2023 oldu tarih, adam programi acmadan tarihi 08.03.2023 yapti. 

    Programin kayitli tarihlere bakacak 08.03.2023 zaten sisteme kaydedilmis ve yine ayni tarih denk gelmis, demek ki tarihi degistirmis deyip, programi internete baglatmasina zorlayabilirsin ve programi actirmazsin.. 

    Internete baglayinca son kontrol tarihini güncellersin...

    Not:  Burada sikinti su olur, adam programi 08.03.2023 de iki kere acabilir. O sebeple saatleri de kaydetmen ve toplam saati de saydirman gerekecek. Bir günde 24 saat olacagi icin programin kapanisi - programin acilis saat farkini kaydedeceksin

    Eger 08.03.2023 de programin toplam kullanim saati 24'ü gecmisse, tarihte oynanma olmus.

     

    Biraz karisik anlatmis olabilirim cünkü karisik :)) Ama bu sekilde bu olayi gecmesinin mümkünati yok (cracking haric).

     

    Anlamadiysan tekrar anlatirim ama dediklerimi bir kagida cizip adim adim anlamaya calisirsan olayi cözersin :) 

     

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lepusmorris
    lepusmorris's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

    windowsta eventlog diye bir zımbırtı varmış ve bunu okuyabiliyormuşsun. her açılışta tarihin değiştirilip, değiştirilmediğini kontrol ettirebilirsin. tarih değiştirilmiş ise internete bağlanmaya zorlayacaksın ve bir ntp ile tarihi kontrol ettirip, güncel zamanı o cihaz için tekrar ayarlayacaksın. tabi bunlar google'layarak ulaştığım varsayımlar. ne derece iş görür fikrim yok.

     

    https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.eventlog.geteventlogs?view=netframework-4.8


    ..
Toplam Hit: 3346 Toplam Mesaj: 14
beyin firtinasi lisans lisans kontrol