Last active
December 16, 2015 02:19
-
-
Save kad1r/5361437 to your computer and use it in GitHub Desktop.
License for cpu Id, hdd Id, bios Id
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//CPU ID | |
string sQuery = "SELECT ProcessorId FROM Win32_Processor"; | |
ManagementObjectSearcher oManagementObjectSearcher = new ManagementObjectSearcher(sQuery); | |
ManagementObjectCollection oCollection = oManagementObjectSearcher.Get(); | |
foreach (ManagementObject oManagementObject in oCollection) | |
{ | |
sProcessorID = (string)oManagementObject["ProcessorId"]; | |
} | |
//HDD ID | |
ManagementObjectSearcher searcher = new | |
ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive"); | |
foreach(ManagementObject wmi_HD in searcher.Get()) | |
{ | |
HardDrive hd = new HardDrive(); | |
hd.Model = wmi_HD["Model"].ToString(); | |
hd.Type = wmi_HD["InterfaceType"].ToString(); | |
hdCollection.Add(hd); | |
} | |
//HDD SERI NO | |
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); | |
foreach(ManagementObject wmi_HD in searcher.Get()) | |
{ | |
HardDrive hd = (HardDrive)hdCollection[i]; | |
if (wmi_HD["SerialNumber"] == null) | |
hd.SerialNo = "None"; | |
else | |
hd.SerialNo = wmi_HD["SerialNumber"].ToString(); | |
} | |
//BIOS BILGILERI | |
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS"); | |
ManagementObjectCollection collection = searcher.Get(); | |
var items = new List<Win32_BIOS>(); | |
foreach (ManagementObject obj in collection) | |
{ | |
var item = new Win32_BIOS(); | |
item.BuildNumber = (string)obj["BuildNumber"]; | |
item.IdentificationCode = (string)obj["IdentificationCode"];; | |
item.SerialNumber = (string)obj["SerialNumber"]; | |
item.SoftwareElementID = (string)obj["SoftwareElementID"]; | |
items.Add(item); | |
} | |
/* ---------------------------------- */ | |
/// <summary> | |
/// Generates a 16 byte Unique Identification code of a computer | |
/// Example: 4876-8DB5-EE85-69D3-FE52-8CF7-395D-2EA9 | |
/// </summary> | |
public class Security | |
{ | |
private static string fingerPrint = string.Empty; | |
public static string Value() | |
{ | |
if (string.IsNullOrEmpty(fingerPrint)) | |
{ | |
fingerPrint = GetHash("CPU >> " + cpuId() + "\nBIOS >> " + biosId() + "\nBASE >> " + baseId() + videoId()); | |
//+ "\nMAC >> " + macId() | |
//+"\nDISK >> "+ diskId() + "\nVIDEO >> " + | |
} | |
return fingerPrint; | |
} | |
private static string GetHash(string s) | |
{ | |
MD5 sec = new MD5CryptoServiceProvider(); | |
ASCIIEncoding enc = new ASCIIEncoding(); | |
byte[] bt = enc.GetBytes(s); | |
return GetHexString(sec.ComputeHash(bt)); | |
} | |
private static string GetHexString(byte[] bt) | |
{ | |
string s = string.Empty; | |
for (int i = 0; i < bt.Length; i++) | |
{ | |
byte b = bt[i]; | |
int n, n1, n2; | |
n = (int)b; | |
n1 = n & 15; | |
n2 = (n >> 4) & 15; | |
if (n2 > 9) | |
s += ((char)(n2 - 10 + (int)'A')).ToString(); | |
else | |
s += n2.ToString(); | |
if (n1 > 9) | |
s += ((char)(n1 - 10 + (int)'A')).ToString(); | |
else | |
s += n1.ToString(); | |
if ((i + 1) != bt.Length && (i + 1) % 2 == 0) s += "-"; | |
} | |
return s; | |
} | |
#region Original Device ID Getting Code | |
//Return a hardware identifier | |
private static string identifier | |
(string wmiClass, string wmiProperty, string wmiMustBeTrue) | |
{ | |
string result = ""; | |
System.Management.ManagementClass mc = | |
new System.Management.ManagementClass(wmiClass); | |
System.Management.ManagementObjectCollection moc = mc.GetInstances(); | |
foreach (System.Management.ManagementObject mo in moc) | |
{ | |
if (mo[wmiMustBeTrue].ToString() == "True") | |
{ | |
//Only get the first one | |
if (result == "") | |
{ | |
try | |
{ | |
result = mo[wmiProperty].ToString(); | |
break; | |
} | |
catch | |
{ | |
} | |
} | |
} | |
} | |
return result; | |
} | |
//Return a hardware identifier | |
private static string identifier(string wmiClass, string wmiProperty) | |
{ | |
string result = ""; | |
System.Management.ManagementClass mc = | |
new System.Management.ManagementClass(wmiClass); | |
System.Management.ManagementObjectCollection moc = mc.GetInstances(); | |
foreach (System.Management.ManagementObject mo in moc) | |
{ | |
//Only get the first one | |
if (result == "") | |
{ | |
try | |
{ | |
result = mo[wmiProperty].ToString(); | |
break; | |
} | |
catch | |
{ | |
} | |
} | |
} | |
return result; | |
} | |
private static string cpuId() | |
{ | |
//Uses first CPU identifier available in order of preference | |
//Don't get all identifiers, as it is very time consuming | |
string retVal = identifier("Win32_Processor", "UniqueId"); | |
if (retVal == "") //If no UniqueID, use ProcessorID | |
{ | |
retVal = identifier("Win32_Processor", "ProcessorId"); | |
if (retVal == "") //If no ProcessorId, use Name | |
{ | |
retVal = identifier("Win32_Processor", "Name"); | |
if (retVal == "") //If no Name, use Manufacturer | |
{ | |
retVal = identifier("Win32_Processor", "Manufacturer"); | |
} | |
//Add clock speed for extra security | |
retVal += identifier("Win32_Processor", "MaxClockSpeed"); | |
} | |
} | |
return retVal; | |
} | |
//BIOS Identifier | |
private static string biosId() | |
{ | |
return identifier("Win32_BIOS", "Manufacturer") | |
+ identifier("Win32_BIOS", "SMBIOSBIOSVersion") | |
+ identifier("Win32_BIOS", "IdentificationCode") | |
+ identifier("Win32_BIOS", "SerialNumber") | |
+ identifier("Win32_BIOS", "ReleaseDate") | |
+ identifier("Win32_BIOS", "Version"); | |
} | |
//Main physical hard drive ID | |
private static string diskId() | |
{ | |
return identifier("Win32_DiskDrive", "Model") | |
+ identifier("Win32_DiskDrive", "Manufacturer") | |
+ identifier("Win32_DiskDrive", "Signature") | |
+ identifier("Win32_DiskDrive", "TotalHeads"); | |
} | |
//Motherboard ID | |
private static string baseId() | |
{ | |
return identifier("Win32_BaseBoard", "Model") | |
+ identifier("Win32_BaseBoard", "Manufacturer") | |
+ identifier("Win32_BaseBoard", "Name") | |
+ identifier("Win32_BaseBoard", "SerialNumber"); | |
} | |
//Primary video controller ID | |
private static string videoId() | |
{ | |
return identifier("Win32_VideoController", "DriverVersion") | |
+ identifier("Win32_VideoController", "Name"); | |
} | |
//First enabled network card ID | |
private static string macId() | |
{ | |
return identifier("Win32_NetworkAdapterConfiguration", | |
"MACAddress", "IPEnabled"); | |
} | |
#endregion | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment