I'm trying to get the CPU serial
or motherboard serial
using C
or Python
for licensing purposes. Is it possible?
I'm using Linux
.
I'm trying to get the CPU serial
or motherboard serial
using C
or Python
for licensing purposes. Is it possible?
I'm using Linux
.
You need to use the CPUID instruction.
CPUID
Most C compilers have some support for inline assembly, but you will need to know what you are doing.
Under Linux, you could use "lshw -quiet -xml" and parse its output. You'll find plenty of system information here: cpuid, motherboard id and much more.
You can get the CPUID. Maybe linux command 'dmidecode' can help you. You can exec this command,or load the source code of "dmidecode". Next is the output of "dmidecode -t processor":
>dmidecode -t processor
# dmidecode 2.7
SMBIOS 2.2 present.
Handle 0x0004, DMI type 4, 32 bytes.
Processor Information
Socket Designation: Socket 478
Type: Central Processor
Family: Pentium 4
Manufacturer: Intel
ID: 27 0F 00 00 FF FB EB BF
Signature: Type 0, Family 15, Model 2, Stepping 7
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (Fast floating-point save and restore)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Hyper-threading technology)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Pentium(R) 4 CPU
Voltage: 1.5 V
External Clock: 133 MHz
Max Speed: 3066 MHz
Current Speed: 2800 MHz
Status: Populated, Enabled
Upgrade: ZIF Socket
L1 Cache Handle: 0x0008
L2 Cache Handle: 0x0009
L3 Cache Handle: No L3 Cache
In Linux, motherboard information may be found under /sys/class/dmi eg
$ sudo grep '' /sys/class/dmi/id/board_*
/sys/class/dmi/id/board_asset_tag:
/sys/class/dmi/id/board_name:30AD
/sys/class/dmi/id/board_serial:
/sys/class/dmi/id/board_vendor:Hewlett-Packard
/sys/class/dmi/id/board_version:KBC Version 56.34
...but not all motherboards provide serial number through dmi...as you can see here.
CPUs no longer obtain a serial number and it's been like that for a while now. For the CPUID - it's unique per CPU model therefore it doesn't help with licensing.