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

    Merhaba arkadaşlar.

    Yıllık aidat ödemeli bir Masaüstü uygulamanız var. Müşteriler her yıl kullanım seneidevriyesi geldiğinde 
    sistemdeki bazı ana modüller deaktif oluyor ve müşterinin yıllık ücreti ödemesi sağlanıyor.

    İlk etapta projeyi yaparken bu konuyu çok irdelememiştim.
    şöyle basit bir yol izledim.
    Her PC nin benzersiz Hdd seri numarsını alarak bir kombinasyonla LisansID oluşturdum.
    Her bir müşterinin lisansını bir sunucuda tuttuğum XML dosyasına ekledim.
    tabi burada ödeme yapılması gereken tarih bilgisi de mevcut.

    Proses şöyle işliyor.
    Program çalıştırıldığında LisansID ve tarih bilgisi ile XML dosyası okunarak kontrol yapılıyor.
    Tarih uygunsa progrm sorunsuz çalışıyor. Eğer ödeme yapılması gereken bir tarihe ulaşılmış ise yukarıda dediğim gibi
    bazı modüller deaktif oluyor.

    EE bu kocaman bir bag'ı da içinde barındırıyor dediğiniz duyar gibiyim. Evet farkındayım.
    Kullanıcı bilgisayar tarihini ileriye aldığında kontrolün arkasından dolanmış oluyor :) 
    dediğim gibi ilk etapta bunu çok umursamamıştım. Ancak şimdi bu konuda kesin bir kural getirmem gerekiyor.
    Bunu önlemeliyim.

    Ayrıca kullanıcı internet olmadan da programı kullanabiliyor. Müşteri Database'leri %90 local de çalışıyor.
    yani network olmadan da tarih kontrolünü yaptırmam gerekiyor.

    Evet parlak fikirlerinizi alalım.
    Siz olsanız nasıl bir proses uygulardınız..

    Şimdiden fikirleriniz için teşekkür ederim..

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

    ben lisans sorgusunu bypass ederek programi kullanabilir miyim mesela? Yani senin sunucuna gitmeden, oradaki lisans kontrol metodunu bypass eder ve programi acarim (decompile edebilirim eger .net ile yaziyorsan). Ya da cracking bilen bir adam ilgili yeri nop'lar.

    programi web servisine mahkum kilman lazim.Eger bunu %100 yapabilirsen en mantiklisi ve kirilmayacak is bu olur. Cünkü exe'yi kirsalar da sen web tarafinda exe'ye veriyi vermezsin olur biter..$

     Ancak bunu yapamiyorsan, yani program cogu zaman offline calisacaksa aklima söyle bir sey geli

    1- Ilk adimda programin calisabilmesi icin gerekli veriler internetten cekilir

    2- bu istek sirasinda lisans kontrolünü yapabilirsin

    3- bu verileri localdeki db'ye yazarken 'expiration at' li sekilde yazarsin  (rdmbs nasil yaparsin bilmiyorum ama nosql cözümlerde genelde oluyor özellikle mongo'da)

    4- ilgili kaydin süresi doldugunda kendisini silecek

    5- yeni verilere ihtiyac olacagi icin yine senin webservisine baglanip yeni datalari cekmek zorunda kalacak.

    burada kullaniciyi internete baglamaya zorlayacaksin. Tabi bu da asilabilir ama biraz daha zor. 

     

    alternatif olarak tarih olayini söyle cözebilirsin..

    programin baska bir exe'yi tetiklesin ya da servis olarak yüklersin, bu exe ticking islemi yapsin. Yani her saniye'de ya da hatta salisede bir degeri 1 arttirsin. Ancak burada lisans mantigini degistirmen gerekecek. 

    Pay as you go mantigi olacak. Program calistigi süreyi saydiracaksin.. Ve atiyorum 1 milyon tick atti bu da 720 saate denk gelsin. Bunun üzerinden fiyatlama yapabilirsin. Saati, tarihi ileri geri almasi farketmez, programi calistigi sürece ilgili servis (ya da programin kendisi) sürekli tick sayisini arttiracak ta ki kapanana kadar.. 

    suan aklima gelenler bunlar :) 2. fikir baya hosuma gitti bu arada, yeni aklima geldi, patenti bana aittir :)) 

     

     

     

    unbalanced tarafından 11/Mar/23 01:51 tarihinde düzenlenmiştir

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

    Ticking olayını mantıklı bulmadım.

    Reverse engineering biliyorum ya sonuçta, giderim ms'yi arttırırım, 720 saat yerine 1 saat tikler.

     

    Veri sürekli değişmeyecektir belki ama cryptolu olarak data gidip gelebilir belki. client random bir anahtar oluşturur, onunla encrypt eder veriyi ve servera gönderir, benzer şekilde cevap verir falan. Memoryden patchlemesinler diye de bir expiration date olur, bu date dolduğunda tekrar servera sorar.

    Offline çalışacak bir şeyi çok rahat cracklersin. Istediğin kadar obfsucate et. Ref proxy kullan, cflowu karıştır vs. vs.

     


    0x0480 takilin madem ﷽﷽﷽
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    end bunu yazdı

    Ticking olayını mantıklı bulmadım.

    Reverse engineering biliyorum ya sonuçta, giderim ms'yi arttırırım, 720 saat yerine 1 saat tikler.

     

    Veri sürekli değişmeyecektir belki ama cryptolu olarak data gidip gelebilir belki. client random bir anahtar oluşturur, onunla encrypt eder veriyi ve servera gönderir, benzer şekilde cevap verir falan. Memoryden patchlemesinler diye de bir expiration date olur, bu date dolduğunda tekrar servera sorar.

    Offline çalışacak bir şeyi çok rahat cracklersin. Istediğin kadar obfsucate et. Ref proxy kullan, cflowu karıştır vs. vs.

     

    Hocam zaten local çalışacak sistemi bilen biri zaten kıracaktır. hangi lisans olayını koyarsanız koyun kırılacak. O sebeple uygulamanın web servisine bağımlı olmak zorunda dedim ki datayı oradan çeksin.

    Aslında daha doğru tabir, işi web servisinin yapması. Ben internet bağlantı olayını zorunlu kılarım o zaman kırılma korkusu yaşamaz. 

    Ticker olayı, tarih-saate alternatif bir şey, kırılmamaya karşı değil der unbalanced :) 

    Daha önce mobil uygulama için online lisans sistemi geliştirmiştim ama 1 defaya mahsus lisans satın alıyor, bir qr kod veriyorduk müşteriye (A5 kağıdına basılı). Her bir qr kodu (voucher diyoruz ismine), bir kere kullanılabiliyor. Ve özellikleri oluyor. Yani a,b,c modül lisanslı qr kodlar, b,c modülleri lisanslı qr kodlar gibi 

    Kullanıcı bu qr kodu telefonla okutuyor ve program servise gidip gerekli bilgileri şifreli olarak çekip yine şifreli olarak kaydediyor.

    Bu doğrulama işlemi sadece bir kere yapılıyor. Eğer yeni telefon kullanacaksa, eski lisansı admin panelinden deaktiv edilip yeni voucher veriliyor. 

    Basitçe sistem böyleydi


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

    tarih yerine lokalde exeyi calistirma hakki tanimlardim

    aidat uzerine oldugu icin 12 hak + 8 yedek hak. 1 sene icin toplam 20 çalıştırma hakki verirdim(program 1 ay acik kalirsa otomatik kapattirdim)

    lisanslarin alim tarihi belli oldugu icin 4 ay kala hakkim bitti acamiyorum derse 4 hak daha tanimlayip verirdim

    DE5TROY3R tarafından 11/Mar/23 16:33 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    DE5TROY3R bunu yazdı

    tarih yerine lokalde exeyi calistirma hakki tanimlardim

    aidat uzerine oldugu icin 12 hak + 8 yedek hak. 1 sene icin toplam 20 çalıştırma hakki verirdim(program 1 ay acik kalirsa otomatik kapattirdim)

    lisanslarin alim tarihi belli oldugu icin 4 ay kala hakkim bitti acamiyorum derse 4 hak daha tanimlayip verirdim

    windows'un yerli yersiz crashleri icin de garanti veriyor musun peki yedek haklar disinda?


    0x0480 takilin madem ﷽﷽﷽
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SweetyVolty
    SweetyVolty's avatar
    Kayıt Tarihi: 12/Temmuz/2008
    Homo
    unbalanced bunu yazdı
    end bunu yazdı

    Ticking olayını mantıklı bulmadım.

    Reverse engineering biliyorum ya sonuçta, giderim ms'yi arttırırım, 720 saat yerine 1 saat tikler.

     

    Veri sürekli değişmeyecektir belki ama cryptolu olarak data gidip gelebilir belki. client random bir anahtar oluşturur, onunla encrypt eder veriyi ve servera gönderir, benzer şekilde cevap verir falan. Memoryden patchlemesinler diye de bir expiration date olur, bu date dolduğunda tekrar servera sorar.

    Offline çalışacak bir şeyi çok rahat cracklersin. Istediğin kadar obfsucate et. Ref proxy kullan, cflowu karıştır vs. vs.

     

    Hocam zaten local çalışacak sistemi bilen biri zaten kıracaktır. hangi lisans olayını koyarsanız koyun kırılacak. O sebeple uygulamanın web servisine bağımlı olmak zorunda dedim ki datayı oradan çeksin.

    Aslında daha doğru tabir, işi web servisinin yapması. Ben internet bağlantı olayını zorunlu kılarım o zaman kırılma korkusu yaşamaz. 

    Ticker olayı, tarih-saate alternatif bir şey, kırılmamaya karşı değil der unbalanced :) 

    Daha önce mobil uygulama için online lisans sistemi geliştirmiştim ama 1 defaya mahsus lisans satın alıyor, bir qr kod veriyorduk müşteriye (A5 kağıdına basılı). Her bir qr kodu (voucher diyoruz ismine), bir kere kullanılabiliyor. Ve özellikleri oluyor. Yani a,b,c modül lisanslı qr kodlar, b,c modülleri lisanslı qr kodlar gibi 

    Kullanıcı bu qr kodu telefonla okutuyor ve program servise gidip gerekli bilgileri şifreli olarak çekip yine şifreli olarak kaydediyor.

    Bu doğrulama işlemi sadece bir kere yapılıyor. Eğer yeni telefon kullanacaksa, eski lisansı admin panelinden deaktiv edilip yeni voucher veriliyor. 

    Basitçe sistem böyleydi

    server 0.pool.ntp.org
    server 1.pool.ntp.org
    server 2.pool.ntp.org
    server 3.pool.ntp.org

    diyemiyorum networksuz çalışabilme şartını yerine getiremiyor.


    Zaman ayarı çok illet bişi, misal benim bios pilim olmadığı için (elimde kaldı yuvası bi ara lehimliycem) zırt pırt sıfırlanır benim gibi birine offline güven duygusu oluşturamazsın misal. hani bu uslu bundan bişi olmaz veya dur burada bi bokluk var bi nete gir bakim ne kadar geçmiş türevi birşeyler yaptırtmak gibi. 


    Çok sıkılıyom
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    CISSP
    CISSP's avatar
    Kayıt Tarihi: 15/Ağustos/2015
    Erkek

    https://chimeratool.com/ bu programın online kontrolü var lisans bilgileri sunucudan kontrol edilip ona göre işlem alınıyor yanlış biliyor olabilirim fikir vermesi açısından bakabilirsiniz.

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

    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?

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    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.

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AndrevMask
    AndrevMask's avatar
    Kayıt Tarihi: 04/Mart/2022
    Erkek
    Lisansı sunucuda yap, algoritmayı oldukça karmaşık yap. Programı kırmaya çalışan ters mühendis algoritmayı deneme yanılma ile bulmaya çalışacaktır. Sunucuda çarpma işlemi ile lisans kontrolü var diyelim, bunu exe içerisinde göremez. İleri seviye ise algoritmayı çıkartarak kırabilir elbette ki bu çok az bir ihtimal. Deneyimlerime dayanarak yazdım hocam.

    Herkesten, her şeyden umudunuzu kestiğiniz bir anda belki de kurtarıcı sizsinizdir.
Toplam Hit: 3260 Toplam Mesaj: 14
beyin firtinasi lisans lisans kontrol