c#生成注册码的两种方法(mac地址与IP地址)

来源:互联网 发布:linux打开终端快捷键 编辑:程序博客网 时间:2024/06/01 09:55

c#生成注册码的两种方法(mac地址与IP地址)

复制代码
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;        }    }}
复制代码
复制代码
            using System.Management;             //Win32_NetworkAdapterConfiguration是WMI数据库中用来存放网络设备的信息表            ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'");            //ManagementObjectCollection对象用来存放查询结果            ManagementObjectCollection queryCollection = query.Get();            foreach (ManagementObject mo in queryCollection)            {                Console.WriteLine("Network Card:{0}", mo["Description"]);                Console.WriteLine("MAC Address:{0}", mo["MACAddress"]);                //addresses, subnets和 defaultgateways 值都是可以包含多个值得数组.                //为了适应这种情况,为了适应这种情况,用户必须把结果分配到一个字符串数组,                //并再一次用foreach语句通过该字符串数组                string[] addresses = (string[])mo["IPAddress"];                string[] subnets = (string[])mo["IPSubnet"];                string[] defaultgateways = (string[])mo["DefaultIPGateway"];                //任何一个接口都可能有多个IP地址                foreach (string ipaddress in addresses)                {                    Console.WriteLine("IP Address:{0}", ipaddress);                }                foreach (string subnet in subnets)                {                    Console.WriteLine("Subnet Mask:{0}", subnet);                }                foreach (string defaultgateway in defaultgateways)                {                    Console.WriteLine("Gateway:{0}", defaultgateway);                }                Console.WriteLine();            }
复制代码
0 0
原创粉丝点击