سؤال

أعلم أنه يمكننا الحصول على عنوان MAC الخاص بالمستخدم عبر IE (كائنات ActiveX).

هل هناك طريقة للحصول على عنوان MAC الخاص بالمستخدم باستخدام JavaScript؟

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

المحلول

أتفق مع جميع الإجابات السابقة على أنها ستكون ثغرة أمنية/خصوصية إذا تمكنت من القيام بذلك مباشرة من Javascript.هناك شيئان يمكنني التفكير فيهما:

  • استخدام Java (مع تطبيق صغير موقّع)
  • استخدام Javascript الموقع، والذي يحصل في FF (وموزيلا بشكل عام) على امتيازات أعلى من JS العادي (لكن إعداده معقد إلى حد ما)

نصائح أخرى

الجواب السريع والبسيط هو لا.

تعد Javascript لغة عالية المستوى ولا يمكنها الوصول إلى هذا النوع من المعلومات.

لا، لا يمكنك الحصول على عنوان MAC في JavaScript، ويرجع ذلك أساسًا إلى أن عنوان MAC يعرّف الكمبيوتر قيد التشغيل بشكل فريد، لذا قد يكون هناك ثغرة أمنية.

الآن، إذا كان كل ما تحتاجه هو معرف فريد، أقترح عليك إنشاء معرف بنفسك باستخدام بعض خوارزميات التشفير وتخزينه في ملف تعريف الارتباط.

إذا كنت تريد حقًا معرفة عنوان MAC الخاص بالكمبيوتر وتقوم بالتطوير للتطبيقات الداخلية، فأنا أقترح عليك استخدام مكون خارجي للقيام بذلك:ActiveX لـ IE، وXPCOM لـ Firefox (مثبت كملحق).

لا.السبب وراء قدرة ActiveX على القيام بذلك هو أن ActiveX هو تطبيق صغير يتم تشغيله على جهاز العميل.

أتصور أن الوصول إلى هذه المعلومات عبر JavaScript سيكون بمثابة ثغرة أمنية.

إذا كان هذا خاصًا بتطبيق إنترانت وكان جميع العملاء يستخدمون DHCP، فيمكنك الاستعلام عن خادم DHCP لعنوان MAC لعنوان IP محدد.

كنت أبحث عن نفس المشكلة وعثرت على الكود التالي.

كيفية الحصول على عنوان MAC للعميل (الويب):

للحصول على عنوان MAC الخاص بالعميل، الطريقة الوحيدة هي الاعتماد على JavaScript والتحكم Active X في Microsoft. وهو يعمل فقط في IE إذا تم تمكين Active X لـ IE.نظرًا لأن ActiveXObject غير متوفر مع Firefox، فهو لا يعمل مع Firefox ويعمل بشكل جيد في IE.

هذا البرنامج النصي مخصص لـ IE فقط:

<script language="javascript" type="text/javascript">
    function showMacAddress() {
        var obj = new ActiveXObject("WbemScripting.SWbemLocator");
        var s = obj.ConnectServer(".");
        var properties = s.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
        var e = new Enumerator(properties);
        var output;
        output = '<table border="0" cellPadding="5px" cellSpacing="1px" bgColor="#CCCCCC">';
        output = output + '<tr bgColor="#EAEAEA"><td>Caption</td><td>MACAddress</td></tr>';
        while (!e.atEnd()) {
            e.moveNext();
            var p = e.item();
            if (!p) continue;
            output = output + '<tr bgColor="#FFFFFF">';
            output = output + '<td>' + p.Caption; +'</td>';
            output = output + '<td>' + p.MACAddress + '</td>';
            output = output + '</tr>';
        }
        output = output + '</table>';
        document.getElementById("box").innerHTML = output;
    }
</script>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top