-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
95 lines (83 loc) · 3.77 KB
/
Program.cs
File metadata and controls
95 lines (83 loc) · 3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using System;
using System.Management;
using System.Security.Cryptography;
using System.Text;
namespace PCFingerprint {
class Program {
static void Main (string[] args) {
string fingerprint = GetPCFingerprint ();
Console.WriteLine ("PC Fingerprint: " + fingerprint);
}
static string GetPCFingerprint () {
StringBuilder fingerprintBuilder = new StringBuilder ();
var cpuID = GetCPUId ();
var motherboardSerial = GetMotherboardSerialNumber ();
var diskDriveSerial = GetDiskDriveSerialNumber ();
var diskDrive2Serial = GetDiskDriveSerialNumber2 ();
var osVersion = Environment.OSVersion.ToString ();
var machineName = Environment.MachineName;
Console.WriteLine (
$"CPU ID: {cpuID}\n" +
$"MotherBoard Serial: {motherboardSerial}\n" +
$"DiskDrive Serial: {diskDriveSerial}\n" +
$"DiskDrive2 Serial: {diskDrive2Serial}\n" +
$"osVersion: {osVersion}\n" +
$"Machine Name: {machineName}\n"
);
// Gather hardware identifiers
fingerprintBuilder.Append (cpuID);
fingerprintBuilder.Append (motherboardSerial);
fingerprintBuilder.Append (diskDriveSerial);
// Concatenate additional system information
fingerprintBuilder.Append (osVersion);
fingerprintBuilder.Append (machineName);
// Hash the fingerprint
using (SHA256 sha256 = SHA256.Create ()) {
byte[] hashBytes = sha256.ComputeHash (Encoding.UTF8.GetBytes (fingerprintBuilder.ToString ()));
return BitConverter.ToString (hashBytes).Replace ("-", "").ToLower ();
}
}
static string GetCPUId () {
// Retrieve CPU ID using ManagementObject
ManagementObjectSearcher searcher = new ManagementObjectSearcher ("SELECT ProcessorId FROM Win32_Processor");
foreach (ManagementObject obj in searcher.Get ()) {
return obj["ProcessorId"].ToString ();
}
return string.Empty;
}
static string GetMotherboardSerialNumber () {
// Retrieve motherboard serial number using ManagementObject
ManagementObjectSearcher searcher = new ManagementObjectSearcher ("SELECT SerialNumber FROM Win32_BaseBoard");
foreach (ManagementObject obj in searcher.Get ()) {
return obj["SerialNumber"].ToString ();
}
return string.Empty;
}
static string GetDiskDriveSerialNumber () {
// Retrieve disk drive serial number using ManagementObject
ManagementObjectSearcher searcher = new ("SELECT SerialNumber FROM Win32_DiskDrive WHERE MediaType='Fixed hard disk media'");
foreach (ManagementObject obj in searcher.Get ()) {
return obj["SerialNumber"].ToString ();
}
return string.Empty;
}
static string GetDiskDriveSerialNumber2() {
try {
// Query WMI for disk drive information
ManagementObjectSearcher searcher = new ManagementObjectSearcher ("SELECT SerialNumber FROM Win32_DiskDrive");
ManagementObjectCollection collection = searcher.Get ();
foreach (ManagementObject obj in collection) {
// Return the serial number of the first disk drive found
return obj["SerialNumber"].ToString ();
}
// No disk drive found
Console.WriteLine ("No disk drive found.");
return null;
} catch (Exception ex) {
// Handle any exceptions
Console.WriteLine ($"Error retrieving disk drive serial number: {ex.Message}");
return null;
}
}
}
}