سؤال

ووالبرنامج الذي أعمل على يفترض أن UUID التي تم إنشاؤها بواسطة API ويندوز RPC دعوة UuidCreateSequential) يحتوي على (عنوان MAC لمحول إيثرنت الأساسي. هل هذا الافتراض صحيح أو ينبغي أن تستخدم طريقة مختلفة للحصول على عنوان MAC؟

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

المحلول

وأود أن لا تعتمد على هذا - والسبب الوحيد الذي UuidCreateSequential يحتوي على عنوان MAC هو انها تحاول ضمان أن UUID هي فريدة من نوعها عبر الشبكة. بالإضافة إلى ذلك، لماذا استخدام مثل هذه الطريقة غريبة للحصول على عنوان MAC؟ استخدام WMI و<م> في الواقع تسأل عن عنوان MAC بدلا من الآثار الجانبية لوظيفة إنشاء UUID.

نصائح أخرى

ويبدو أن هذا الافتراض صحيحا. وثائق حول MSDN يقول على وجه التحديد هذا سوف تحتوي على عنوان إيثرنت البطاقة على الجهاز. أنه لا يذكر شيئا عن سيناريو بطاقة MULT لكن اختيار بطاقة الأولية يبدو أن هناك قفزة منطقية.

إذا كنت تكتب التعليمات البرمجية المدارة، وأود أن استخدام في NetworkInterface الطبقة وندعو GetAllNetworkInterfaces(). أو من التعليمات البرمجية C ++، استدعاء GetAdaptersInfo ، التي ما يستخدم تنفيذ المدارة.

وحتى لو UuidCreateSequential لا تعمل من أجل ذلك، انها طريقة غامضة جدا للحصول على المعلومات، ويخفي المشاكل المحتملة مثل الكمبيوتر وجود أكثر من محول واحد.

وفقط UUID النسخة 1 يحتوي على عنوان MAC، وفقط إذا كان المولد الأصلي الحصول على عنوان MAC لتبدأ. إذا كان مولد الأصلي لم يكن لديك الوصول إلى عنوان MAC، فإنه قد استخدمت 6 بايت عشوائية مصدرها مولد رقم عشوائي آمن مشفر، كما في القسم 4.5 من RFC 4122. وبسبب هذا، ليس هناك ما يضمن أن عنوان MAC معين في UUID هو في الواقع عنوان MAC.

في معظم الحالات، فإن السبب الوحيد لأي شخص أي وقت مضى الحاجة إلى تحليل الخروج عنوان MAC من UUID هو لأغراض الطب الشرعي. انظر على سبيل المثال UUIDs جزءا لا يتجزأ من وثيقة حمولة Word لفيروس ميليسا. استخراج المحققين عنوان MAC من هذه الهوية ومطابقة لعنوان MAC من محول الشبكة الأساسي المشتبه به.

إذا كنت تحاول الحصول على عنوان MAC لجهاز الكمبيوتر الخاص بك، وهناك طرق أفضل بكثير من الذهاب حول هذا الموضوع.

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