Obtenir le numéro de série de votre ordinateur ???
Je cherche à disposer d’un numéro de série de machine unique.
C’est la grande magie de l’informatique moderne, des blogs et des forums de l’Internet de nous expliquer comment faire sans jamais rien y comprendre ! De toute façon, les gens qui en parlent le plus sont en général ceux qui en savent le moins.
La commande dmidecode va vous permettre de connaître le numéro de série issue de la lecture des informations liées au BIOS :
dmidecode -s system-serial-number
Code source de la commande dmidecode
Vous excuserez ma fainéantise relative à ne pas prendre le temps de déchiffrer le code source de la commande dmidecode. J’ai pourtant fait beaucoup de C dans ma jeunesse. ;+) J’adore cette infinie capacité des développeurs des logiciels Open Source à ne jamais rien expliquer de la manière dont ils codent leurs logiciels, sans y mettre le moindre commentaire. J’avais pourtant appris qu’un code agrémenté de commentaires valait une documentation. Il serait peut-être temps de leur foutre de vraies paires de baffes, hein ? ;+)
static const struct string_keyword opt_string_keyword[] = { ... { "system-serial-number", 1, 0x07 }, ...
Et les firmware UEFI ?
La question est de savoir si dmidecode marche encore pour les firmware UEFI, sachant que cette commande est née quelque part entre la fin des années 1990 et le début des années 2000. En tout cas, sur mon système Windows de ma machine de bureau, la commande disponible en version 2.1, datant de 2004, me renvoie ceci :
To Be Filled By O.E.M.
Ça sent le sapin !
Alternative : le CPUID ?
Après avoir testé différentes machines, j’ai vu qu’on pouvait obtenir le CPUID. Il s’agit, en fait, d’une identification du type de processeur :
dmidecode -t processor|grep ID
Sous Windows, vous obtiendrez le même numéro à l’aide de la commande, dans un ordre un peu différent :
wmic cpu get ProcessorId
Alors, la MAC Address ?
La MAC Address associée à la carte réseau est sensée être unique. Sous Linux, vous pouvez taper la commande suivante :
dmesg|grep IRQ|grep -Po "[0-9a-f:]"{17}
Je pense que je vais partir pour la MAC Address.