Tekil Bilgisayar Id’si Üretme

Aşağıdaki metot yardımı ile tekil bilgisayar id’si üretip, bunu bilgisayarı tanımlamak için kullanabiliriz. Aşağıdaki kod işlemci, anakart ve sabit disk üzerinden id’yi oluşturmaktadır. Bu numaraları birleştirip SHA-512 hashini hesaplıyoruz ve bu şekilde oluşan id’nin her zaman 128 karakter olmasını garantilemiş oluyoruz. Donanım numaralarını basit bir şekilde birleştirmek yerine byte[] dönüşümü yapıp, toplama, and, or, xor, bit kaydırma gibi daha karmaşık yöntemler kullanılırsa güvenlik daha da artacaktır.

public static string GenerateHardwareId()
{
     // gets processor id
     string pId = "";
     var mos = new ManagementObjectSearcher("select * from Win32_Processor");

     foreach (ManagementObject m in mos.Get())
     {
         pId = m["ProcessorId"].ToString();
         break;
     }

     // gets motherboard id
     string mbId = "";
     mos = new ManagementObjectSearcher("select * from Win32_BaseBoard");

     foreach (ManagementObject m in mos.Get())
     {
         mbId = m["SerialNumber"].ToString();
         break;
     }

     // gets logical disk volume serial number
     string ldvSerialNumber = "";
     mos = new ManagementObjectSearcher("select * from Win32_LogicalDisk");

     foreach (ManagementObject m in mos.Get())
     {
         if (m["DeviceID"].ToString() == "C:")
         {
             ldvSerialNumber = m["VolumeSerialNumber"].ToString();
             break;
         }
     }

     var hwIdJoined = ldvSerialNumber + pId + mbId;

     byte[] hash = new SHA512Managed().ComputeHash(Encoding.UTF8.GetBytes(hwIdJoined));

     return BitConverter.ToString(hash).Replace("-", "").ToLower();      
}

Leave a Reply

Your email address will not be published. Required fields are marked *