SoFunction
Updated on 2025-03-07

C# implements two methods to generate mac address and IP address registration code

This article describes two methods of C# to generate mac address and IP address registration codes, and is shared with you for your reference. The specific methods are as follows:

Method 1:

using System;
using ;
using ;
using ;
using ;
using ;

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

    public string getcomputerbit(string softname)
    {
      string cpuID = ();
      string bIOSSerialNumber = ();
      string hardDiskSerialNumber = ();
      string netCardMACAddress = ();
      if (cpuID != "")
      {
        MD5 md = new MD5CryptoServiceProvider();
        cpuID = (((cpuID))).Replace("-", "").ToUpper().Substring(8, 0x10);
        return (softname + "C" + cpuID);
      }
      if (bIOSSerialNumber != "")
      {
        MD5 md2 = new MD5CryptoServiceProvider();
        bIOSSerialNumber = (((bIOSSerialNumber))).Replace("-", "").ToUpper().Substring(8, 0x10);
        return (softname + "B" + bIOSSerialNumber);
      }
      if (hardDiskSerialNumber != "")
      {
        MD5 md3 = new MD5CryptoServiceProvider();
        hardDiskSerialNumber = (((hardDiskSerialNumber))).Replace("-", "").ToUpper().Substring(8, 0x10);
        return (softname + "H" + hardDiskSerialNumber);
      }
      if (netCardMACAddress != "")
      {
        MD5 md4 = new MD5CryptoServiceProvider();
        netCardMACAddress = (((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 = ["ProcessorId"].();
          break;
        }
        return str;
      }
      catch
      {
        return "";
      }
    }

    public string GetHardDiskSerialNumber()
    {
      try
      {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
        string str = "";
        foreach (ManagementObject obj2 in ())
        {
          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 ())
        {
          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 = (((softname))).Replace("-", "").ToUpper();
      //if (!(filename))
      //{
      //  flag = false;
      //  Stream stream = (filename, );
      //  StreamWriter writer = new StreamWriter(stream);
      //  (computerbit);
      //  ();
      //  ();
      //  return flag;
      //}
      //Stream stream2 = (filename, );
      //StreamReader reader = new StreamReader(stream2);
      //string str2 = "";
      string str3 = computerbit;
      //while ((str2 = ()) != null)
      //{
      //  str3 = str2;
      //}
      //();
      //();
      //if ( != 0x18)
      //{
      //  //return false;
      //}
      SHA1 sha2 = new SHA1CryptoServiceProvider();
      string str4 = (((computerbit))).Replace("-", "").ToUpper();
      string str5 = "";
      for (int i = 0; i < ; i++)
      {
        if ((i % 2) == 1)
        {
          str5 = str5 + str4[i];
        }
      }
      string str6 = "";
      for (int j = 0; j < ; 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;
      }
      ("Machine Code:" + str3);
      ("Register code:"+str7);
      return flag;
    }
  }
}

Method 2:

using ;

//Win32_NetworkAdapterConfiguration is the information table used in the WMI database to store network devicesManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'");

//ManagementObjectCollection object is used to store query resultsManagementObjectCollection queryCollection = ();

foreach (ManagementObject mo in queryCollection)
{
 ("Network Card:{0}", mo["Description"]);
 ("MAC Address:{0}", mo["MACAddress"]);

 //addresses, subnets and defaultgateways values ​​can contain multiple arrays of value. //To adapt to this situation, in order to adapt to this situation, the user must assign the result to an array of strings, // and use the foreach statement to pass the string array again string[] addresses = (string[])mo["IPAddress"];
 string[] subnets = (string[])mo["IPSubnet"];
 string[] defaultgateways = (string[])mo["DefaultIPGateway"];

 //Any interface may have multiple IP addresses foreach (string ipaddress in addresses)
 {
   ("IP Address:{0}", ipaddress);
 }

 foreach (string subnet in subnets)
 {
   ("Subnet Mask:{0}", subnet);
 }

 foreach (string defaultgateway in defaultgateways)
 {
   ("Gateway:{0}", defaultgateway);
 }
 ();
}

I hope this article will be helpful to everyone's C# programming.