Kann / Warum eine Festplatte Seriennummer ändern

Unsere Anti-Piraterie-Software identifiziert Menschen nach ihrer Festplatte Serial. Ich glaube, ist ein konstantes Merkmal und wird sich nicht ändern, es sei denn, der Benutzer ändert seine primäre physische Laufwerk – korrigieren Sie mich, wenn ich mich irre? Wir verwenden das WMI Python-Modul, um die Benutzer-Festplatten-Seriennummer zu erhalten.

Für 2 unserer Testcomputer hat sich die Seriennummer des Festplattenlaufwerks geändert. Aber wir haben ihre Festplatte überhaupt nicht verändert.

Was könnte ein solches Problem verursachen? Ist unser Code, der die serielle nicht vollständig über Windows-Betriebssysteme identifiziert? Ich habe bemerkt, dass dieser Beitrag erwähnt, dass Sie die falsche Serie erhalten können, wenn ein Standardbenutzerprozess die Seriennummer abruft. Aber in unserem Fall ist der Fehler auch bei einem Admin-Benutzer aufgetreten.

Einige wichtige Informationen:

  • Beide Testknoten führen Windows 8 Professional aus
  • Ein Computer ist ein Toshiba Laptop
  • Der andere Computer ist ein Acer Iconia Tablet
  • Das Tablet wurde vor kurzem von Windows 8 auf Windows 8.1 aktualisiert und ich bemerkte, dass die serielle nach diesem Update geändert wurde
  • Der Laptop hat einen Admin-Benutzer, der das Problem erlebt hat. Die Tablette hat einen Standardbenutzer, der das Problem erlebt hat.

Ist auch die Festplatten-Seriennummer die MAC-Adresse des Hardwaregeräts oder etwas anderes?

Code zum Erhalten der Festplatte Seriennummer:

 c = wmi.WMI() for item in c.Win32_PhysicalMedia(): if "PHYSICALDRIVE" in str(item.Tag).upper(): serialNo = item.SerialNumber break 

Bearbeiten: Ein kurzes Skript, das eine Benutzer-Festplatten-Seriennummer als normaler Prozess und als erhöhter / admin-Prozess abruft.

Hinweis: Für mich gibt es genau die gleiche Seriennummer aus, egal wie ein Benutzer oder als Admin. Ist das Skript das auch für dich?

 import os import sys import wmi import win32com.shell.shell as shell ASADMIN = 'asadmin' def get_elevated_privleges(): if sys.argv[-1] != ASADMIN: script = os.path.abspath(sys.argv[0]) params = ' '.join([script] + sys.argv[1:] + [ASADMIN]) shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.executable, lpParameters=params) def get_hard_drive_serial(): c = wmi.WMI() for item in c.Win32_PhysicalMedia(): if "PHYSICALDRIVE" in str(item.Tag).upper(): return str(item.SerialNumber) return None print "HD Serial as Regular User: " + get_hard_drive_serial() get_elevated_privleges() print "HD Serial as Admin User: " + get_hard_drive_serial() 

2 Solutions collect form web for “Kann / Warum eine Festplatte Seriennummer ändern”

Ich weiß, das ist ein bisschen ein alter Thread, aber ich habe gerade das gleiche Problem, mit der Seriennummer des Laufwerks als Schlüssel. Ich dachte, es wäre gut, meine Erkenntnisse irgendwo zu dokumentieren.

Eine Sache, die ich bemerkte, war, dass irgendwo zwischen Windows 7 und Windows 8.1, scheint es eine Änderung in, wie die WMI-Routinen zurückgeben die Laufwerk Seriennummer.

Ich habe einige Charaktere ausgelöscht.

 Windows 10 reports: [S21D********04F] Windows 8.1 reports: [S21D********04F] Windows 7 reports: [2SD1********40 F] 

Es scheint, dass W7 und unten nicht Byte-Swapping der Drive Info.

Unsere Anti-Piraterie-Software identifiziert Menschen nach ihrer Festplatte Serial. Ich glaube, ist ein konstantes Merkmal und wird sich nicht ändern, es sei denn, der Benutzer ändert seine primäre physische Laufwerk – korrigieren Sie mich, wenn ich mich irre?

Bei normalem Gebrauch sollte sich die Seriennummer nicht ändern, aber es ist für einen Benutzer möglich, ihn zu ändern, wenn sie versuchen, Ihre Anti-Piraterie-Technik zu umgehen. Sehen Sie hier für eine Liste von Werkzeugen, die dies tun , auf Menschen, die versuchen, Anti-Cheat-Systeme in Spielen zu umgehen. So müssen Sie überlegen, ob die Festplatten-Seriennummer "gut genug" ist, um die meisten Leute davon abzuhalten, Ihre Software zu verwässern.

Was könnte ein solches Problem verursachen? Ist unser Code, der die serielle nicht vollständig über Windows-Betriebssysteme identifiziert?

Forum Themen Beiträge Letzter Beitrag Die Ergebnisse variieren je nach Windows-Version, ob der Code als Admin ausgeführt wird oder nicht, und ob die Win32_PhysicalMedia Klasse verwendet wird oder die Win32_DiskDrive Klasse. Scheint ziemlich unzuverlässig, müssen Sie vielleicht Ihre eigene Abstraktionsschicht schreiben, um es selbst zu behandeln, wie in diesen Forenbeiträgen beschrieben.

Ich habe es selbst versucht und festgestellt, dass ich zwei verschiedene Seriennummern je nach admin vs normal und Win32_PhysicalMedia vs Win32_DiskDrive :

 VB38bb50ab-0de50c12 

und

 42563833626230356261302d6564303531632032 

Beachten Sie, dass die zweite Zeichenfolge tatsächlich eine hex-codierte und byte-umgekehrte Version des ersten Strings ist! Vielleicht passiert dir das auch?

Ist die Festplatte Seriennummer die MAC-Adresse des Hardware-Gerätes oder etwas anderes?

Eine MAC-Adresse (Media Access Control) bezieht sich nur auf Netzwerkschnittstellen, nichts mit Festplatten. Die Seriennummer des Festplattenlaufwerks ist eine beliebige Zeichenfolge, die vom Festplattenhersteller festgelegt wurde – es kann alles sein und hat nur Bedeutung für den Hersteller, es könnte sogar leer sein, wenn der Hersteller es nicht implementiert.

Python ist die beste Programmiersprache der Welt.