Серийный номер процессора linux

CPU serial number

I have the ultimate answer for this without any external libraries. Simply type this:

wmic bios get serialnumber

This will give you the Serial Number on the PCs chassis 😉 (found in microsoft’s knowledge base)

returned the text «System Serial Number» for me on my i7. Do you have the link to the mentioned knowledge base article?

The text «System Serial Number» is typical in white box systems. It is supposed to be replaced by the PC maker before they sell it.

With my board it returns «To be filled by O.E.M.» => not reliable => probably better to use something else, like the MAC address if available.

Remember that most computers these days ship with CPU ID disabled in the BIOS. See CPUID on Wikipedia

There is no CPU serial ID (PSN; CPUID edx bit 18 «psn» Processor Serial Number) after Pentium III in Intel CPUs; and there was never any psn in AMD chips:

However, keep in mind that only the Pentium III Xeon, Mobile Pentium III and Pentium III processors support the processor serial number feature introduced by the Pentium III processor. No other Intel processor supports the processor serial number feature

EAX=3: Processor Serial Number See also: Pentium III § Controversy about privacy issues

This returns the processor’s serial number. The processor serial number was introduced on Intel Pentium III, but due to privacy concerns, this feature is no longer implemented on later models (the PSN feature bit is always cleared). Transmeta’s Efficeon and Crusoe processors also provide this feature. AMD CPUs however, do not implement this feature in any CPU models.

Even with CPUID enabled is there actually a serial number available in modern processors? I remember there being a big outcry in the Pentium 3 days when this whole serial number issue was raised.

There is no CPU serial ID (PSN) after Pentium III in Intel CPUs: software.intel.com/en-us/forums/watercooler-catchall/topic/… «However, keep in mind that only the Pentium III Xeon, Mobile Pentium III and Pentium III processors support the processor serial number feature introduced by the Pentium III processor. No other Intel processor supports the processor serial number feature:» (at 2005); en.wikipedia.org/wiki/…

This is and old thread. But I had a same problem, but I got the following logic working without too many ifs, ands or buts.

The problem with CPU serial number is that it does not always work in virtualized environment.

I did the following logic with a set of Windows-based servers:

Win32_BIOS can provide you a serial number of the bios. We need to keep in mind that if the system is virtualized, you could end up with same bios serial number for all servers.

Win32_NetworkAdapter can provide you a MAC that you can use as well. In cases where you have multiple NICs, you will end up with multiple-MACs.

Читайте также:  Linux сброс кэша на диск

Combining both these IDs, I had all unique set over a set of 6000 servers spanning across physical and virtual. This was really simple to implement using ManagementClass & ManagementObject .

Ivy Bridge CPUs and newer all include a PPIN (Protected Processor Identification Number). Access to this feature can be blocked by the computer’s firmware.

Executing the CPUID instruction with the proper register settings will retrieve the processor serial number in EAX, EBX, ECX, and EDX. However, this functionality is only available on Pentium 3 and later processors. Also on Pentium 4 and newer processors the instruction always returns 0x00000000 in all 4 registers. Later model Pentium 3’s may also return 0x00000000’s. The feature was primarily aimed at copy protection, allowing software to be linked to specific processors. It did not go over well with the community, and lawsuits ensued. The feature was removed from late model P3’s and all newer processors. The feature is present in newer processors for compatibility reasons. it is rumored than you can special order processors with serial numbers, btu the minimum purchase is something like 1 million processors. For the specific register settings prior to executing the CPUID instruction, check Intels system programmer PDF available through their website.

 #include #include #include #include #include static void GetMACaddress(void); static void uuidGetMACaddress(void); int main() < SYSTEM_INFO SysInfo; GetSystemInfo(&SysInfo); printf("Processors - %d\n" , SysInfo.dwNumberOfProcessors); DWORD a , b , c , d , e; DWORD BasicLeaves; char* VendorID = (char*)malloc(20); char* message = (char*)malloc(20); _asm < pusha pushfd pop eax push eax xor eax , 0x00200000 push eax popfd pushfd pop ecx pop eax xor eax , ecx mov [a] , eax >if(a & 0x00200000) < printf("CPUID opcode supported.\n"); >else < printf("CPUID opcode not supported, exiting. \n"); return 0; >//DWORD* pa = &a[0]; //DWORD* pb = &a[1]; //DWORD* pc = &a[2]; //DWORD* pd = &a[3]; //a[4] = 0; e = 0; __asm < mov eax , 0 cpuid mov [BasicLeaves] , eax; mov [b] , ebx; mov [c] , ecx; mov [d] , edx; >memcpy(&VendorID[0] , &b , 4); memcpy(&VendorID[4] , &d , 4); memcpy(&VendorID[8] , &c , 4); VendorID[12] = 0; printf("%d Basic Leaves\nVendorID - %s\n" , BasicLeaves , VendorID); __asm < mov eax , 1 cpuid mov [a] , eax; mov [b] , ebx; mov [c] , ecx; mov [d] , edx; >if(d & 0x00000001) printf("FPU\n"); if(d & 0x00000200) printf("APIC On-Chip\n"); if(d & 0x00040000) printf("Processor Serial Number Present\n"); if(d & 0x00800000) printf("MMX\n"); if(d & 0x01000000) printf("SSE\n"); if(d & 0x02000000) printf("SSE2\n"); if(d & 0x08000000) printf("Hyperthreading (HTT)\n"); if(c & 0x00000001) printf("SSE3\n"); if(c & 0x00000200) printf("SSSE3\n"); if(c & 0x00080000) printf("SSE4.1\n"); if(c & 0x00100000) printf("SSE4.2\n"); if(c & 0x02000000) printf("AES\n"); __asm < mov eax , 0x80000000 cpuid and eax , 0x7fffffff; mov [a] , eax; mov [b] , ebx; mov [c] , ecx; mov [d] , edx; >printf("%d Extended Leaves\n" , a); printf("Processor Brand String - "); __asm < mov eax , 0x80000002 cpuid mov [a] , eax; mov [b] , ebx; mov [c] , ecx; mov [d] , edx; >memcpy(&message[0] , &a , 4); memcpy(&message[4] , &b , 4); memcpy(&message[8] , &c , 4); memcpy(&message[12] , &d , 4); message[16] = 0; printf("%s" , message); __asm < mov eax , 0x80000003 cpuid mov [a] , eax; mov [b] , ebx; mov [c] , ecx; mov [d] , edx; >memcpy(&message[0] , &a , 4); memcpy(&message[4] , &b , 4); memcpy(&message[8] , &c , 4); memcpy(&message[12] , &d , 4); message[16] = 0; printf("%s" , message); __asm < mov eax , 0x80000004 cpuid mov [a] , eax; mov [b] , ebx; mov [c] , ecx; mov [d] , edx; popa >memcpy(&message[0] , &a , 4); memcpy(&message[4] , &b , 4); memcpy(&message[8] , &c , 4); memcpy(&message[12] , &d , 4); message[16] = 0; printf("%s\n" , message); char VolumeName[256]; DWORD VolumeSerialNumber; DWORD MaxComponentLength; DWORD FileSystemFlags; char FileSystemNameBuffer[256]; GetVolumeInformationA("c:\\" , VolumeName , 256 , &VolumeSerialNumber , &MaxComponentLength , &FileSystemFlags , (LPSTR)&FileSystemNameBuffer , 256); printf("Serialnumber - %X\n" , VolumeSerialNumber); GetMACaddress(); uuidGetMACaddress(); return 0; > // Fetches the MAC address and prints it static void GetMACaddress(void)< IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information // for up to 16 NICs DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer DWORD dwStatus = GetAdaptersInfo( // Call GetAdapterInfo AdapterInfo, // [out] buffer to receive data &dwBufLen); // [in] size of receive data buffer //assert(dwStatus == ERROR_SUCCESS); // Verify return value is // valid, no buffer overflow PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; // Contains pointer to // current adapter info do < printf("Adapter MAC Address - %X-%X-%X-%X-%X-%X\n" , pAdapterInfo->Address[0] , pAdapterInfo->Address[1] , pAdapterInfo->Address[2] , pAdapterInfo->Address[3] , pAdapterInfo->Address[4] , pAdapterInfo->Address[5]); printf("Adapter IP Address - %s\n" , pAdapterInfo->CurrentIpAddress); printf("Adapter Type - %d\n" , pAdapterInfo->Type); printf("Adapter Name - %s\n" , pAdapterInfo->AdapterName); printf("Adapter Description - %s\n" , pAdapterInfo->Description); uuidGetMACaddress(); printf("\n"); //PrintMACaddress(pAdapterInfo->Address); // Print MAC address pAdapterInfo = pAdapterInfo->Next; // Progress through // linked list > while(pAdapterInfo); // Terminate if last adapter > // Fetches the MAC address and prints it static void uuidGetMACaddress(void) < unsigned char MACData[6]; UUID uuid; UuidCreateSequential( &uuid ); // Ask OS to create UUID for (int i=2; i//*/ 

Источник

Читайте также:  Kali linux перехват пакетов

Как проверить производителя аппаратного оборудования, модель и серийный номер в Linux

Получение информации о системном оборудовании не является проблемой для пользователей Linux GUI и Windows, но пользователи CLI сталкиваются с проблемами, чтобы получить эту информацию.

Даже большинство из нас не знают, что является лучшей командой, чтобы получить это. В Linux есть много утилит для получения информации о системном оборудовании, например

Производитель аппаратного оборудования, модель и серийный номер.

Мы пытаемся написать возможные способы получения этих данных, но вы можете выбрать лучший метод для вас.

Обязательно знать всю эту информацию, потому что она понадобится, когда вы поднимете дело с поставщиком аппаратного обеспечения для любых проблем с оборудованием.

Это может быть достигнуто с помощью шести методов, позвольте мне показать вам, как это сделать.

Метод-1: Использование команды Dmidecode

Dmidecode – это инструмент, который считывает DMI компьютера (означает интерфейс управления рабочим столом) (некоторые говорят, что содержимое таблиц SMBIOS – System Management BIOS) и аппаратная информация для системы отображения в формате, удобном для человека.

В этой таблице содержится описание аппаратных компонентов системы, а также другая полезная информация, такая как серийный номер, информация о производителе, дата выпуска и ревизия BIOS и т.д..

В таблице DMI описывается не только то, что в настоящее время используется системой, но также можно сообщить о возможной эволюции (например, самый быстрый поддерживаемый процессор или максимальный объем поддерживаемой памяти).

Это поможет вам проанализировать возможности вашего оборудования, будь то поддержка последней версии приложения или нет?

~# dmidecode -t system # dmidecode 3.0 Getting SMBIOS data from sysfs. SMBIOS 2.7 present. Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: Aquarius Product Name: Aquarius Std W60 S10 Version: To be filled by O.E.M. Serial Number: To be filled by O.E.M. UUID: 03AA02FC-0414-055D-E006-2F0700080009 Wake-up Type: Power Switch SKU Number: To be filled by O.E.M. Family: To be filled by O.E.M. Handle 0x0022, DMI type 12, 5 bytes System Configuration Options Option 1: To Be Filled By O.E.M. Handle 0x002D, DMI type 32, 20 bytes System Boot Information Status: No errors detected

Метод-2: Использование команды inxi

Inxi – отличный инструмент для проверки информации об оборудовании в Linux и предлагает широкий спектр возможностей для получения всей информации об оборудовании в системе Linux, которую я никогда не нашел в любой другой утилите, доступной в Linux.

Читайте также:  Reading file line by line in linux

Он был раздвоен из древнего и разумно извращенного

Inxi – это скрипт, который быстро показывает аппаратное обеспечение системы, процессор, драйверы, Xorg, Desktop, Kernel, GCC версии, процессы, использование ОЗУ и множество других полезных сведений, также используемых для технической поддержки и отладки

# inxi -M Machine: Device: server System: IBM product: N/A v: 0B serial: MK2RL11 Mobo: IBM model: 00Y8494 serial: 37M17D UEFI: IBM v: -[VVE134MUS-1.50]- date: 08/30/2013

Метод-3: Использование команды lshw

lshw (означает Hardware Lister) – это небольшой отличный инструмент, который генерирует подробные отчеты о различных аппаратных компонентах на машине, таких как конфигурация памяти, версия прошивки, конфигурация материнской платы, версия и скорость процессора, конфигурация кеша, USB, сетевая карта, мультимедиа, принтеры, скорость шины и т. д.

Он генерирует информацию об оборудовании, читая различные файлы в каталоге / proc и таблице DMI.

lshw должен быть запущен от суперпользователя, чтобы определить максимальный объем информации или он будет сообщать только частичную информацию.

Специальная опция доступна в классе lshw, который будет подробно описывать конкретную информацию об оборудовании.

# lshw -C system описание: Настольный компьютер продукт: Aquarius Std W60 S10 (To be filled by O.E.M.) производитель: Aquarius версия: To be filled by O.E.M. серийный №: To be filled by O.E.M. разрядность: 64 bits возможности: smbios-2.7 dmi-2.7 vsyscall32 конфигурация: boot=normal chassis=desktop family=To be filled by O.E.M. sku=To be filled by O.E.M. uuid=FC02AA03-1404-5D05-E006-2F0700080009

Способ-4: Использование / sys файловой системы

Ядро выставляет некоторую информацию DMI в виртуальной файловой системе / sys.

Таким образом, мы можем легко получить тип машины, выполнив команду grep со следующим форматом.

В качестве альтернативы мы можем вывести только определенные детали, используя команду cat.

# cat /sys/class/dmi/id/board_vendor IBM # cat /sys/class/dmi/id/product_name System x2530 M4: -[1214AC1]- # cat /sys/class/dmi/id/product_serial MK2RL11 # cat /sys/class/dmi/id/bios_version -[VVE134MUS-1.50]-

Метод-5: Использование команды dmesg

Команда dmesg используется для записи сообщений ядра (загрузочных сообщений) в Linux до запуска syslogd или klogd.

Он получает свои данные, читая кольцевой буфер ядра. dmesg может быть очень полезен при устранении неполадок или просто пытается получить информацию об оборудовании в системе.

# dmesg | grep -i DMI DMI: System x2530 M4: -[1214AC1]-/00Y8494, BIOS -[VVE134MUS-1.50]- 08/30/2013

Метод-6: Использование команды hwinfo

hwinfo означает аппаратный информационный инструмент – еще одна полезная утилита, которая используется для проверки оборудования, присутствующего в системе, и отображения подробной информации о различных аппаратных компонентах в человекообразном формате.

Он сообщает информацию о процессоре, ОЗУ, клавиатуре, мыши, графической карте, звуке, памяти, сетевом интерфейсе, диске, разделе, биографии и мосту и т.д. Этот инструмент может отображать более подробную информацию среди других, таких как lshw, dmidecode, inxi , так далее,.

hwinfo использует библиотеку libhd libhd.so для сбора информации об оборудовании в системе. Этот инструмент, специально разработанный для системы openSUSE, позже других дистрибутивов, включил инструмент в свой официальный репозиторий.

# hwinfo | egrep "system.hardware.vendor|system.hardware.product" system.hardware.vendor = 'IBM' system.hardware.product = 'System x2530 M4: -[1214AC1]-'

Источник

Оцените статью
Adblock
detector