中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-24 07:47
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]局域网内MAC扫描 查看 4,647 回复 17
楼 主 [原创]局域网内MAC扫描 发表于 2008-04-02 22:03 ·  中国 广东 广州 海珠区 电信
初级用户
积分 29
发帖 14
注册 2007-05-22 04:46
19年会员
UID 88948
性别 男
状态 离线
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)))
MAC = UCase(Mid(StrHex,57*2+1+(B*18*2),6*2))
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))



下载:
http://upload.cn-dos.net/img/216.rar

[ Last edited by HAT on 2010-6-4 at 10:04 ]
2 发表于 2008-04-03 09:36 ·  中国 上海 电信
高级用户
★★★
积分 916
发帖 377
注册 2004-03-08 00:00
22年会员
UID 19523
性别 男
状态 离线
一直用lanhelper有机会试试LZ这个,3Q
3 发表于 2008-04-03 10:18 ·  中国 上海 电信
高级用户
★★★
积分 916
发帖 377
注册 2004-03-08 00:00
22年会员
UID 19523
性别 男
状态 离线
结果似乎不是很精确也不知道什么影响了

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 秒
4 发表于 2008-04-03 14:46 ·  中国 广东 电信
初级用户
积分 29
发帖 14
注册 2007-05-22 04:46
19年会员
UID 88948
性别 男
状态 离线
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))

再试一下。
5 发表于 2009-09-12 13:30 ·  中国 浙江 绍兴 电信
新手上路
积分 3
发帖 5
注册 2009-07-07 08:52
16年会员
UID 148905
性别 男
状态 离线
谢谢!
6 发表于 2009-09-13 10:46 ·  中国 重庆 电信
初级用户
★★
积分 92
发帖 82
注册 2007-11-13 23:35
18年会员
UID 102602
性别 男
状态 离线
大家可以试试用 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
7 发表于 2009-09-19 05:14 ·  中国 广东 江门 电信
初级用户
★★
积分 167
发帖 95
注册 2007-05-06 09:19
19年会员
UID 87628
性别 男
状态 离线
怎么我的一个都扫不出来呢~~~我们这一栋楼都同一个局域网里啊
8 发表于 2009-09-19 05:17 ·  中国 广东 江门 电信
初级用户
★★
积分 167
发帖 95
注册 2007-05-06 09:19
19年会员
UID 87628
性别 男
状态 离线
发现问题了~~原来我位的IP是196.168.212.*
9 求此贴附件,链接下载不了了! 发表于 2010-06-03 23:33 ·  中国 黑龙江 哈尔滨 电信
新手上路
积分 14
发帖 14
注册 2010-03-29 21:58
16年会员
UID 163361
性别 男
状态 离线
谁有这个贴中的附件啊!请发给我一份antony521@sina.com
就是VBS版MAC扫描器,需要安装MSWinsock...
附件中包含:
MSWINSCK(Setup).vbs---->MSWinsock安装
SCANMAC(Batch).vbs ---->扫描程序
谢谢!
10 Re 9 楼 发表于 2010-06-04 10:04 ·  新加坡
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
附件地址已修复
11 发表于 2010-06-06 22:17 ·  中国 北京 电信
初级用户
★★
积分 90
发帖 57
注册 2010-04-12 13:29
16年会员
UID 164386
性别 男
状态 离线
willsort
12 发表于 2010-06-06 22:17 ·  中国 北京 电信
初级用户
★★
积分 90
发帖 57
注册 2010-04-12 13:29
16年会员
UID 164386
性别 男
状态 离线
不好意思,发错了!
感谢分享!!!
13 发表于 2010-07-18 16:10 ·  中国 云南 昆明 电信
新手上路
积分 1
发帖 1
注册 2010-07-12 20:57
15年会员
UID 170479
性别 男
状态 离线
效率很高,扫描很快,缺点就是附件文件有错,得手动更新,否则MAC错得不成样子,建议改下附件,以方便以后下载的人。
14 发表于 2010-10-29 15:22 ·  中国 山东 潍坊 电信
初级用户
积分 21
发帖 16
注册 2010-10-24 18:42
15年会员
UID 176462
性别 男
状态 离线
也不错的哦!收藏了!
15 发表于 2010-10-29 16:49 ·  中国 甘肃 兰州 红古区 电信
初级用户
积分 24
发帖 18
注册 2007-04-01 11:09
19年会员
UID 83611
性别 男
状态 离线
我的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 ]
论坛跳转: