计算机ID专业,计算机专用ID?

Nathan F.

6

java

我正在尝试使用Java生成特定的计算机ID.我已经考虑过像硬盘驱动器序列,或Windows串行密钥,CPU ID或MAC地址这样的东西,但其他计算机也可能有相同的东西.例如,如果某人盗版了Windows 7的副本,他们就可能拥有相同的序列号作为某人..我想知道是否有人可以给我一种方法来生成一个永远不会改变并可使用Java检索的计算机特定ID?

我做了一些研究,发现了一些有用的功能.而且,我在想​​这样的事情.但如果他们更改了硬件,它将更改计算机ID.有人知道我可以用的东西吗?

public String getComputerID(){

InetAddress ip = InetAddress.getLocalHost();

NetworkInterface network = NetworkInterface.getByInetAddress(ip);

byte[] mac = network.getHardwareAddress();

String sn = getSerialNumber("C");

String cpuId = getMotherboardSN();

return MD5(mac + sn + cpuId);

}

public String MD5(String md5) {

try {

java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");

byte[] array = md.digest(md5.getBytes());

StringBuffer sb = new StringBuffer();

for (int i = 0; i < array.length; ++i) {

sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));

}

return sb.toString();

} catch (java.security.NoSuchAlgorithmException e) {

}

return null;

}

public String getSerialNumber(String drive) {

String result = "";

try {

File file = File.createTempFile("realhowto",".vbs");

file.deleteOnExit();

FileWriter fw = new java.io.FileWriter(file);

StringBufferring vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"

+"Set colDrives = objFSO.Drives\n"

+"Set objDrive = colDrives.item(\"" + drive + "\")\n"

+"Wscript.Echo objDrive.SerialNumber"; // see note

fw.write(vbs);

FileWriter.close();

Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());

BufferedReader input =

new BufferedReader

(new InputStreamReader(p.getInputStream()));

String line;

while ((line = input.readLine()) != null) {

result += line;

}

input.close();

}

catch(Exception e){

e.printStackTrace();

}

return result.trim();

}

public String getMotherboardSN() {

String result = "";

try {

File file = File.createTempFile("realhowto",".vbs");

file.deleteOnExit();

FileWriter fw = new java.io.FileWriter(file);

String vbs =

"Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"

+ "Set colItems = objWMIService.ExecQuery _ \n"

+ " (\"Select * from Win32_BaseBoard\") \n"

+ "For Each objItem in colItems \n"

+ " Wscript.Echo objItem.SerialNumber \n"

+ " exit for ' do the first cpu only! \n"

+ "Next \n";

fw.write(vbs);

fw.close();

Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());

BufferedReader input =

new BufferedReader

(new InputStreamReader(p.getInputStream()));

String line;

while ((line = input.readLine()) != null) {

result += line;

}

input.close();

}

catch(Exception e){

e.printStackTrace();

}

return result.trim();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值