zoukankan      html  css  js  c++  java
  • 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();
                }
  • 相关阅读:
    LEFT JOIN个别问题
    phporjquery生成二维码
    杂项(乌班图、flex的使用实例)
    mysql创建用户并授权,解决1045
    jar运行指定jdk
    Flutter升级版本后,运行项目报错
    spring boot执行jar包指定active profile
    centos7 安装clamav 进行病毒扫描查杀
    CentOS7上安装MySQL 5.7.32(超详细)
    Centos7.5 安装elasticsearch 7.13.2 遇到的问题记录
  • 原文地址:https://www.cnblogs.com/rr163/p/3962322.html
Copyright © 2011-2022 走看看