تحديد فريد من أجهزة الكمبيوتر بناءً على البرامج/الأجهزة

StackOverflow https://stackoverflow.com/questions/3636115

سؤال

للحصول على شرط لإنشاء مفاتيح ترخيص لكل PC ، أحتاج إلى بعض التعليمات البرمجية التي ستعيد مفتاحًا فريدًا مستقرًا و (بالقرب) على أي جهاز كمبيوتر. لا لديك لضمان فريدة من نوعها ، ولكن قريبة. هو - هي يفعل يجب أن تكون مستقرة بشكل معقول ، بحيث يولد جهاز كمبيوتر معين دائمًا نفس النتيجة ما لم يتم تغيير الجهاز بشكل كبير.

هذا مخصص لتطبيق Windows ، باستخدام WXWidgets ولكن Win32 أو خيار آخر جيد.

كنت أفكر في عنوان MAC ولكن ماذا عن أجهزة الكمبيوتر المحمولة التي يمكنها تعطيل بطاقة الشبكة بشكل روتيني في وضع توفير الطاقة؟ جئت عبر getCurrenthwprofile لكن هذا لا يبدو مثل ما أريد؟

هل كانت مفيدة؟

المحلول

أود فقط الذهاب مع طريقة عنوان MAC ؛ عند إيقاف تشغيل بطاقات اللاسلكية / الشبكة المحلية ، لا تزال تظهر في اتصالات الشبكة. لذلك يجب أن تكون قادرًا على الحصول على جهاز Mac.

ضع في اعتبارك هذا: في أي وقت تتمكن من الاتصال بخادم الويب الخاص بك أو أي شيء تقوم بتصنيفه مع هذه المعرفات ، سيذهب المستخدم لديك للحصول على شكل من أشكال بطاقة الشبكة المتاحة.

أوه ، وقد تكون قادرًا على استخدام العدد التسلسلي لوحدة المعالجة المركزية لجهاز كمبيوتر العميل يدعمه.

نصائح أخرى

إحدى الأفكار التي كان لدي بعض الوقت لاستخدام هذا الأمر cryptprotectdata كوسيلة لتحديد الجهاز. وراء الكواليس في API ، فعلت Microsoft ما تبحث عنه. لم أختبرها أبدًا وأنا أشعر بالفضول إذا كان قابلاً للتطبيق بالفعل.

في الأساس ، يمكنك تشفير قيمة سحرية ثابتة CryptProtectData مع CRYPTPROTECT_LOCAL_MACHINE, ، والنتيجة هي معرف الجهاز الخاص بك.

إذا كنت تريد شيئًا أصعب قليلاً مما يمكن أن يخبرك به الجهاز نفسه ، فربما تحتاج إلى توفير دونجل USB مخصص لهذا الغرض (وليس مجرد محرك أقراص فلاش).

ماذا عن استخدام الرقم التسلسلي للمصادقة حيث يتم تثبيت Windows؟

الوظيفة getVolumeInformation () سوف يعطيك هذا الرقم التسلسلي. للوصول إلى المعرف الذي تم تعيينه بواسطة بائع HardDisk بدلاً من المعرف المعين بواسطة Windows ، يمكنك استخدام فئة Win32_PhysicalMedia.

لتحديد محرك الأقراص حيث يتم تثبيت Windows ، يمكنك توسيع المتغير ٪ Windir "باستخدام الوظيفة ExployenVironmentStrings ()

هناك خيار آخر ، إذا سمحت بنيةك ، وهو استخدام UUIDCreate () لإنشاء GUID عشوائي في وقت التثبيت وحفظه بشكل دائم في السجل. يمكن بعد ذلك استخدام GUID هذا كمعرف طالما بقي التسجيل. تعتبر قاعدة بيانات التسجيل الجديدة عمومًا بمثابة تثبيت جديد.

الخيار الثالث هو أن يكون لديك خادم معروف يعين المعرفات. عند البدء ، يمكن أن يبحث البرنامج عن المعرف في السجل وإذا لم يتم العثور عليه ، فسيقوم بالاتصال بالخادم وتزويده بعنوان MAC ، اسم المضيف ، الرقم التسلسلي الصلب ، الجهاز SID وأي عدد من المعلومات غير المستقرة (المفاتيح).

ثم يحدد الخادم ما إذا كان العميل مسجلًا بالفعل أم لا بناءً على المعلومات الواردة. يمكن أن يكون لدى الخادم سياسة مريحة ، وعلى سبيل المثال لا يتطلب سوى معظم مفاتيح المباراة ، بحيث تعمل الآلية حتى في حالة القضاء الكامل من السجل وإذا كان جزء (ولكن ليس كل) من الأجهزة استبدال.

أعتقد أنه لا يوجد طريقة سهلة وفريدة من نوعها حتى الآن تم اكتشافها هنا.

  1. GetVolumeInformation لا يسترجع حتى معرف فريد .....
  2. يعد استخدام أي مسلسل للأجهزة مشكلة لأن المصنوعات غير ملتزمة بدعمها دائمًا وخاصة للحفاظ عليها فريدة من نوعها على مستوى العالم
  3. GetCurrenthwprofile يسترجع GUID ولكن القيمة تتأثر بالقاصر! تغييرات الأجهزة ...
  4. باستخدام مفتاح المنتج ... سيجلب لك التعامل مع البرنامج المسروق - هناك الكثير من عمليات تثبيت القراصنة على العالم.
  5. لن يمنع إنشاء GUID الخاص والاحتفاظ به تحت السجل (في أي مكان) التكرار عن طريق استنساخ الصورة ....
    إلخ ... من وجهة نظري للعرض ، فإن أفضل طريقة هي الجمع: معرف الصوت + قائمة MAC + MACHER SID + اسم الجهاز. ومن الواضح إدارة سياسة الترخيص على جانب الخادم ؛ 0)

تحياتي ميكل.

بالنسبة للاختبار الميت الجميل في الدماغ ، أستخدم الرمز الإنتاجي لنظام التشغيل واسم الكمبيوتر - كلاهما مستخرج من السجل. ليس آمنًا حقًا ، ولكن كل شيء يتظاهر على أي حال.

تعديل

للإجابة على سؤال جون حول المفاتيح التي أقرأها:

software microsoft windows nt currentversion productID

System CurrentControlset Control ComputerName ComputerName ComputerName

ماذا عن استخدام العدد التسلسلي لمهاججة وحدة المعالجة المركزية. أتذكر أن Microsoft اعتدت على توفير واجهة برمجة تطبيقات لهذا من شأنها تشغيل رمز التجميع اللازم وتمنحك كل أنواع المعلومات حول وحدة المعالجة المركزية بما في ذلك الرقم التسلسلي. لست متأكدًا مما إذا كانت ستعمل مع رقائق AMD أم لا ، أعتقد أنها كانت محددة.

بالتأكيد معرف وحدة المعالجة المركزية آمنة وثابتة بدرجة كافية !!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top