001 | using System; |
002 | using System.Management; |
003 | using System.Security.Cryptography; |
004 | using System.IO; |
005 | using System.Collections.Generic; |
006 | using System.Text; |
007 |
008 | namespace xingming_reg |
009 | { |
010 |
class Program |
011 |
{ |
012 |
static void Main( string [] args) |
013 |
{ |
014 |
bool sucsess = false ; |
015 |
string computerbit = "" ; |
016 |
regmutou reg = new regmutou(); |
017 |
computerbit = reg.getcomputerbit( "X" ); |
018 |
sucsess = reg.regmutousoft(computerbit, "xinmin" , "xinmin.usr" ); |
019 |
Console.WriteLine(sucsess); |
020 |
Console.ReadLine(); |
021 |
} |
022 |
} |
023 |
internal class regmutou |
024 |
{ |
025 |
// Methods |
026 |
public string GetBIOSSerialNumber() |
027 |
{ |
028 |
try |
029 |
{ |
030 |
ManagementObjectSearcher searcher = new ManagementObjectSearcher( "Select * From Win32_BIOS" ); |
031 |
string str = "" ; |
032 |
foreach (ManagementObject obj2 in searcher.Get()) |
033 |
{ |
034 |
str = obj2[ "SerialNumber" ].ToString().Trim(); |
035 |
} |
036 |
return str; |
037 |
} |
038 |
catch |
039 |
{ |
040 |
return "" ; |
041 |
} |
042 |
} |
043 |
044 |
public string getcomputerbit( string softname) |
045 |
{ |
046 |
string cpuID = this .GetCpuID(); |
047 |
string bIOSSerialNumber = this .GetBIOSSerialNumber(); |
048 |
string hardDiskSerialNumber = this .GetHardDiskSerialNumber(); |
049 |
string netCardMACAddress = this .GetNetCardMACAddress(); |
050 |
if (cpuID != "" ) |
051 |
{ |
052 |
MD5 md = new MD5CryptoServiceProvider(); |
053 |
cpuID = BitConverter.ToString(md.ComputeHash(Encoding.Default.GetBytes(cpuID))).Replace( "-" , "" ).ToUpper().Substring(8, 0x10); |
054 |
return (softname + "C" + cpuID); |
055 |
} |
056 |
if (bIOSSerialNumber != "" ) |
057 |
{ |
058 |
MD5 md2 = new MD5CryptoServiceProvider(); |
059 |
bIOSSerialNumber = BitConverter.ToString(md2.ComputeHash(Encoding.Default.GetBytes(bIOSSerialNumber))).Replace( "-" , "" ).ToUpper().Substring(8, 0x10); |
060 |
return (softname + "B" + bIOSSerialNumber); |
061 |
} |
062 |
if (hardDiskSerialNumber != "" ) |
063 |
{ |
064 |
MD5 md3 = new MD5CryptoServiceProvider(); |
065 |
hardDiskSerialNumber = BitConverter.ToString(md3.ComputeHash(Encoding.Default.GetBytes(hardDiskSerialNumber))).Replace( "-" , "" ).ToUpper().Substring(8, 0x10); |
066 |
return (softname + "H" + hardDiskSerialNumber); |
067 |
} |
068 |
if (netCardMACAddress != "" ) |
069 |
{ |
070 |
MD5 md4 = new MD5CryptoServiceProvider(); |
071 |
netCardMACAddress = BitConverter.ToString(md4.ComputeHash(Encoding.Default.GetBytes(netCardMACAddress))).Replace( "-" , "" ).ToUpper().Substring(8, 0x10); |
072 |
return (softname + "N" + netCardMACAddress); |
073 |
} |
074 |
return (softname + "WF53A419DB238BBAD" ); |
075 |
} |
076 |
077 |
public string GetCpuID() |
078 |
{ |
079 |
try |
080 |
{ |
081 |
ManagementObjectCollection instances = new ManagementClass( "Win32_Processor" ).GetInstances(); |
082 |
string str = null ; |
083 |
foreach (ManagementObject obj2 in instances) |
084 |
{ |
085 |
str = obj2.Properties[ "ProcessorId" ].Value.ToString(); |
086 |
break ; |
087 |
} |
088 |
return str; |
089 |
} |
090 |
catch |
091 |
{ |
092 |
return "" ; |
093 |
} |
094 |
} |
095 |
096 |
public string GetHardDiskSerialNumber() |
097 |
{ |
098 |
try |
099 |
{ |
100 |
ManagementObjectSearcher searcher = new ManagementObjectSearcher( "SELECT * FROM Win32_PhysicalMedia" ); |
101 |
string str = "" ; |
102 |
foreach (ManagementObject obj2 in searcher.Get()) |
103 |
{ |
104 |
str = obj2[ "SerialNumber" ].ToString().Trim(); |
105 |
break ; |
106 |
} |
107 |
return str; |
108 |
} |
109 |
catch |
110 |
{ |
111 |
return "" ; |
112 |
} |
113 |
} |
114 |
115 |
public string GetNetCardMACAddress() |
116 |
{ |
117 |
try |
118 |
{ |
119 |
ManagementObjectSearcher searcher = new ManagementObjectSearcher( "SELECT * FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))" ); |
120 |
string str = "" ; |
121 |
foreach (ManagementObject obj2 in searcher.Get()) |
122 |
{ |
123 |
str = obj2[ "MACAddress" ].ToString().Trim(); |
124 |
} |
125 |
return str; |
126 |
} |
127 |
catch |
128 |
{ |
129 |
return "" ; |
130 |
} |
131 |
} |
132 |
133 |
public bool regmutousoft( string computerbit, string softname, string filename) |
134 |
{ |
135 |
bool flag = true ; |
136 |
string str = "" ; |
137 |
SHA1 sha = new SHA1CryptoServiceProvider(); |
138 |
str = BitConverter.ToString(sha.ComputeHash(Encoding.Default.GetBytes(softname))).Replace( "-" , "" ).ToUpper(); |
139 |
//if (!File.Exists(filename)) |
140 |
//{ |
141 |
// flag = false; |
142 |
// Stream stream = File.Open(filename, FileMode.OpenOrCreate); |
143 |
// StreamWriter writer = new StreamWriter(stream); |
144 |
// writer.WriteLine(computerbit); |
145 |
// writer.Close(); |
146 |
// stream.Close(); |
147 |
// return flag; |
148 |
//} |
149 |
//Stream stream2 = File.Open(filename, FileMode.Open); |
150 |
//StreamReader reader = new StreamReader(stream2); |
151 |
//string str2 = ""; |
152 |
string str3 = computerbit; |
153 |
//while ((str2 = reader.ReadLine()) != null) |
154 |
//{ |
155 |
// str3 = str2; |
156 |
//} |
157 |
//reader.Close(); |
158 |
//stream2.Close(); |
159 |
//if (str3.Length != 0x18) |
160 |
//{ |
161 |
// //return false; |
162 |
//} |
163 |
SHA1 sha2 = new SHA1CryptoServiceProvider(); |
164 |
string str4 = BitConverter.ToString(sha2.ComputeHash(Encoding.Default.GetBytes(computerbit))).Replace( "-" , "" ).ToUpper(); |
165 |
string str5 = "" ; |
166 |
for ( int i = 0; i < str4.Length; i++) |
167 |
{ |
168 |
if ((i % 2) == 1) |
169 |
{ |
170 |
str5 = str5 + str4[i]; |
171 |
} |
172 |
} |
173 |
string str6 = "" ; |
174 |
for ( int j = 0; j < str.Length; j++) |
175 |
{ |
176 |
if ((j % 2) == 0) |
177 |
{ |
178 |
str6 = str6 + str[j]; |
179 |
} |
180 |
} |
181 |
int [] numArray = new int [20]; |
182 |
for ( int k = 0; k < 20; k++) |
183 |
{ |
184 |
numArray[k] = str6[k] + str5[k]; |
185 |
numArray[k] = numArray[k] % 0x24; |
186 |
} |
187 |
string str7 = "" ; |
188 |
for ( int m = 0; m < 20; m++) |
189 |
{ |
190 |
if ((m > 0) && ((m % 4) == 0)) |
191 |
{ |
192 |
str7 = str7 + "-" ; |
193 |
} |
194 |
str7 = str7 + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" [numArray[m]]; |
195 |
} |
196 |
if (str3 == str7) |
197 |
{ |
198 |
flag = true ; |
199 |
} |
200 |
Console.WriteLine( "机器码:" + str3); |
201 |
Console.WriteLine( "注册码:" +str7); |
202 |
return flag; |
203 |
} |
204 |
} |
205 | } |