هذا الإجراء هو طريقة خاصة. نطاق الاستخدام محدود نسبيًا وهناك درجة معينة من الخطر. تعلمت بعض الأساليب من الباب الخلفي لآسيا والمحيط الهادئ. أدناه هو رمز البرنامج.
<%
خافت البعيدaddr
إذا كان Request.ServerVariables("HTTP_X_FORWARDED_FOR")=فارغًا إذن
Remoteaddr=Request.ServerVariables("REMOTE_ADDR")
آخر
Remoteaddr=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
النهاية إذا
Response.Write(GetMac(remoteaddr))
'بسبب قراءة عنوان MAC لبطاقة الشبكة لعنوان IP معين
'يقرأ هذا البرنامج عنوان MAC لعنوان IP محدد عن طريق استدعاء الأمر arp والاستعلام عن جدول arp المحلي.
'يرجى ملاحظة ما يلي عند استخدام هذا البرنامج:
'يتطلب هذا البرنامج مكونين: "WSCRIPT.SHELL" و"Scripting.FileSystemObject". يرجى التأكد من أن الخادم الخاص بك يمكنه استخدام هذين المكونين بشكل طبيعي.
' يحتاج هذا البرنامج إلى استدعاء برنامج cmd.exe، يرجى التأكد من أن حساب ضيف IIS لديه حقوق الوصول إلى البرنامج.
'يتطلب هذا البرنامج ملفات مؤقتة لحفظ النتائج. يرجى التأكد من أن حساب ضيف IIS لديه أذونات الكتابة في الدليل المؤقت.
'
وظيفة GetMac(IP)
على خطأ استئناف التالي
خافت النصي
خافت oFileSys، oFile
تعتيم الكل، szTempFile،ipc،phyc،typec
خافت TempPath
تعيين oScript = Server.CreateObject("WSCRIPT.SHELL")
تعيين oFileSys = Server.CreateObject("Scripting.FileSystemObject")
TempPath="d:temp" 'الدليل المؤقت
szTempFile = TempPath & oFileSys.GetTempName() 'احصل على اسم الملف المؤقت
اتصل بـ oScript.Run ("cmd.exe /c ping -n 2 " & IP, 0, True) 'تأكد من وجود عنوان IP هذا في جدول arp
استدعاء oScript.Run ("cmd.exe /c arp -a " & IP & " > " & szTempFile, 0, True)
تعيين oFile = oFileSys.OpenTextFile (szTempFile، 1، False، 0)
الكل=oFile.ReadAll()
oFile.Close
إذا (IsObject(oFile)) ثم
استدعاء oFileSys.DeleteFile(szTempFile, True)
نهاية إذا
آر = سبليت (الكل، vbCrLf)
إذا كان UBound(arr) = 4 إذن
ipc = InStr(1, arr(2), "عنوان الإنترنت")
phyc = InStr(1, arr(2), "العنوان الفعلي")
typec = InStr(1, arr(2), "النوع")
إذا typec > phyc و phyc > ipc و ipc > 0 ثم
GetMac=Ucase(Trim(CStr(Mid(arr(3), phyc, typec - phyc))))
نهاية إذا
نهاية إذا
وظيفة النهاية
%>