سؤال

سؤال: يجب أن أتوصل إلى معرف فريد لكل عميل متصل بالشبكة ، بحيث:

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

القليل من التفسير وبعض القصص الخلفية:

هذا السؤال هو في الأساس سؤال قديم يمس أيضًا موضوع حماية نسخ البرمجيات ، حيث تم ذكر بعض الآليات المستخدمة في هذا المجال هنا. يجب أن أكون واضحًا في هذه المرحلة أنني لا أبحث عن نظام حماية نسخ. من فضلك ، اقرأ. قون

أنا أعمل على برنامج خادم عميل من المفترض أن يعمل في شبكة محلية. واحدة من المشكلات التي يجب علي حلها هي تحديد كل عميل فريد في الشبكة (وليس مشكلة كبيرة) ، حتى أتمكن زبون.

بينما كنت أبحث عن حل ، كنت على دراية بما يلي:

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

سيكون الخيار الواضح لهذا النوع من المشكلات هو اكتشاف معرفات BIOS (ليست متأكدة بنسبة 100 ٪ إذا كان هذا فريدًا من خلال نماذج اللوحة الأم المتطابقة ، على الرغم من ذلك) ، لأن هذا هو الشيء الوحيد الذي يمكنني الاعتماد عليه على ذلك غير مكرر ، أو نقله عن طريق الاستنساخ ، وهذا لا يمكن تغييره (على الأقل ليس باستخدام برنامج مساحة المستخدم). كل شيء آخر يفشل إما أنه غير موثوق (استنساخ MAC ، أي شخص؟) ، أو يتطلب أيضًا (من حيث أنه حساس للغاية لتغييرات التكوين).

السؤال الفرعي الذي أود أن أسأله هو ، هل أفعل ذلك بشكل صحيح ، من الناحية المعمارية؟ ربما هناك أداة أفضل للمهمة التي يجب أن أنجزها ...

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

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

المحلول

يبدو لي أنه يجب عليك بناء المعرف الفريد الذي يتوافق مع متطلباتك. يمكن بناء هذا المعرف على أنه أ التجزئة (مثل MD5 أو SHA1 أو SHA512) من المعلومات المهمة بالنسبة لك (بعض المعلومات حول مكون البرامج ومكون الأجهزة).

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

نصائح أخرى

ما تبحث عنه هو Windows WMI. يمكنك الحصول على معرف اللوحة الأم (التي هو فريدة من نوعها عبر نفس النوع من اللوحة الأم) أو العديد من الأنواع الأخرى من المعرفات الفريدة والتوصل إلى بعض الوظائف البذرة الذكية لتوليد UHID. قف هل قمت بتكوين اختصار؟

وإذا كنت تبحث خصيصًا للحصول على معرف اللوحة الأم (BIOS):

WMI class: Win32_BIOS
Namespace: \Root\Cimv2

توثيق: http://msdn.microsoft.com/en-us/library/aa394077(vs.85).aspx
عينة من الرموز: http://msdn.microsoft.com/en-us/library/aa390423٪28vs.85٪29.aspx

تعديل: لم تحدد لغة (وافترضت C ++) ، ولكن يمكن القيام بذلك في Java (مع برنامج تشغيل com) ، وأي لغة .NET ، أيضًا.

تستخدم العديد من البرامج المضيفة من أجل إنشاء رمز ترخيص (مثل تلك القائمة على FlexLM). إلقاء نظرة على ما يفعله Matlab اعتمادًا على النظام الجراحي:

http://www.mathworks.com/support/solutions/en/data/1-171pi/index.html

إلقاء نظرة أيضًا على هذا السؤال:

الحصول على معرف فريد من نظام يشبه UNIX

بمجرد أن رأيت أيضًا بعض البرامج التي تستند إلى تراخيصها على العدد التسلسلي للمحرك الصلب ، ربما يكون هذا هو الشيء الأقل احتمالًا للتغيير. قد يقترح البعض استخدام MAC لبطاقة Ethernet الخاصة بك ، ولكن يمكن إعادة برمجتها.

ماك
لا تعتمد على ماك! أبدًا. انها ليست دائمة. يمكن للمستخدم تغييره بسهولة (أقل من 30 ثانية).

معرف الصوت
لا تعتمد على معرف الصوت! أبدًا. انها ليست دائمة. يمكن للمستخدم تغييره بسهولة. كما أنه يتغير ببساطة عن طريق تنسيق محرك الأقراص.

WMI
WMI هي خدمة. يمكن تعطيلها بسهولة. في الواقع ، لقد جربت ذلك واكتشفت أنه على العديد من أجهزة الكمبيوتر أو تعطلها (نعم ، في كثير من الأحيان مكسورة).

خادم الترخيص
قد يتسبب الاتصال بخادم التحقق من الصحة في الكثير من المشاكل لأن:
* قد لا يكون عملاؤك دائمًا متصلين بالإنترنت.
* يجوز لعملائك الاتصال بإعدادات خاصة (جهاز التوجيه/NAT/Proxy/Gateway) الذين يحتاجون إلى إدخاله في برنامجك للسماح له بالاتصال بخادم التحقق من الصحة.
* قد يكونون وراء جدار الحماية من شأنه حظر جميع البرامج باستثناء عدد قليل (حالتي). في بعض الحالات ، قد لا يكون جدار الحماية تحت سيطرته (صالح لمعظم مستخدمي الشركات)!
* أنه سوبر سهل لإعادة توجيه برنامجك إلى خادم ويب مزيف محلي يحاكي خادم الترخيص الخاص بك.

بيانات الأجهزة
إذا كنت بحاجة إلى حماية قوية ، فأنت بحاجة إلى الاعتماد على الأجهزة. شيء لا يمكن تحريره من قبل المستخدم. شيء مثل تعليمات معرف وحدة المعالجة المركزية المتوفرة في وحدة المعالجة المركزية Intel/AMD والرقم التسلسلي المكتوب في واجهة IDE الخاصة بمحرك الأقراص.
معرف وحدة المعالجة المركزية ومعرف HDD دائم. لن يتغيروا أبدًا ، ولا حتى بعد تنسيق الكمبيوتر وإعادة تثبيت Windows.

إنه قابل للتنفيذ. علي سبيل المثال هذه المكتبة يقرأ معرف الأجهزة لجهاز الكمبيوتر. هناك عرض تجريبي وأيضًا Sourcecode/DLL. إخلاء المسئولية: الرابط يؤدي إلى منتج تجاري (19 يورو/لا إتاوات).

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