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(, 0x10);
return (softname + "C" + cpuID);
}
if (bIOSSerialNumber != "")
{
MD5 md2 = new MD5CryptoServiceProvider();
bIOSSerialNumber = BitConverter.ToString(md2.ComputeHash(Encoding.Default.GetBytes(bIOSSerialNumber))).Replace("-", "").ToUpper().Substring(, 0x10);
return (softname + "B" + bIOSSerialNumber);
}
if (hardDiskSerialNumber != "")
{
MD5 md3 = new MD5CryptoServiceProvider();
hardDiskSerialNumber = BitConverter.ToString(md3.ComputeHash(Encoding.Default.GetBytes(hardDiskSerialNumber))).Replace("-", "").ToUpper().Substring(, 0x10);
return (softname + "H" + hardDiskSerialNumber);
}
if (netCardMACAddress != "")
{
MD5 md4 = new MD5CryptoServiceProvider();
netCardMACAddress = BitConverter.ToString(md4.ComputeHash(Encoding.Default.GetBytes(netCardMACAddress))).Replace("-", "").ToUpper().Substring(, 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 = ; i < str4.Length; i++)
{
if ((i % ) == )
{
str5 = str5 + str4[i];
}
}
string str6 = "";
for (int j = ; j < str.Length; j++)
{
if ((j % ) == )
{
str6 = str6 + str[j];
}
}
int[] numArray = new int[];
for (int k = ; k < ; k++)
{
numArray[k] = str6[k] + str5[k];
numArray[k] = numArray[k] % 0x24;
}
string str7 = "";
for (int m = ; m < ; m++)
{
if ((m > ) && ((m % ) == ))
{
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#生成注册码的两种方法(mac地址与IP地址)的更多相关文章
- Python随机生成验证码的两种方法
Python随机生成验证码的方法有很多,今天给大家列举两种,大家也可以在这个基础上进行改造,设计出适合自己的验证码方法方法一:利用range Python随机生成验证码的方法有很多,今天给大家列举两种 ...
- 使用Python生成源文件的两种方法
利用Python的字符串处理模块,开发者能够编写脚本用来生成那些格式同样的C.C++.JAVA源程序.头文件和測试文件,从而避免大量的反复工作. 本文概述两种利用Python string类生成jav ...
- android获取Mac地址和IP地址
获取Mac地址实际项目中测试了如下几种方法:(1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac地址,这种方法也是网络上使用的最多的方法) //根据Wifi信 ...
- Sumblime Text2安装Package Control两种方法+安装插件+注册码
刚开始不认识sumblime的时候,就直接在网上下载了一个最新版的sumblime text3,只是在配合使用go语言时,出现了一些不为自己知道的奇葩问题,于是果断把3卸载了,改成了sumblime ...
- JqueryMobile动态生成listView并实现刷新的两种方法
本篇文章主要是对JqueryMobile动态生成listView并实现刷新的两种方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 JqueryMobile动态生成listView并实现刷新 ...
- WCF生成客户端代理对象的两种方法的解释
最近在封装WCF,有一些很好的实践就记录下来,大家可以放心使用,所有代码都已经调试过.如果有高手可以大家探讨一下. 在WCF中有两种不同的方法可以用于创建客户端服务对象,他们分别为: 1. 代理构造法 ...
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
c#封装DBHelper类 public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...
- PHP生成带logo图像二维码的两种方法
本文主要和大家分享PHP生成带logo图像二维码的两种方法,主要以文字和代码的形式和大家分享,希望能帮助到大家. 一.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用 ...
- MySQL命令执行sql文件的两种方法
MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希 ...
随机推荐
- 格式太旧或是类型库无效。 (Exception from HRESULT: 0x80028019 (TYPE_E_UNSUPFORMAT))
错误提示信息 格式太旧或是类型库无效. (Exception from HRESULT: 0x80028019 (TYPE_E_UNSUPFORMAT)) . Old format or invali ...
- 转载:在Visual Studio 2013中管理中国特色的社会主义Windows Azure
原文链接: http://www.pstips.net/get-azurechinacloud-settings.html 谷歌被豪迈地放弃了中国市场,微软仍旧在中国市场摸爬滚打,跪着挣钱.其中私人定 ...
- OC - 11.使用Quartz2D剪裁图片并保存
实现效果 操作步骤 绘制一个矩形框,弹出一个alertView,提示是否保存图片 点击"是",将图片保存到相册 在相册中查看保存的图片 效果图 实现思路 在控制器的view上添加一 ...
- PAT_1046 划拳
啦啦啦.今天晚上火车回学校了.= =还是挺舍不得家里的. 题目描述: 划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字 ...
- _itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s
Converts an integer to a string. These are versions of _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui ...
- 编程语言的发展趋势by Anders Hejlsberg
这是Anders Hejlsberg在比利时TechDays 2010所做的开场演讲. 编程语言的发展非常缓慢,期间也当然出现了一些东西,例如面向对象等等,你可能会想,那么我么这么多年的努力都到哪里去 ...
- iframe框根据内容自适应高度
1.页面 <iframe name="iframe_userCenter" id="iframe" frameborder=2 width=100% he ...
- 切换到mint了,纪念一下
- html5 canvas绘制圆形印章,以及与页面交互
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Castle ActiveRecord配置文件中连接字符串解密
使用Castle ActiveRecord通常都是使用配置文件进行数据库连接配置.然后采用如下方式初始化: IConfigurationSource source = ConfigurationMan ...