C# ile Lisanslama Aracı Geliştirmek

Home  >>  C#  >>  C# ile Lisanslama Aracı Geliştirmek

C# ile Lisanslama Aracı Geliştirmek

25
Eki,2014

0
 C#
Geliştirdiğimiz uygulamaları her zaman bir lisanslama, izinsiz kullanımları engelleme ihtiyacı duyarız. Bu hatta basit çaplı geliştirdiğimiz uygulama için bile bazen ihtiyacımız söz konusu olur. Genellikle yazılım firmaları, geliştiriciler kendi lisanslama algoritmaları oluşturur ya da 3.parti (TNTLicensing )gibi yazılımlar kullanma yoluna gider. Bizde şimdi kendi algoritmamızı oluşturarak, geliştirdiğimiz uygulamaları lisanslamak için bir araç geliştirelim. Kurgumuz, 13 haneden oluşan bir serimiz olduğu düşünelim, Serimizin ilk3 hanesi  (Yil + (Saniye * 12) + Ay) İkinci 3 hanesi  (Gün + (Saniye * 7)+ Saat) Üçüncü 3 hanesi  (Dakika + (Saniye * 19)+Saniye) serimizin son 4 hanesi de işlemcinin Id numarasından oluşsun. Bu sayede uygulamamız lisanslamadığı sürece her açıldığı farklı bir seri üretmiş olacağız. Şimdi aşağıdaki gibi form oluşturalım, Nesnelerimiz, btnSeriUret                        :Button btnAnahtarUrt                    :Button txtSeriUret                        :MaskedTexBox txtAnahtaUret                    :MaskedTexBox   Btn_SeriUret butonumuzda oluşturarak istediğimiz seriyi üretmek için kodlarımızı yazmaya başlayalım,

string cpuInfo = String.Empty;

string temp = String.Empty;

int sayiDeger = 1000;

// işlemcimizin Id içerisinde bulunan sadece sayısal değerleri alarak başlangıç değeri olarak atadığımız 1000 üzerine ekletiyoruz.

ManagementClass mc = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)

{

if (cpuInfo == String.Empty)

{

string deger = mo.Properties["ProcessorId"].Value.ToString();

for (int i = 0; i < deger.Length; i++)

{

if (Char.IsDigit(deger[i]))

{

sayiDeger += deger[i];

}

}

}

}

txtSeri.Text =

 

// 1 (Yil + (Saniye * 165) + Ay)

 

(Convert.ToInt32(DateTime.Now.Year)

<ul>
<li>Convert.ToInt32(DateTime.Now.Second * 12)</p></li>
<li><p>Convert.ToInt32(DateTime.Now.Month)).ToString().Substring(1, 3)</p></li>
</ul>

<p>&nbsp;

//2 (Gün + (Saniye * 896)+ Saat)

&nbsp;

<ul>
<li>(DateTime.Now.Day.ToString() + Convert.ToInt32(DateTime.Now.Second * 7)</p></li>
<li><p>DateTime.Now.Hour.ToString()).Substring(0, 3)</p></li>
</ul>

<p>&nbsp;

//3 (Dakika + (Saniye * 648)+Saniye)

&nbsp;

<ul>
<li>(DateTime.Now.Minute.ToString() + Convert.ToInt32(DateTime.Now.Second * 19)</p></li>
<li><p>DateTime.Now.Second.ToString()).Substring(0, 3)</p></li>
</ul>

<p>&nbsp;

//4  İşlemci Id

&nbsp;

<ul>
<li>sayiDeger.ToString().Substring(0, 4);</li>
</ul>

  Kabaca bir seri ürettiğimiz göre şimdi bu seriyi eşleyecek bir anahtar kontrolü yazmamız gerekecek,   12 haneli 4 gruplardan oluşan ve seri numarasından değerler alarak basitçe bir anahtar numarası üretelim.   BtnAnahtarUret butonumuz da, oluşturmak istediğimiz anahtar numaramızı üretmek için kodlarımızı yazalım.   // Daha rahat okumanız adına 12 tane değerleri tutması için string değişkenler tanımladım ve bu değişklerimizde kuracağımız formüllerin değerlerini atayacağız.

string _deger1 = null

, _deger2 = null

, _deger3 = null

, _deger4 = null

, _deger5 = null

, _deger6 = null

, _deger7 = null

, _deger8 = null

, _deger9 = null

, _deger10 = null

, _deger11 = null

, _deger12 = null;

&nbsp;

//  (Math.Abs((Seri10 - Seri1 + Seri5 +Seri4 + Seri7) * 19 * (seri8 + seri2))) % 10)

&nbsp;

_deger1 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(13, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(0, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(5, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(9, 1)))</p></li>
<li><p>19</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(1, 1)))) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//  (Math.Abs(( Seri10 + Seri11 – Seri12 + Seri8) - (Seri8 + (Seri5 + Seri3)))* 7) % 10)

_deger2 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(13, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(10, 1)))</p></li>
</ul>

<p>&nbsp;

-(Convert.ToInt16(txtSeri.Text.Substring(10, 1))

+(Convert.ToInt16(txtSeri.Text.Substring(6, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(2, 1))))*7) % 10).ToString();</li>
</ul>

_deger3 = (Math.Abs(
(Convert.ToInt16(txtSeri.Text.Substring(1, 1))
* Convert.ToInt16(txtSeri.Text.Substring(5, 1))
* Convert.ToInt16(txtSeri.Text.Substring(9, 1)))

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(2, 1))</li>
<li>(Convert.ToInt16(txtSeri.Text.Substring(6, 1))</li>
<li>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</li>
<li>Convert.ToInt16(txtSeri.Text.Substring(0, 1)))))* 6) % 10).ToString();</li>
</ul>

_deger4 = (Math.Abs(
(Convert.ToInt16(txtSeri.Text.Substring(12, 1))
- Convert.ToInt16(txtSeri.Text.Substring(0, 1))
+ Convert.ToInt16(txtSeri.Text.Substring(6, 1))
+ Convert.ToInt16(txtSeri.Text.Substring(5, 1))
+ Convert.ToInt16(txtSeri.Text.Substring(8, 1)))
- 19
- (Convert.ToInt16(txtSeri.Text.Substring(10, 1))
+ Convert.ToInt16(txtSeri.Text.Substring(1, 1)))) % 10).ToString();

&nbsp;

&nbsp;

//

_deger5 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(10, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(5, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(5, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(1, 1))) + 19) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

_deger6 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(1, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(9, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(2, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))) - 19) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

_deger7 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(12, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1)))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(13, 1))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(2, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))) * 6) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

_deger8 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(13, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(10, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(2, 1)))) * 19) % 10).ToString();</p></li>
</ul>

<p>//

_deger9 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(12, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(13, 1))</li>
</ul>

&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(2, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))) * 6) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

&nbsp;

//

_deger10 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(13, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(10, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(2, 1)))) * 7) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

&nbsp;

_deger11 = (Math.Abs(

(Convert.ToInt16(txtSeri.Text.Substring(6, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(9, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(1, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(9, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(9, 1))))))+4) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

_deger12 = (Math.Abs(

(Convert.ToInt16(txtSeri.Text.Substring(5, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(4, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(2, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(1, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1)))))) * 19) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

&nbsp;

//  Anahtar MaskedTexbox umuza değerlerimi atayalım.

&nbsp;

txtAnahtar.Text =  _deger1 + _deger2 + _deger3 + _deger4 + _deger5

<ul>
<li>_deger6 + _deger7 + _deger8 + _deger9 + _deger10</p></li>
<li><p>_deger11 + _deger12;</p></li>
</ul>

<p>
    Kabaca bir Lisanslama aracı geliştirmiş olduk şimdi de uygularımızda bu lisanslama aracını nasıl kullanabiliriz bir bakalım. İlk öncelikle geliştirmiş olduğumuz farklı bir uygulamamız çalışmadan önce lisanslama yapılıp yapılmadığı kontrol edelim. Bildiğiniz gibi projelerimizde program.cs dosyası çalıştırılma anında ilk çalışandır biz de burada daha formlarımız falan yüklemeden lisanslama işleminin yapılıp yapılmadığını bir kontrol edelim.   Bunun içinde uygulamızın properties.setting de Lisans adında özellik oluşturalım ve default değeri:0 olsun   1-Solution Projemizi seçelim 2- Project -> Properties –> Setting 3-Yeni bir row oluşturalım (Lisans) 4-Value = 0     Program.cs   // Lisanslamanın yapılıp yapılmadığını kontrol edelim.      

static void Main()

{

if (Properties.Settings.Default.Lisans == 0)

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form_Lisans());

}

else

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form_Login());

 

}

}

Lisanslama ekranı için sizde aşağıdaki gibi örnek bir form oluşturun ve daha önce yazdığımız kodlarımızı burada kullanın   Onay butonumuz da elde ettiğimiz anahtarımız ile Anahtar textbox girilen değeri kontrol edelim. Geçerli bir anahtar girilmiş ise Lisans value değerini = 1 yapalım.
if (txtAnahtar.Text == _Onay )
{
Properties.Settings.Default.Lisans = 1;
Properties.Settings.Default.Save();
MessageBox.Show("Lisanslama işlemi başarıyla gerçekleştirildi."
, "Bilgi"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1);
}
else
{
MessageBox.Show("Geçersiz bir Anahtar kodu girdiniz."
, "Bilgi"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1);
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir