Board logo

标题: [原创]局域网内MAC扫描 [打印本页]

作者: densn     时间: 2008-4-2 22:03    标题: [原创]局域网内MAC扫描
NbtstatPacket = toByte("000000000001" &_
		"00000000000020434b" &_
		"4141414141414141" &_
		"4141414141414141" &_
		"4141414141414141" &_
		"4141414141410000210001")

DIM WSTATE,ip,HOST,MAC,NSTATE
Set Winsock = Wscript.CreateObject("MSWinsock.Winsock","sck_")
Winsock.Protocol = 1
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objFile = FSO.OpenTextFile(fso.GetBaseName(WScript.ScriptName) & ".txt", 2,True)
BeginTimer = Timer()

objFile.WriteLine "IPAddress" & vbTab & "Host" & vbTab & "MAC"
objFile.WriteLine String(39,"-")

For i = 1 To 254
	NSTATE = True
	HOST = "":MAC = ""
	ip = "192.168.1." & i
	CALL Nbtstat(ip)
	If NSTATE Then
		objFile.WriteLine ip & vbTab & HOST & vbTab & MAC
	End If
Next

EndTimer = Timer()
TimeSpan_Send = EndTimer - BeginTimer
TimeSpan=CStr(Round(TimeSpan_Send, 4))

objFile.WriteLine String(39,"-")
objFile.WriteLine "用时:" & TimeSpan & " 秒"
Wscript.echo "用时:" & TimeSpan & " 秒"

Function Nbtstat(ip)
	Winsock.RemoteHost = ip
	Winsock.RemotePort = 137
	Winsock.SendData NbtstatPacket
	Dim WAIT
	WSTATE = False
	While WAIT < 2 AND Not WSTATE
  		Wscript.Sleep 15
		WAIT = WAIT + 1
	Wend
	If WAIT=2 Then
		NSTATE = False
		'objFile.WriteLine Winsock.state & " - 超时退出!"
	End If
End Function

Sub sck_DataArrival(ByVal bytesTotal)
	On Error Resume Next
	Winsock.GetData RevData
	If Err.Number = 0 Then
		toHex RevData
	Else
		'NSTATE = False
		HOST = "Host not found."
	End If
	Err.Clear
	WSTATE = True
	Winsock.Close
End Sub

Function toByte(data)
	set xml_dom = CreateObject("Microsoft.XMLDOM")
	set l_node = xml_dom.createElement("byte")
	l_node.dataType = "bin.hex"
	l_node.Text = data
	toByte = l_node.nodeTypedvalue
End Function

Function toHex(data)
	set xml_dom = CreateObject("Microsoft.XMLDOM")
	set l_node = xml_dom.createElement("byte")
	l_node.dataType = "bin.hex"
	l_node.nodeTypedvalue = data
	StrHex = l_node.Text
	B = Eval("&H" & Mid(StrHex,56*2+1,1*2))
	HOST = Trim(Hex2Ascii(Mid(StrHex,57*2+1,15*2)))
	[u]MAC  = UCase(Mid(StrHex,57*2+1+(B*18*2),6*2))[/u]
End Function

Function Hex2Ascii(strHex)
	dim i
	for i = 1 To Len(strHex) Step 2
		Hex2Ascii = Hex2Ascii & Chr(Eval("&H" & Mid(strHex, i, 2)))
	Next
End Function
VBS版MAC扫描器,需要安装MSWinsock... 附件中包含: MSWINSCK(Setup).vbs---->MSWinsock安装 SCANMAC(Batch).vbs ---->扫描程序 扫描结果: IPAddress Host MAC --------------------------------------- 192.168.1.1 Host not found. 192.168.1.2 PC-08 00E04C87C737 192.168.1.254 PC-01 00E04C87C106 --------------------------------------- 用时:8.875 秒 附件内文件有误请自行修改一下: MAC = UCase(Mid(StrHex,57*2+1+(6*18*2),6*2)) 改为 MAC = UCase(Mid(StrHex,57*2+1+(B*18*2),6*2)) 下载: upload.cn-dos.net/img/216.rar [ Last edited by HAT on 2010-6-4 at 10:04 ]

作者: dato     时间: 2008-4-3 09:36
一直用lanhelper有机会试试LZ这个,3Q

作者: dato     时间: 2008-4-3 10:18
结果似乎不是很精确也不知道什么影响了 IPAddress Host MAC --------------------------------------- 192.168.1.8 fds 00E04C89679C 192.168.1.16 sfsaf 000000000000 192.168.1.20 YDXZ-22440CCF9B 000000000000 192.168.1.93 64195B64EF644E4 000000000000 192.168.1.101 BBS-EDC335B81EF 000000000000 192.168.1.145 fdsfds 000AE6889133 192.168.1.146 vcx 000000000000 192.168.1.187 BBS-091597F9D12 000000000000 192.168.1.252 wefds 000000000000 --------------------------------------- 用时:10.5352 秒

作者: densn     时间: 2008-4-3 14:46
Originally posted by dato at 2008-4-3 10:18 AM: 结果似乎不是很精确也不知道什么影响了 IPAddress Host MAC --------------------------------------- 192.168.1.8 fds 00E04C89679C 192.168.1.16 sfsaf 000000000000 192.168.1.20 YD ...
修改一下: MAC = UCase(Mid(StrHex,57*2+1+(6*18*2),6*2)) 改为 MAC = UCase(Mid(StrHex,57*2+1+(B*18*2),6*2)) 再试一下。

作者: sunxh     时间: 2009-9-12 13:30
谢谢!

作者: provem     时间: 2009-9-13 10:46
大家可以试试用 nbtscan 获取,快捷又准备 nbtscan 论坛里有下载 arp -d>nul 2>nul&nbtscan 192.168.0.1/24>nul 2>nul&arp -a|find /v "00-00-00-00-00-00"|find /v ":"|find "-" >>%tmp%\online.txt

作者: ldr2zjj     时间: 2009-9-19 05:14
怎么我的一个都扫不出来呢~~~我们这一栋楼都同一个局域网里啊

作者: ldr2zjj     时间: 2009-9-19 05:17
发现问题了~~原来我位的IP是196.168.212.*

作者: antony521     时间: 2010-6-3 23:33    标题: 求此贴附件,链接下载不了了!
谁有这个贴中的附件啊!请发给我一份antony521@sina.com 就是VBS版MAC扫描器,需要安装MSWinsock... 附件中包含: MSWINSCK(Setup).vbs---->MSWinsock安装 SCANMAC(Batch).vbs ---->扫描程序 谢谢!

作者: HAT     时间: 2010-6-4 10:04    标题: Re 9 楼
附件地址已修复

作者: yonghu111     时间: 2010-6-6 22:17
willsort

作者: yonghu111     时间: 2010-6-6 22:17
不好意思,发错了! 感谢分享!!!

作者: whomwhom     时间: 2010-7-18 16:10
效率很高,扫描很快,缺点就是附件文件有错,得手动更新,否则MAC错得不成样子,建议改下附件,以方便以后下载的人。

作者: lmlz41     时间: 2010-10-29 15:22
也不错的哦!收藏了!

作者: sunhai1979     时间: 2010-10-29 16:49
我的IP范围不是192.168.1.*,怎么修改啊? 不好意思找到了,For i = 1 To 254 NSTATE = True HOST = "":MAC = "" ip = "192.200.209." & i CALL Nbtstat(ip) If NSTATE Then 在这儿修改!!! [ Last edited by sunhai1979 on 2010-10-29 at 16:55 ]

作者: weilu     时间: 2010-11-15 12:03
谢谢,楼上各位。很实用的脚本。

作者: sohu     时间: 2010-12-4 18:01
只能扫到同一工作组的电脑、、 有什么办法可以全部扫到呢?谢~

作者: waywu     时间: 2010-12-13 12:31
挺有趣的