当前位置:  编程技术>.net/c#/asp.net

C#实现生成mac地址与IP地址注册码的两种方法

    来源: 互联网  发布时间:2014-11-03

    本文导语:  本文实例讲述了C#实现生成mac地址与IP地址注册码的两种方法,分享给大家供大家参考之用。具体方法如下: 方法一: using System; using System.Management; using System.Security.Cryptography; using System.IO; using System.Collections.Generic; using Sy...

本文实例讲述了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();
}

希望本文所述对大家的C#程序设计有所帮助。


    
 
 

您可能感兴趣的文章:

  • 整型数据做函数的参数,怎样实现传地址,和调用程序共用一个地址?
  • linux 中怎么根据MAC地址获得IP地址?(用C语言实现)
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • 如何用iptable来实现过滤MAC地址?
  • 如何实现用通迅改变Linux的IP地址?
  • linux下如何编程实现远程开机,已知mac地址
  • 在地址一栏中显示页面中提交的信息,如何实现
  • 如何用JSP实现获悉浏览者的IP地址的功能?
  • 求《操作系统,设计与实现》(Cn,En都可)电子书下载地址,解决即结账
  • 求助!!!怎么实现micro2440利用独立的IP地址上互联网?
  • linux中如何实现打开域名自动转到另外一个地址
  • 如何实现输入网址生成RSS全文地址
  • PHP实现使用优酷土豆视频地址获取swf播放器分享地址
  • redhat70下如何实现IP和网卡地址捆绑?
  • 通过javascript实现DIV居中,兼容各浏览器版本 iis7站长之家
  • C#获得MAC地址(网卡序列号)的实现代码
  • 限制ip地址段访问用php如何实现
  • C# IP地址与整数相互转换的实现方法
  • java实现根据ip地址获取地理位置的代码分享
  • hp-ux 下要修改一个配置文件中的ip地址,要如何用脚本实现
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • C#实现获取枚举中元素个数的方法
  • C#实现自定义双击事件
  • C#键盘输入回车键实现点击按钮效果的方法
  • C#实现获取一年中是第几个星期的方法
  • C#实现Datatable排序的方法
  • C#实现装箱与拆箱操作简单实例
  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C#下实现创建和删除目录的实例代码
  • 使用C#实现在屏幕上画图效果的代码实例
  • C#实现过滤html标签并保留a标签的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C#软件注册码的实现代码
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 求在freebsd+Squid下实现pc上网的透明代理的实现方法!给出具体配置方法的高分谢!
  • boost unordered_map和std::list相结合的实现LRU算法
  • linux下如实现与window下的驱动器实现文件共享??
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • qt如何实现:操作键盘实现数据的滚动?
  • iphone cocos2d 精灵的动画效果(图片,纹理,帧)CCAnimation实现
  • 我想用APPLET实现读取客户端的图片文件,该如何实现?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • PING是用TCP,还是用UDP来实现的?或是采用其它协议实现的?
  • html<pre>标签自动换行实现方法
  • ejb-ql只能 like '?%' 么?我想实现模糊查寻,想实现 like'%?%' 怎么办??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3