• 11-01-2020, 21:14:54
    #1
    Üyeliği durduruldu
    Hepimiz yazmış olduğu projelerin kırılmasından bıkmış, usanmış delirmiş haldeyiz. Kırılan kaçıncı projem derken son vermek adına kendimce lisanslama sistemi hazırladım. Program istenilen kod doğrultusunda sunucu üzerinden belirtilen dosyayı indiriyor. Kurulum zaten basit, next next install
    Başlayalım
    • Öncelikle yeni bir Windows Form Application açalım.
    • Ekran alıntısındaki gibi keyfimize göre bir form tasarımı oluşturalım.
    • TextBox’ınızın (Bilgi Mesajları İçin) editlenmesini önlemek istiyorsanız bu kod blogunu kullanın
    • Bu segmentte WebClient özelliğini kullanacağız, onu da libary olarak ekleyelim ;
    • Görselde görünen gibi (sansür için üzgünüm ) kod blogumuzu ister butona ya da herhagi bir bileşene ekleyelim. (Merak etmeyin, kodları paylaşacağım.)
    • Sonrasında app manifest dosyamıza
    kodumuzu ekleyelim. İşlem tamamdır, geriye kalan sadece görsel şölen
    Kodlar ;

    private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {
    
        }
    
        private void Form2_Load(object sender, EventArgs e)
        {
            richTextBox1.ReadOnly = true;
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            string key = textBox1.Text;
            if (key == "lisanskey")
            {
                WebClient webClient = new WebClient();
                webClient.DownloadFile("http:/indirmeadresi.com/dosyasi.zip", @"c:\kurulum_otomasyon.zip");
                label6.Text = "Lisans Anahtarı Doğrulandı - RSA2048-VFVkUk0wMHlTbXhOTWxWMFQ-0d73be3e-9b21-486d-ae18-9363cd681efa";
                string title = "Plexi !";
                string message = "Lisans aşaması başarılı şekilde tamamlandı. Programın kurulum dosyaları C dizini içinde kurulum_otomasyon.zip dosyasındadır.";
                MessageBox.Show(message, title);
    
            }
            else
            {
                string title = "Olamaaaz !! :(";
                string message = "Ne yazık ki ya bağlantı da problem var ya da dosya bulunamadı. Var bişey ya çözücez. :/";
                MessageBox.Show(message, title);
            }
        }
    
    }
    Bir sonraki makalelerde görüşmek dileğiyle

    Kaynak : https://emrecantemur.com.tr/2020/01/...slama-sistemi/ (Blog şahsıma aittir.)
  • 11-01-2020, 21:23:18
    #2
    Teşekkür ederim müsait bir zamanda inceleyeceğim
  • 11-01-2020, 21:25:13
    #3
    Üyeliği durduruldu
    WebDogukan adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim müsait bir zamanda inceleyeceğim
    Ofis içi otomasyonlarımızda bu tür lisanslama yöntemi kullanıyoruz, şiddetle tavsiye ederiz.
  • 11-01-2020, 21:32:24
    #4
    Öncelikle paylaşım için teşekkürler hocam. Lakin yöntem çok güvenli sayılmaz, C# programların zaten kaynak kodları birebir okunabiliyor. O koyduğunuz if şartını yerine getirmeden de indirme adresi rahatlıkla alınabilir. Belki sağlam bir obfuscator ile desteklenirse daha güvenlikli olur. Veyahut da key kontrolünü de sunucu tarafında yaptırıp, key doğru ise dosyanın download adresini döndürebilirsiniz.
  • 11-01-2020, 23:15:11
    #5
    Üyeliği durduruldu
    pr1d3 adlı üyeden alıntı: mesajı görüntüle
    Öncelikle paylaşım için teşekkürler hocam. Lakin yöntem çok güvenli sayılmaz, C# programların zaten kaynak kodları birebir okunabiliyor. O koyduğunuz if şartını yerine getirmeden de indirme adresi rahatlıkla alınabilir. Belki sağlam bir obfuscator ile desteklenirse daha güvenlikli olur. Veyahut da key kontrolünü de sunucu tarafında yaptırıp, key doğru ise dosyanın download adresini döndürebilirsiniz.
    Kaynak kodunuzu RedGate ile şifreleyin. Şiddetle öneririm.
  • 12-01-2020, 13:31:39
    #6
    Maalesef .Net ile yazılan hiç birşey güvenlikli değil, gerçek güvenlik sağlamak istiyorsanız önemli tüm işlevleri sunucudan yaptırıp kontrollerin hepsini sunucuda gerçekleştirmelisiniz, ancak bu şekilde koruma sağlayabilirsiniz, yapısı gereği .Net çok kolay kırılmakta neyle şifrelerseniz şifreleyin.
  • 12-01-2020, 14:18:46
    #7
    hayatimda bu kadar basit bir koruma görmedim. Bir sürü acik noktasi var
    1- ister redgate ile ister baska bir sey ile obfuscate edin (bunun ismi sifreleme degil, kod karistirmadir, sifrleme bambaska bir sey, terimleri karistirmayin), yine cözülür
    2- yaptiginiz exe bir proxy gibi davraniyor ama lisans kontrolü basit bir if-else ile yapilmis
    3- lisansi olan biri, dosyayi kendi bilgisayarina indiriyor (kurulum_otomasyon.zip), adam alir bu dosyayi internete koyar, o zaman da bu lisans programi da bi halta yaramaz.
    4- else koydugun hata bile yanlis, o hatanin downloadfile kismda try-catch de olmasi lazim, else'deki hata,girilen key'in yanlis oldugu ile ilgili olmasi lazim,baglanti ile bir ilgisi yok

    kisacasi, orta düzey bir .net yazilimcisi bu mantigin hic bir ise yaramayacagini bilir. Emeginize saygi duyuyorum ama ilk mesajinizda sanki cok saglam bir yolmus gibi sunmaniz yanlis. Aksine benim gördügüm en gereksiz, en basit koruma yöntemi.

    Yazdiklarimi sahsiniza yönelik bir elestiri olarak almak yerine, kendinizi gelistirmeye vakit harcayarak daha profesyonel lisanslama sistemleri gelistirin. @oguzhane; nin dedigi gibi sunucu tarafli olmali. Ki bu da yetmez, anahtar-kilit seklinde olmali. Yani gelen bilgi (anahtar), o kilidi acabilecek ve o kilit acilmadan programin calismasi mümkün olmayacak sekilde olmali. Cok degisik türlerde koruma saglanabilir. Mesela bizim mobile projemiz (xamarin)'de obfuscation bile yok.. Kodlarini okumak isteyen adam istedigi gibi okusun. Ama lisans kontrolünü gecmesi mümkün degil. Lisans bilgileri olmadan da program user ya da factory modda calismaz cünkü oradan gelen bilgilere ihtiyaci var. Bir nevi kod tamamlama diyelim.
  • 12-01-2020, 15:02:30
    #8
    Üyeliği durduruldu
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    hayatimda bu kadar basit bir koruma görmedim. Bir sürü acik noktasi var
    1- ister redgate ile ister baska bir sey ile obfuscate edin (bunun ismi sifreleme degil, kod karistirmadir, sifrleme bambaska bir sey, terimleri karistirmayin), yine cözülür
    2- yaptiginiz exe bir proxy gibi davraniyor ama lisans kontrolü basit bir if-else ile yapilmis
    3- lisansi olan biri, dosyayi kendi bilgisayarina indiriyor (kurulum_otomasyon.zip), adam alir bu dosyayi internete koyar, o zaman da bu lisans programi da bi halta yaramaz.
    4- else koydugun hata bile yanlis, o hatanin downloadfile kismda try-catch de olmasi lazim, else'deki hata,girilen key'in yanlis oldugu ile ilgili olmasi lazim,baglanti ile bir ilgisi yok

    kisacasi, orta düzey bir .net yazilimcisi bu mantigin hic bir ise yaramayacagini bilir. Emeginize saygi duyuyorum ama ilk mesajinizda sanki cok saglam bir yolmus gibi sunmaniz yanlis. Aksine benim gördügüm en gereksiz, en basit koruma yöntemi.

    Yazdiklarimi sahsiniza yönelik bir elestiri olarak almak yerine, kendinizi gelistirmeye vakit harcayarak daha profesyonel lisanslama sistemleri gelistirin. @oguzhane; nin dedigi gibi sunucu tarafli olmali. Ki bu da yetmez, anahtar-kilit seklinde olmali. Yani gelen bilgi (anahtar), o kilidi acabilecek ve o kilit acilmadan programin calismasi mümkün olmayacak sekilde olmali. Cok degisik türlerde koruma saglanabilir. Mesela bizim mobile projemiz (xamarin)'de obfuscation bile yok.. Kodlarini okumak isteyen adam istedigi gibi okusun. Ama lisans kontrolünü gecmesi mümkün degil. Lisans bilgileri olmadan da program user ya da factory modda calismaz cünkü oradan gelen bilgilere ihtiyaci var. Bir nevi kod tamamlama diyelim.
    Aklınızda varsa bir örnek buyurun sahne sizin
  • 12-01-2020, 15:07:39
    #9
    Var elbette ancak ticari ürünler paylaşılmaz. Zaten mesajımda az çok fikir verdim. Tek bir yolu yok birden fazla şekilde yapılabilir. Mesela jwt kullanılabilir, role Based olabilir, lisansı uzaktan iptal etme olabilir, aynı anda sadece tek bir lisansın aktif edilip çalışması olabilir Vs vs. Bizim lisans sistemimiz esnek ve kompleks. Ancak bunu paylaşmam mümkün değil. Ama fikir verebilirim.

    Bu konuda ciddi bir şeyler yapmanızı ben de şiddetle öneririm.. kendi lisans sisteminizi yaratıp burada daha güzel bir makale yazıp anlatmanız hoş olur..