c#生成注冊碼

cymt 9年前發布 | 2K 次閱讀 C#

using System;
using System.Management;
using System.Security.Cryptography;
using System.IO;
using System.Collections.Generic;
using System.Text;

namespace xingming_reg { class Program { static void Main(string[] args) { bool sucsess = false; string computerbit = ""; regmutou reg = new regmutou(); computerbit = reg.getcomputerbit("X"); sucsess = reg.regmutousoft(computerbit, "xinmin", "xinmin.usr"); Console.WriteLine(sucsess); Console.ReadLine(); } } internal class regmutou { // Methods public string GetBIOSSerialNumber() { try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_BIOS"); string str = ""; foreach (ManagementObject obj2 in searcher.Get()) { str = obj2["SerialNumber"].ToString().Trim(); } return str; } catch { return ""; } }

    public string getcomputerbit(string softname)
    {
        string cpuID = this.GetCpuID();
        string bIOSSerialNumber = this.GetBIOSSerialNumber();
        string hardDiskSerialNumber = this.GetHardDiskSerialNumber();
        string netCardMACAddress = this.GetNetCardMACAddress();
        if (cpuID != "")
        {
            MD5 md = new MD5CryptoServiceProvider();
            cpuID = BitConverter.ToString(md.ComputeHash(Encoding.Default.GetBytes(cpuID))).Replace("-", "").ToUpper().Substring(8, 0x10);
            return (softname + "C" + cpuID);
        }
        if (bIOSSerialNumber != "")
        {
            MD5 md2 = new MD5CryptoServiceProvider();
            bIOSSerialNumber = BitConverter.ToString(md2.ComputeHash(Encoding.Default.GetBytes(bIOSSerialNumber))).Replace("-", "").ToUpper().Substring(8, 0x10);
            return (softname + "B" + bIOSSerialNumber);
        }
        if (hardDiskSerialNumber != "")
        {
            MD5 md3 = new MD5CryptoServiceProvider();
            hardDiskSerialNumber = BitConverter.ToString(md3.ComputeHash(Encoding.Default.GetBytes(hardDiskSerialNumber))).Replace("-", "").ToUpper().Substring(8, 0x10);
            return (softname + "H" + hardDiskSerialNumber);
        }
        if (netCardMACAddress != "")
        {
            MD5 md4 = new MD5CryptoServiceProvider();
            netCardMACAddress = BitConverter.ToString(md4.ComputeHash(Encoding.Default.GetBytes(netCardMACAddress))).Replace("-", "").ToUpper().Substring(8, 0x10);
            return (softname + "N" + netCardMACAddress);
        }
        return (softname + "WF53A419DB238BBAD");
    }

    public string GetCpuID()
    {
        try
        {
            ManagementObjectCollection instances = new ManagementClass("Win32_Processor").GetInstances();
            string str = null;
            foreach (ManagementObject obj2 in instances)
            {
                str = obj2.Properties["ProcessorId"].Value.ToString();
                break;
            }
            return str;
        }
        catch
        {
            return "";
        }
    }

    public string GetHardDiskSerialNumber()
    {
        try
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
            string str = "";
            foreach (ManagementObject obj2 in searcher.Get())
            {
                str = obj2["SerialNumber"].ToString().Trim();
                break;
            }
            return str;
        }
        catch
        {
            return "";
        }
    }

    public string GetNetCardMACAddress()
    {
        try
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))");
            string str = "";
            foreach (ManagementObject obj2 in searcher.Get())
            {
                str = obj2["MACAddress"].ToString().Trim();
            }
            return str;
        }
        catch
        {
            return "";
        }
    }

    public bool regmutousoft(string computerbit, string softname, string filename)
    {
        bool flag = true;
        string str = "";
        SHA1 sha = new SHA1CryptoServiceProvider();
        str = BitConverter.ToString(sha.ComputeHash(Encoding.Default.GetBytes(softname))).Replace("-", "").ToUpper();
        //if (!File.Exists(filename))
        //{
        //    flag = false;
        //    Stream stream = File.Open(filename, FileMode.OpenOrCreate);
        //    StreamWriter writer = new StreamWriter(stream);
        //    writer.WriteLine(computerbit);
        //    writer.Close();
        //    stream.Close();
        //    return flag;
        //}
        //Stream stream2 = File.Open(filename, FileMode.Open);
        //StreamReader reader = new StreamReader(stream2);
        //string str2 = "";
        string str3 = computerbit;
        //while ((str2 = reader.ReadLine()) != null)
        //{
        //    str3 = str2;
        //}
        //reader.Close();
        //stream2.Close();
        //if (str3.Length != 0x18)
        //{
        //    //return false;
        //}
        SHA1 sha2 = new SHA1CryptoServiceProvider();
        string str4 = BitConverter.ToString(sha2.ComputeHash(Encoding.Default.GetBytes(computerbit))).Replace("-", "").ToUpper();
        string str5 = "";
        for (int i = 0; i < str4.Length; i++)
        {
            if ((i % 2) == 1)
            {
                str5 = str5 + str4[i];
            }
        }
        string str6 = "";
        for (int j = 0; j < str.Length; j++)
        {
            if ((j % 2) == 0)
            {
                str6 = str6 + str[j];
            }
        }
        int[] numArray = new int[20];
        for (int k = 0; k < 20; k++)
        {
            numArray[k] = str6[k] + str5[k];
            numArray[k] = numArray[k] % 0x24;
        }
        string str7 = "";
        for (int m = 0; m < 20; m++)
        {
            if ((m > 0) && ((m % 4) == 0))
            {
                str7 = str7 + "-";
            }
            str7 = str7 + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[numArray[m]];
        }
        if (str3 == str7)
        {
            flag = true;
        }
        Console.WriteLine("機器碼:" + str3);
        Console.WriteLine("注冊碼:"+str7);
        return flag;
    }
}

}</pre>

 本文由用戶 cymt 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!