ขั้นตอนนี้เป็นวิธีการพิเศษ ขอบเขตการใช้งานค่อนข้างจำกัดและมีอันตรายระดับหนึ่ง เรียนรู้วิธีบางอย่างจากประตูหลังของ asp ด้านล่างเป็นรหัสโปรแกรม
-
เพิ่มระยะไกลสลัว
ถ้า 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 guest มีสิทธิ์เข้าถึงโปรแกรม
' โปรแกรมนี้ต้องใช้ไฟล์ชั่วคราวเพื่อบันทึกผลลัพธ์ โปรดตรวจสอบให้แน่ใจว่าบัญชี IIS guest มีสิทธิ์ในการเขียนในไดเร็กทอรีชั่วคราว
-
ฟังก์ชั่น GetMac(IP)
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
สลัวสคริปต์
Dim oFileSys, oFile
หรี่ทั้งหมด, szTempFile,ipc,phyc,typec
Dim 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, จริง)
ตั้งค่า oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0)
ทั้งหมด=oFile.ReadAll()
oFile.ปิด
ถ้า (IsObject(oFile)) แล้ว
โทร oFileSys.DeleteFile (szTempFile, True)
สิ้นสุดถ้า
arr = แยก (ทั้งหมด, 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(ตัดแต่ง(CStr(กลาง(arr(3), phyc, typec - phyc))))
สิ้นสุดถ้า
สิ้นสุดถ้า
สิ้นสุดฟังก์ชัน
-