C# dilinde bir HWID lisans sistemi için temel kodlar ve bazı güvenlik önlemleri hakkında bilgiler!

re work
Süper Üye
Katılım
31 Ocak 2016
Mesajlar
951
Çözümler
8
Tepki puanı
435
Ödüller
8
C# dilinde bir HWID lisans sistemi için temel bir kod örneği sunabilirim. Ancak, bir HWID lisans sistemi geliştirmek karmaşık bir süreçtir ve güvenliği sağlamak için daha fazla adım ve önlem gerektirir. Aşağıda basit bir örnek bulunmaktadır:
C#:
using System;
using System.Management;
using System.Security.Cryptography;
using System.Text;

public class HwidLicenseSystem
{
    private static string GenerateHwid()
    {
        string hwid = string.Empty;
        using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"))
        {
            foreach (ManagementObject obj in searcher.Get())
            {
                hwid = obj["ProcessorId"].ToString();
                break;
            }
        }
        return hwid;
    }

    private static string ComputeHash(string input)
    {
        using (SHA256 sha256 = SHA256.Create())
        {
            byte[] bytes = Encoding.UTF8.GetBytes(input);
            byte[] hash = sha256.ComputeHash(bytes);
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < hash.Length; i++)
            {
                builder.Append(hash[i].ToString("x2"));
            }
            return builder.ToString();
        }
    }

    public static bool ValidateLicense(string licenseKey, string expectedHwid)
    {
        string actualHwid = GenerateHwid();
        string hashedHwid = ComputeHash(actualHwid);
        
        return hashedHwid.Equals(expectedHwid, StringComparison.OrdinalIgnoreCase)
               && IsValidLicenseKey(licenseKey);
    }

    private static bool IsValidLicenseKey(string licenseKey)
    {
        // Burada lisans anahtarının geçerliliğini kontrol etmek için özel mantığınızı uygulayabilirsiniz.
        // Örneğin, veritabanında kayıtlı lisans anahtarlarını kontrol edebilirsiniz.
        // Bu örnekte, lisans anahtarının boş olmadığını kontrol ediyoruz.
        return !string.IsNullOrEmpty(licenseKey);
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        string expectedHwid = "hashlenmiş_hwid"; // Lisansın geçerli olması için beklenen HWID
        string licenseKey = "lisans_anahtarı"; // Kullanıcının girdiği lisans anahtarı

        bool isValidLicense = HwidLicenseSystem.ValidateLicense(licenseKey, expectedHwid);

        if (isValidLicense)
        {
            Console.WriteLine("Lisans geçerlidir. Oyunu oynayabilirsiniz.");
        }
        else
        {
            Console.WriteLine("Lisans geçersizdir. Oyunu başlatamazsınız.");
        }

        Console.ReadLine();
    }
}

Bu örnek, GenerateHwid yöntemiyle bir donanım kimlik bilgisi (HWID) oluşturur. Ardından, ComputeHash yöntemiyle bu HWID'nin karma değerini hesaplar. ValidateLicense yöntemi, kullanıcının girdiği lisans anahtarını ve beklenen HWID'yi kontrol ederek lisansın geçerliliğini doğrular.

Bu sadece basit bir örnektir ve gerçek bir lisans sistemi için daha fazla güvenlik önlemi almanız gerekebilir!
HWID lisans sistemi için daha fazla güvenlik önlemi almak isterseniz aşağıdaki önerileri dikkate alabilirsiniz:


  1. Lisans Anahtarının Şifrelenmesi: Lisans anahtarlarını şifreleyerek daha güvenli bir şekilde saklayabilirsiniz. Örneğin, simetrik veya asimetrik şifreleme algoritmalarını kullanarak anahtarları şifreleyebilirsiniz.
  2. Lisans Anahtarlarının Süresi ve Kullanımı: Lisans anahtarlarının süresini ve kullanım sayısını sınırlayarak kötüye kullanımı önleyebilirsiniz. Her lisans anahtarı için belirli bir süre veya kullanım sınırı belirleyebilir ve bunları takip edebilirsiniz.
  3. Lisans Anahtarlarının Merkezi Yönetimi: Lisans anahtarlarını merkezi bir sunucuda veya veritabanında yönetmek, daha iyi bir kontrol sağlar. Bu şekilde, lisans anahtarlarını izleyebilir, geçersiz anahtarları devre dışı bırakabilir ve lisansları yönetebilirsiniz.
  4. Lisans Anahtarlarının Bağlantı Güvenliği: Lisans anahtarlarının iletişimi sırasında güvenli bir bağlantı protokolü kullanmak önemlidir. Veri iletimini şifrelemek için SSL/TLS protokollerini kullanabilirsiniz.
  5. HWID Yanıltma Önlemleri: Kötü niyetli kullanıcıların HWID yanıltma veya değiştirme girişimlerini tespit etmek için çeşitli önlemler alabilirsiniz. Örneğin, HWID'yi farklı bileşenlerin bir kombinasyonuyla hesaplayabilir ve bunları izleyebilirsiniz.
  6. Lisans Doğrulama Sıklığı: Lisans doğrulama işlemini ne sıklıkla yapacağınıza karar verin. Sık sık doğrulama yapmak, kullanıcı deneyimini olumsuz etkileyebilir, ancak daha sıkı güvenlik sağlar. Öte yandan, daha seyrek doğrulama yapmak, kullanıcıları daha rahatlatır, ancak riskleri artırabilir.
Bu öneriler, HWID lisans sisteminizin güvenliğini artırmak için başlangıç noktası olabilir. Ancak, unutmayın ki tam anlamıyla güvenli bir lisans sistemi oluşturmak için daha fazla araştırma, test ve özelleştirme yapmanız gerekebilir.
İşte C# dilinde HWID lisans sisteminde bazı güvenlik önlemlerini uygulamanıza yardımcı olacak kod örnekleri:

  1. Lisans Anahtarının Şifrelenmesi:

C#:
private static string EncryptLicenseKey(string licenseKey, string encryptionKey)
{
    byte[] licenseBytes = Encoding.UTF8.GetBytes(licenseKey);
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = Encoding.UTF8.GetBytes(encryptionKey);
        aesAlg.Mode = CipherMode.CBC;
        aesAlg.Padding = PaddingMode.PKCS7;
        
        ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
        using (MemoryStream msEncrypt = new MemoryStream())
        {
            msEncrypt.Write(aesAlg.IV, 0, aesAlg.IV.Length);
            using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
            {
                csEncrypt.Write(licenseBytes, 0, licenseBytes.Length);
                csEncrypt.FlushFinalBlock();
            }
            byte[] encryptedBytes = msEncrypt.ToArray();
            return Convert.ToBase64String(encryptedBytes);
        }
    }
}

private static string DecryptLicenseKey(string encryptedLicense, string encryptionKey)
{
    byte[] encryptedBytes = Convert.FromBase64String(encryptedLicense);
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = Encoding.UTF8.GetBytes(encryptionKey);
        aesAlg.Mode = CipherMode.CBC;
        aesAlg.Padding = PaddingMode.PKCS7;
        
        byte[] iv = new byte[aesAlg.IV.Length];
        Array.Copy(encryptedBytes, iv, iv.Length);
        aesAlg.IV = iv;
        
        ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
        using (MemoryStream msDecrypt = new MemoryStream())
        {
            using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Write))
            {
                csDecrypt.Write(encryptedBytes, iv.Length, encryptedBytes.Length - iv.Length);
                csDecrypt.FlushFinalBlock();
            }
            byte[] decryptedBytes = msDecrypt.ToArray();
            return Encoding.UTF8.GetString(decryptedBytes);
        }
    }
}

  1. Lisans Anahtarlarının Süresi ve Kullanımı:
C#:
private static bool IsLicenseKeyExpired(string licenseKey, DateTime expirationDate)
{
    DateTime currentDate = DateTime.Now;
    return currentDate > expirationDate;
}

private static bool IsLicenseKeyUsageExceeded(string licenseKey, int maxUsage)
{
    // Lisans kullanımını takip etmek için özel bir mekanizma kullanmanız gerekebilir.
    // Örneğin, lisansı veritabanında izleyebilir ve kullanımları kaydedebilirsiniz.
    int currentUsage = GetLicenseKeyUsage(licenseKey); // Lisans anahtarının geçerli kullanım sayısını alır
    return currentUsage >= maxUsage;
}

  1. Lisans Anahtarlarının Merkezi Yönetimi:
C#:
private static bool ValidateLicenseKey(string licenseKey)
{
    // Lisans anahtarının veritabanında kayıtlı olup olmadığını kontrol edebilirsiniz.
    // Örneğin, veritabanında lisans anahtarlarını saklayan bir tablo oluşturabilir ve buradan kontrol yapabilirsiniz.


Aşağıda verdiğim örnekte HWID lisans sistemi için uygun bir MySQL veritabanı tablosunun örneğini bulabilirsiniz:
C#:
CREATE TABLE LicenseKeys (
    id INT AUTO_INCREMENT PRIMARY KEY,
    licenseKey VARCHAR(255) NOT NULL,
    hwid VARCHAR(255) NOT NULL,
    expirationDate DATETIME NOT NULL,
    maxUsage INT NOT NULL,
    currentUsage INT NOT NULL,
    createdAt DATETIME DEFAULT CURRENT_TIMESTAMP,
    updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Bu tablo, "LicenseKeys" adıyla bir lisans anahtarlarını saklamak için kullanılabilir. Tablo, aşağıdaki sütunlardan oluşur:

  • id: Lisans anahtarının benzersiz bir kimliğini temsil eden otomatik artan bir sayı.
  • licenseKey: Şifrelenmiş lisans anahtarını saklamak için kullanılan bir alan.
  • hwid: HWID (donanım kimlik) değerini saklamak için kullanılan bir alan.
  • expirationDate: Lisansın geçerlilik süresini temsil eden bir tarih/saat değeri.
  • maxUsage: Lisansın izin verilen maksimum kullanım sayısını temsil eden bir tamsayı.
  • currentUsage: Lisansın şu ana kadar kullanım sayısını temsil eden bir tamsayı.
  • createdAt: Kaydın oluşturulduğu tarih/saat değeri.
  • updatedAt: Kaydın son güncellendiği tarih/saat değeri.
Bu tablo, lisans anahtarlarını saklamak ve ilişkili verileri takip etmek için bir temel sağlar. Elbette, gerçek bir uygulama için gereksinimlerinize ve tasarım tercihlerinize göre tabloyu özelleştirebilirsiniz.
 
aka panic.rs
Kurucu
Katılım
18 Haz 2015
Mesajlar
3,318
Çözümler
46
Tepki puanı
10,009
Ödüller
19
Sosyal
güzel konu ancak c# ile yapılan bir lisans sisteminin güvenli olması zor.
 
Tutti mi chiedono perché ho imparato questa lingua
Süper Üye
Katılım
17 Mar 2016
Mesajlar
605
Çözümler
5
Tepki puanı
106
Ödüller
9
Sen ne kadar hashlarsan hashla program cracklendigi zaman sifreyi görüp hashi geri çözer hwidi öğrenir zaten program cracklendigi zaman hwide de gerek yok 😅
 
Onaylı Üye
Katılım
16 Haz 2021
Mesajlar
52
Tepki puanı
3
Ödüller
2
Yaş
32
Boşuna uğraşma program cracklendigi zaman sifreyi çözer
 
Onaylı Üye
Katılım
27 May 2019
Mesajlar
53
Çözümler
1
Tepki puanı
1
Ödüller
4
Yaş
23
C# dilinde bir HWID lisans sistemi için temel bir kod örneği sunabilirim. Ancak, bir HWID lisans sistemi geliştirmek karmaşık bir süreçtir ve güvenliği sağlamak için daha fazla adım ve önlem gerektirir. Aşağıda basit bir örnek bulunmaktadır:
C#:
using System;
using System.Management;
using System.Security.Cryptography;
using System.Text;

public class HwidLicenseSystem
{
    private static string GenerateHwid()
    {
        string hwid = string.Empty;
        using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"))
        {
            foreach (ManagementObject obj in searcher.Get())
            {
                hwid = obj["ProcessorId"].ToString();
                break;
            }
        }
        return hwid;
    }

    private static string ComputeHash(string input)
    {
        using (SHA256 sha256 = SHA256.Create())
        {
            byte[] bytes = Encoding.UTF8.GetBytes(input);
            byte[] hash = sha256.ComputeHash(bytes);
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < hash.Length; i++)
            {
                builder.Append(hash[i].ToString("x2"));
            }
            return builder.ToString();
        }
    }

    public static bool ValidateLicense(string licenseKey, string expectedHwid)
    {
        string actualHwid = GenerateHwid();
        string hashedHwid = ComputeHash(actualHwid);
       
        return hashedHwid.Equals(expectedHwid, StringComparison.OrdinalIgnoreCase)
               && IsValidLicenseKey(licenseKey);
    }

    private static bool IsValidLicenseKey(string licenseKey)
    {
        // Burada lisans anahtarının geçerliliğini kontrol etmek için özel mantığınızı uygulayabilirsiniz.
        // Örneğin, veritabanında kayıtlı lisans anahtarlarını kontrol edebilirsiniz.
        // Bu örnekte, lisans anahtarının boş olmadığını kontrol ediyoruz.
        return !string.IsNullOrEmpty(licenseKey);
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        string expectedHwid = "hashlenmiş_hwid"; // Lisansın geçerli olması için beklenen HWID
        string licenseKey = "lisans_anahtarı"; // Kullanıcının girdiği lisans anahtarı

        bool isValidLicense = HwidLicenseSystem.ValidateLicense(licenseKey, expectedHwid);

        if (isValidLicense)
        {
            Console.WriteLine("Lisans geçerlidir. Oyunu oynayabilirsiniz.");
        }
        else
        {
            Console.WriteLine("Lisans geçersizdir. Oyunu başlatamazsınız.");
        }

        Console.ReadLine();
    }
}

Bu örnek, GenerateHwid yöntemiyle bir donanım kimlik bilgisi (HWID) oluşturur. Ardından, ComputeHash yöntemiyle bu HWID'nin karma değerini hesaplar. ValidateLicense yöntemi, kullanıcının girdiği lisans anahtarını ve beklenen HWID'yi kontrol ederek lisansın geçerliliğini doğrular.

Bu sadece basit bir örnektir ve gerçek bir lisans sistemi için daha fazla güvenlik önlemi almanız gerekebilir!
HWID lisans sistemi için daha fazla güvenlik önlemi almak isterseniz aşağıdaki önerileri dikkate alabilirsiniz:


  1. Lisans Anahtarının Şifrelenmesi: Lisans anahtarlarını şifreleyerek daha güvenli bir şekilde saklayabilirsiniz. Örneğin, simetrik veya asimetrik şifreleme algoritmalarını kullanarak anahtarları şifreleyebilirsiniz.
  2. Lisans Anahtarlarının Süresi ve Kullanımı: Lisans anahtarlarının süresini ve kullanım sayısını sınırlayarak kötüye kullanımı önleyebilirsiniz. Her lisans anahtarı için belirli bir süre veya kullanım sınırı belirleyebilir ve bunları takip edebilirsiniz.
  3. Lisans Anahtarlarının Merkezi Yönetimi: Lisans anahtarlarını merkezi bir sunucuda veya veritabanında yönetmek, daha iyi bir kontrol sağlar. Bu şekilde, lisans anahtarlarını izleyebilir, geçersiz anahtarları devre dışı bırakabilir ve lisansları yönetebilirsiniz.
  4. Lisans Anahtarlarının Bağlantı Güvenliği: Lisans anahtarlarının iletişimi sırasında güvenli bir bağlantı protokolü kullanmak önemlidir. Veri iletimini şifrelemek için SSL/TLS protokollerini kullanabilirsiniz.
  5. HWID Yanıltma Önlemleri: Kötü niyetli kullanıcıların HWID yanıltma veya değiştirme girişimlerini tespit etmek için çeşitli önlemler alabilirsiniz. Örneğin, HWID'yi farklı bileşenlerin bir kombinasyonuyla hesaplayabilir ve bunları izleyebilirsiniz.
  6. Lisans Doğrulama Sıklığı: Lisans doğrulama işlemini ne sıklıkla yapacağınıza karar verin. Sık sık doğrulama yapmak, kullanıcı deneyimini olumsuz etkileyebilir, ancak daha sıkı güvenlik sağlar. Öte yandan, daha seyrek doğrulama yapmak, kullanıcıları daha rahatlatır, ancak riskleri artırabilir.
Bu öneriler, HWID lisans sisteminizin güvenliğini artırmak için başlangıç noktası olabilir. Ancak, unutmayın ki tam anlamıyla güvenli bir lisans sistemi oluşturmak için daha fazla araştırma, test ve özelleştirme yapmanız gerekebilir.
İşte C# dilinde HWID lisans sisteminde bazı güvenlik önlemlerini uygulamanıza yardımcı olacak kod örnekleri:

  1. Lisans Anahtarının Şifrelenmesi:

C#:
private static string EncryptLicenseKey(string licenseKey, string encryptionKey)
{
    byte[] licenseBytes = Encoding.UTF8.GetBytes(licenseKey);
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = Encoding.UTF8.GetBytes(encryptionKey);
        aesAlg.Mode = CipherMode.CBC;
        aesAlg.Padding = PaddingMode.PKCS7;
       
        ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
        using (MemoryStream msEncrypt = new MemoryStream())
        {
            msEncrypt.Write(aesAlg.IV, 0, aesAlg.IV.Length);
            using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
            {
                csEncrypt.Write(licenseBytes, 0, licenseBytes.Length);
                csEncrypt.FlushFinalBlock();
            }
            byte[] encryptedBytes = msEncrypt.ToArray();
            return Convert.ToBase64String(encryptedBytes);
        }
    }
}

private static string DecryptLicenseKey(string encryptedLicense, string encryptionKey)
{
    byte[] encryptedBytes = Convert.FromBase64String(encryptedLicense);
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = Encoding.UTF8.GetBytes(encryptionKey);
        aesAlg.Mode = CipherMode.CBC;
        aesAlg.Padding = PaddingMode.PKCS7;
       
        byte[] iv = new byte[aesAlg.IV.Length];
        Array.Copy(encryptedBytes, iv, iv.Length);
        aesAlg.IV = iv;
       
        ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
        using (MemoryStream msDecrypt = new MemoryStream())
        {
            using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Write))
            {
                csDecrypt.Write(encryptedBytes, iv.Length, encryptedBytes.Length - iv.Length);
                csDecrypt.FlushFinalBlock();
            }
            byte[] decryptedBytes = msDecrypt.ToArray();
            return Encoding.UTF8.GetString(decryptedBytes);
        }
    }
}

  1. Lisans Anahtarlarının Süresi ve Kullanımı:
C#:
private static bool IsLicenseKeyExpired(string licenseKey, DateTime expirationDate)
{
    DateTime currentDate = DateTime.Now;
    return currentDate > expirationDate;
}

private static bool IsLicenseKeyUsageExceeded(string licenseKey, int maxUsage)
{
    // Lisans kullanımını takip etmek için özel bir mekanizma kullanmanız gerekebilir.
    // Örneğin, lisansı veritabanında izleyebilir ve kullanımları kaydedebilirsiniz.
    int currentUsage = GetLicenseKeyUsage(licenseKey); // Lisans anahtarının geçerli kullanım sayısını alır
    return currentUsage >= maxUsage;
}

  1. Lisans Anahtarlarının Merkezi Yönetimi:
C#:
private static bool ValidateLicenseKey(string licenseKey)
{
    // Lisans anahtarının veritabanında kayıtlı olup olmadığını kontrol edebilirsiniz.
    // Örneğin, veritabanında lisans anahtarlarını saklayan bir tablo oluşturabilir ve buradan kontrol yapabilirsiniz.


Aşağıda verdiğim örnekte HWID lisans sistemi için uygun bir MySQL veritabanı tablosunun örneğini bulabilirsiniz:
C#:
CREATE TABLE LicenseKeys (
    id INT AUTO_INCREMENT PRIMARY KEY,
    licenseKey VARCHAR(255) NOT NULL,
    hwid VARCHAR(255) NOT NULL,
    expirationDate DATETIME NOT NULL,
    maxUsage INT NOT NULL,
    currentUsage INT NOT NULL,
    createdAt DATETIME DEFAULT CURRENT_TIMESTAMP,
    updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Bu tablo, "LicenseKeys" adıyla bir lisans anahtarlarını saklamak için kullanılabilir. Tablo, aşağıdaki sütunlardan oluşur:

  • id: Lisans anahtarının benzersiz bir kimliğini temsil eden otomatik artan bir sayı.
  • licenseKey: Şifrelenmiş lisans anahtarını saklamak için kullanılan bir alan.
  • hwid: HWID (donanım kimlik) değerini saklamak için kullanılan bir alan.
  • expirationDate: Lisansın geçerlilik süresini temsil eden bir tarih/saat değeri.
  • maxUsage: Lisansın izin verilen maksimum kullanım sayısını temsil eden bir tamsayı.
  • currentUsage: Lisansın şu ana kadar kullanım sayısını temsil eden bir tamsayı.
  • createdAt: Kaydın oluşturulduğu tarih/saat değeri.
  • updatedAt: Kaydın son güncellendiği tarih/saat değeri.
Bu tablo, lisans anahtarlarını saklamak ve ilişkili verileri takip etmek için bir temel sağlar. Elbette, gerçek bir uygulama için gereksinimlerinize ve tasarım tercihlerinize göre tabloyu özelleştirebilirsiniz.
öğrenmek istiyorum ama çok zor gibi duruyor
 
Kernel Level F ing
Griffin Premium
Katılım
10 May 2016
Mesajlar
1,761
Çözümler
5
Tepki puanı
719
Ödüller
12
Yaş
23
Sosyal
Clientside yerine bu işi serverside yapmak daha iyi değil mi? Client sadece hash ve data bilgisini servere atıp server check bilgisini yapsa, ardından da güncel datayı (bu durumda hile) yi cliente gönderse client virtual olarak bunu yapsa? Kaldı ki zaten ordan da patlar C# ama burda bu muhabbete girmek de gereksiz C# güvensizse güvensiz amaç o değil. Eline sağlık ama bu kadar hashlemekten ziyada rsa mantığı ile public private olarak serverden kontrol sağlamak daha mantıklı değil mi? Tabi fazla hash asla üzmez ayrı konu Ayrıca processorid hariç çok daha datayı birleştirmek daha güzel olur. Tekrar eline sağlık.
 
bir ucaktik dustuk bir gemiydik battik
Efsane Üye
Katılım
21 Eyl 2019
Mesajlar
3,418
Çözümler
46
Tepki puanı
384
Ödüller
8
Sosyal
max 2 dkya geçilir :D eline sağlık yararlı konu
 
Ultra Üye
Katılım
16 May 2017
Mesajlar
1,921
Çözümler
4
Tepki puanı
504
Ödüller
8
Yaş
24
valla tebrikler ellerine saglik üsenmemis yapmissin yararli konu.
 
Süper Üye
Katılım
23 Nis 2019
Mesajlar
957
Çözümler
2
Tepki puanı
75
Ödüller
4
C# dilinde bir HWID lisans sistemi için temel bir kod örneği sunabilirim. Ancak, bir HWID lisans sistemi geliştirmek karmaşık bir süreçtir ve güvenliği sağlamak için daha fazla adım ve önlem gerektirir. Aşağıda basit bir örnek bulunmaktadır:
C#:
using System;
using System.Management;
using System.Security.Cryptography;
using System.Text;

public class HwidLicenseSystem
{
    private static string GenerateHwid()
    {
        string hwid = string.Empty;
        using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"))
        {
            foreach (ManagementObject obj in searcher.Get())
            {
                hwid = obj["ProcessorId"].ToString();
                break;
            }
        }
        return hwid;
    }

    private static string ComputeHash(string input)
    {
        using (SHA256 sha256 = SHA256.Create())
        {
            byte[] bytes = Encoding.UTF8.GetBytes(input);
            byte[] hash = sha256.ComputeHash(bytes);
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < hash.Length; i++)
            {
                builder.Append(hash[i].ToString("x2"));
            }
            return builder.ToString();
        }
    }

    public static bool ValidateLicense(string licenseKey, string expectedHwid)
    {
        string actualHwid = GenerateHwid();
        string hashedHwid = ComputeHash(actualHwid);
       
        return hashedHwid.Equals(expectedHwid, StringComparison.OrdinalIgnoreCase)
               && IsValidLicenseKey(licenseKey);
    }

    private static bool IsValidLicenseKey(string licenseKey)
    {
        // Burada lisans anahtarının geçerliliğini kontrol etmek için özel mantığınızı uygulayabilirsiniz.
        // Örneğin, veritabanında kayıtlı lisans anahtarlarını kontrol edebilirsiniz.
        // Bu örnekte, lisans anahtarının boş olmadığını kontrol ediyoruz.
        return !string.IsNullOrEmpty(licenseKey);
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        string expectedHwid = "hashlenmiş_hwid"; // Lisansın geçerli olması için beklenen HWID
        string licenseKey = "lisans_anahtarı"; // Kullanıcının girdiği lisans anahtarı

        bool isValidLicense = HwidLicenseSystem.ValidateLicense(licenseKey, expectedHwid);

        if (isValidLicense)
        {
            Console.WriteLine("Lisans geçerlidir. Oyunu oynayabilirsiniz.");
        }
        else
        {
            Console.WriteLine("Lisans geçersizdir. Oyunu başlatamazsınız.");
        }

        Console.ReadLine();
    }
}

Bu örnek, GenerateHwid yöntemiyle bir donanım kimlik bilgisi (HWID) oluşturur. Ardından, ComputeHash yöntemiyle bu HWID'nin karma değerini hesaplar. ValidateLicense yöntemi, kullanıcının girdiği lisans anahtarını ve beklenen HWID'yi kontrol ederek lisansın geçerliliğini doğrular.

Bu sadece basit bir örnektir ve gerçek bir lisans sistemi için daha fazla güvenlik önlemi almanız gerekebilir!
HWID lisans sistemi için daha fazla güvenlik önlemi almak isterseniz aşağıdaki önerileri dikkate alabilirsiniz:


  1. Lisans Anahtarının Şifrelenmesi: Lisans anahtarlarını şifreleyerek daha güvenli bir şekilde saklayabilirsiniz. Örneğin, simetrik veya asimetrik şifreleme algoritmalarını kullanarak anahtarları şifreleyebilirsiniz.
  2. Lisans Anahtarlarının Süresi ve Kullanımı: Lisans anahtarlarının süresini ve kullanım sayısını sınırlayarak kötüye kullanımı önleyebilirsiniz. Her lisans anahtarı için belirli bir süre veya kullanım sınırı belirleyebilir ve bunları takip edebilirsiniz.
  3. Lisans Anahtarlarının Merkezi Yönetimi: Lisans anahtarlarını merkezi bir sunucuda veya veritabanında yönetmek, daha iyi bir kontrol sağlar. Bu şekilde, lisans anahtarlarını izleyebilir, geçersiz anahtarları devre dışı bırakabilir ve lisansları yönetebilirsiniz.
  4. Lisans Anahtarlarının Bağlantı Güvenliği: Lisans anahtarlarının iletişimi sırasında güvenli bir bağlantı protokolü kullanmak önemlidir. Veri iletimini şifrelemek için SSL/TLS protokollerini kullanabilirsiniz.
  5. HWID Yanıltma Önlemleri: Kötü niyetli kullanıcıların HWID yanıltma veya değiştirme girişimlerini tespit etmek için çeşitli önlemler alabilirsiniz. Örneğin, HWID'yi farklı bileşenlerin bir kombinasyonuyla hesaplayabilir ve bunları izleyebilirsiniz.
  6. Lisans Doğrulama Sıklığı: Lisans doğrulama işlemini ne sıklıkla yapacağınıza karar verin. Sık sık doğrulama yapmak, kullanıcı deneyimini olumsuz etkileyebilir, ancak daha sıkı güvenlik sağlar. Öte yandan, daha seyrek doğrulama yapmak, kullanıcıları daha rahatlatır, ancak riskleri artırabilir.
Bu öneriler, HWID lisans sisteminizin güvenliğini artırmak için başlangıç noktası olabilir. Ancak, unutmayın ki tam anlamıyla güvenli bir lisans sistemi oluşturmak için daha fazla araştırma, test ve özelleştirme yapmanız gerekebilir.
İşte C# dilinde HWID lisans sisteminde bazı güvenlik önlemlerini uygulamanıza yardımcı olacak kod örnekleri:

  1. Lisans Anahtarının Şifrelenmesi:

C#:
private static string EncryptLicenseKey(string licenseKey, string encryptionKey)
{
    byte[] licenseBytes = Encoding.UTF8.GetBytes(licenseKey);
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = Encoding.UTF8.GetBytes(encryptionKey);
        aesAlg.Mode = CipherMode.CBC;
        aesAlg.Padding = PaddingMode.PKCS7;
       
        ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
        using (MemoryStream msEncrypt = new MemoryStream())
        {
            msEncrypt.Write(aesAlg.IV, 0, aesAlg.IV.Length);
            using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
            {
                csEncrypt.Write(licenseBytes, 0, licenseBytes.Length);
                csEncrypt.FlushFinalBlock();
            }
            byte[] encryptedBytes = msEncrypt.ToArray();
            return Convert.ToBase64String(encryptedBytes);
        }
    }
}

private static string DecryptLicenseKey(string encryptedLicense, string encryptionKey)
{
    byte[] encryptedBytes = Convert.FromBase64String(encryptedLicense);
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = Encoding.UTF8.GetBytes(encryptionKey);
        aesAlg.Mode = CipherMode.CBC;
        aesAlg.Padding = PaddingMode.PKCS7;
       
        byte[] iv = new byte[aesAlg.IV.Length];
        Array.Copy(encryptedBytes, iv, iv.Length);
        aesAlg.IV = iv;
       
        ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
        using (MemoryStream msDecrypt = new MemoryStream())
        {
            using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Write))
            {
                csDecrypt.Write(encryptedBytes, iv.Length, encryptedBytes.Length - iv.Length);
                csDecrypt.FlushFinalBlock();
            }
            byte[] decryptedBytes = msDecrypt.ToArray();
            return Encoding.UTF8.GetString(decryptedBytes);
        }
    }
}

  1. Lisans Anahtarlarının Süresi ve Kullanımı:
C#:
private static bool IsLicenseKeyExpired(string licenseKey, DateTime expirationDate)
{
    DateTime currentDate = DateTime.Now;
    return currentDate > expirationDate;
}

private static bool IsLicenseKeyUsageExceeded(string licenseKey, int maxUsage)
{
    // Lisans kullanımını takip etmek için özel bir mekanizma kullanmanız gerekebilir.
    // Örneğin, lisansı veritabanında izleyebilir ve kullanımları kaydedebilirsiniz.
    int currentUsage = GetLicenseKeyUsage(licenseKey); // Lisans anahtarının geçerli kullanım sayısını alır
    return currentUsage >= maxUsage;
}

  1. Lisans Anahtarlarının Merkezi Yönetimi:
C#:
private static bool ValidateLicenseKey(string licenseKey)
{
    // Lisans anahtarının veritabanında kayıtlı olup olmadığını kontrol edebilirsiniz.
    // Örneğin, veritabanında lisans anahtarlarını saklayan bir tablo oluşturabilir ve buradan kontrol yapabilirsiniz.


Aşağıda verdiğim örnekte HWID lisans sistemi için uygun bir MySQL veritabanı tablosunun örneğini bulabilirsiniz:
C#:
CREATE TABLE LicenseKeys (
    id INT AUTO_INCREMENT PRIMARY KEY,
    licenseKey VARCHAR(255) NOT NULL,
    hwid VARCHAR(255) NOT NULL,
    expirationDate DATETIME NOT NULL,
    maxUsage INT NOT NULL,
    currentUsage INT NOT NULL,
    createdAt DATETIME DEFAULT CURRENT_TIMESTAMP,
    updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Bu tablo, "LicenseKeys" adıyla bir lisans anahtarlarını saklamak için kullanılabilir. Tablo, aşağıdaki sütunlardan oluşur:

  • id: Lisans anahtarının benzersiz bir kimliğini temsil eden otomatik artan bir sayı.
  • licenseKey: Şifrelenmiş lisans anahtarını saklamak için kullanılan bir alan.
  • hwid: HWID (donanım kimlik) değerini saklamak için kullanılan bir alan.
  • expirationDate: Lisansın geçerlilik süresini temsil eden bir tarih/saat değeri.
  • maxUsage: Lisansın izin verilen maksimum kullanım sayısını temsil eden bir tamsayı.
  • currentUsage: Lisansın şu ana kadar kullanım sayısını temsil eden bir tamsayı.
  • createdAt: Kaydın oluşturulduğu tarih/saat değeri.
  • updatedAt: Kaydın son güncellendiği tarih/saat değeri.
Bu tablo, lisans anahtarlarını saklamak ve ilişkili verileri takip etmek için bir temel sağlar. Elbette, gerçek bir uygulama için gereksinimlerinize ve tasarım tercihlerinize göre tabloyu özelleştirebilirsiniz.
çok açıklayıcı olmuş fakat kolayca kırılabilir.
 
Üst
  AdBlock Detected
Elbette, reklam engelleme yazılımı, reklamları engelleme konusunda harika bir iş çıkarır, ancak aynı zamanda web sitemizin bazı yararlı ve önemli özelliklerini de engeller. Mümkün olan en iyi site deneyimi için lütfen bir dakikanızı ayırarak AdBlocker'ınızı devre dışı bırakın.