using Microsoft.Win32; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Management; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace SmartScanner { class LBProtect { //私钥 private static readonly string privateKey = "zM7HeOAK8nORTQ56zl4IInkg7Y5k3Zf2FtXaHwu4nSCJOdWmABnbIbTlIt9y9gmLnDHG0maUXlaxZrbUGeAScrmI6kD4qlDypf9qKO7iB5K9xf0MD7ecioeljLXJtG8ahPo6pqiyg9Sx0Czue2pg672ssPtbGL81iFrgwy+Zgok=AQAB

zUb5vO3p4iqncynb+WGVyO1d73M/bXrqLG7cCaZN4gk7XxeWWyfIk2flCCI2veAdp4MKpdG3j4W+Y7+8xq5fzw==

/2oalvvC/i1YtJNGCZk4+k83asfBZZpElTp/t+U4FC8vGGKE8slfBzflSps8PTJ67/MKZ8sgD0pW9Vp2e4j2Jw==sU5v4edh0C9liUyLq2DFvtKAA5Z5H7g+UnjC6DbUKLwuoxk9jqjTT7c6lYbv35uYIZtHdCirs3UjGQeBJ99v8w==taKxEhosSzHYWWI6dmz+dhOLp2YzBJw2laEqXo6l2MTNSxwUy8ukxq9bYjkPF74kayt9hN6RCA6n1Ifmpmd6FQ==AxT3HFNQY9mBI/fe68ACR56ARDIUCXb62REnjbJDA0/7Ti/n5NN+yaELwVDZpw2LVlqePyYdmMJgUAJGBjHl4A==YtiRsScAYY+hWv1YC+2aI3kuiTimOcSzwsWnpkAz87HWSRFyMq5H8nap+DC7/T8SIGptuPJFPVq9+ALZTzuz6siESv1EtND58nyrR6HnUKXlhiGuoG9vXL2rP71BnZA+H+lnIFrG48orFKP/8kA2Hy9cP9l4b1pBXEZJHQHG1hk=
"; private static readonly RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider(); // 解密 public static string RsaDecrypt(string textRsa) { cryptoServiceProvider.FromXmlString(privateKey); byte[] inputBytes = Convert.FromBase64String(textRsa); byte[] decryptedBytes = cryptoServiceProvider.Decrypt(inputBytes, false); return Encoding.UTF8.GetString(decryptedBytes); } // 获取硬件指纹 public static string GetHardwareFingerprint() { StringBuilder sb = new StringBuilder(); // CPU ID sb.Append(GetWmiInfo("Win32_Processor", "ProcessorId")); // 主板序列号 sb.Append(GetWmiInfo("Win32_BaseBoard", "SerialNumber")); // 主硬盘序列号 sb.Append(GetFixedDiskSerialNumber()); // 计算SHA256哈希 using (SHA256 sha256 = SHA256.Create()) { byte[] hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString())); return BitConverter.ToString(hash).Replace("-", "").Substring(0, 16); } } private static string GetWmiInfo(string className, string propertyName) { try { using (ManagementClass mc = new ManagementClass(className)) using (ManagementObjectCollection moc = mc.GetInstances()) { foreach (ManagementObject mo in moc) { return mo[propertyName]?.ToString() ?? string.Empty; } } } catch { } return string.Empty; } // 验证硬件指纹 public static bool ValidateFingerprint() { string sRsaVal = ""; string currentConfigDirectory = Directory.GetCurrentDirectory() + "\\config"; string currentFingerprint = GetHardwareFingerprint(); try { if (!Directory.Exists(currentConfigDirectory)) Directory.CreateDirectory(currentConfigDirectory); string sRsa = File.ReadAllText(currentConfigDirectory + "\\" + currentFingerprint + ".lic"); sRsaVal = RsaDecrypt(sRsa); } catch { } bool bSame = true; if (currentFingerprint != sRsaVal) { bSame = false; File.WriteAllText(currentConfigDirectory + "\\MachineId.txt", currentFingerprint); } return bSame; } // 获取固定硬盘序列号(排除可移动设备) private static string GetFixedDiskSerialNumber() { try { // 查找固定硬盘 using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT SerialNumber, MediaType FROM Win32_DiskDrive WHERE MediaType = 'Fixed hard disk media'")) using (ManagementObjectCollection moc = searcher.Get()) { foreach (ManagementObject mo in moc) { string serialNumber = mo["SerialNumber"]?.ToString()?.Trim() ?? string.Empty; if (!string.IsNullOrEmpty(serialNumber)) return serialNumber; } } // 查找非USB接口的设备 using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT SerialNumber, InterfaceType FROM Win32_DiskDrive WHERE InterfaceType != 'USB'")) using (ManagementObjectCollection moc = searcher.Get()) { foreach (ManagementObject mo in moc) { string serialNumber = mo["SerialNumber"]?.ToString()?.Trim() ?? string.Empty; if (!string.IsNullOrEmpty(serialNumber)) return serialNumber; } } } catch { } return string.Empty; } } }