要求:
能够扫描本网内(局域网内)在线所有IP及MAC,并输出保存一个*.txt文件!!!
高手请出手!!!!
[ Last edited by ygzxw on 2006-12-28 at 04:05 PM ]
能够扫描本网内(局域网内)在线所有IP及MAC,并输出保存一个*.txt文件!!!
高手请出手!!!!
[ Last edited by ygzxw on 2006-12-28 at 04:05 PM ]
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
Originally posted by mackyliu at 2006-12-28 16:00:
软件都做不到,别说批处理了.局域网内用户要是根本没打开server服务,看你怎么弄
@echo off
for /l %%a in (1,1,254) do (
echo.&echo/&echo===================================>>list.txt
for /f "delims== tokens=2" %%i in ('nbtstat -a 192.168.1.%%a^|find "MAC Address"') do echo %%i------------192.168.1.%%a >>list.txt
)
pause
notepad.exe list.txt
goto :eof
@echo off
for /l %%a in (1,1,254) do (
echo.&echo/&echo===================================>>list.txt
for /f "delims== tokens=2" %%i in ('nbtstat -a 192.168.0.%%a^|find "MAC Address"') do echo %%i------------192.168.0.%%a >>list.txt
)
pause
notepad.exe list.txt
goto :eof
Originally posted by lxmxn at 2006-12-28 04:30 PM:
内网IP是什么打头的?不是192.168.1.……之类的么?
Originally posted by lxmxn at 2006-12-28 04:32 PM:
再试试:
@echo off
for /l %%a in (1,1,254) do (
echo.&echo/&echo===================================>>list.txt
for /f "deli ...
@echo off
set/p=>list.txt<nul
for /l %%a in (1,1,254) do (
echo.&echo.
for /f "delims== tokens=2" %%i in ('nbtstat -A 192.168.0.%%a^|find "MAC Address"') do (
echo==========================>>list.txt
echo %%i=======192.168.0.%%a >>list.txt
)
)
pause
start list.txt
goto :eof
@echo off
arp -d
for /l %%i in (0,1,128) do ping 192.168.1.%%i -n 1 >nul
arp -a >11.txt
arp -d
for /l %%i in (128,1,255) do ping 192.168.1.%%i -n 1 >nul
arp -a >>11.txt
arp -d
@ECHO %dbg% OFF
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=1" %%i in ('net view') do (
SET COMPUTERNAME=%%i
CALL :CNAME
)
:CNAME
IF NOT %COMPUTERNAME:~0,2%==\\ GOTO :EOF
SET COMPUTERNAME=%COMPUTERNAME:~2%
FOR /F "skip=1 tokens=4" %%j in ('nbtstat -a %COMPUTERNAME%^|FINDSTR /I MAC') do (
ECHO %COMPUTERNAME% %%j
)
GOTO :EOF
PING虽然也可以判断对方机器是否在线,不过成功率实在不敢恭维,效率也差的要命,还是用ARP好些,不过使用他的人一定要注意他的网段是192.168.1.0-192.168.1.255这个大家根据自己的情况改好了,不过运行速度不是太快,可能是PING给延误的,不过确实很实用的,大概解释一下,有人会问了,为什么你不直接把整段IP给FOR运行呢,我昨天试验了下,那样有些不准,所以分两段运行了,具体为什么不准这个我也不是很清楚,对于有防火墙的情况也是适用的,对屏蔽了ICMP包的机器也是适用的,因为他一定还给一个MAC地址给源计算机的,所以请大家放心使用就是了.
Originally posted by tghksj at 2006-12-30 10:25:
re lxmxn
-----------------------
net view得到"计算机名"列表
nbtstat -a "计算机名" 得到 MAC
------------------------
@ECHO %dbg% OFF
setlocal ENAB ...
net view :
--------------
服务器名称 注释
-------------------------------------------------------------------------------
\\GS
\\SERVER
\\T06
\\T11
\\T13
\\T14
\\T16
\\T18
\\T19
\\T20
\\T22
\\T23
\\T24
\\T25
\\T27
\\T28
\\T29
\\T34
\\T46
\\T49
\\T50
\\T51
\\T52
\\T53
\\T54
\\T60
命令成功完成。
--------------------------------------------
nbtstat -a T06:
---------------------------
本地连接:
Node IpAddress: Scope Id:
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
T06 <00> UNIQUE Registered
K <00> GROUP Registered
T06 <20> UNIQUE Registered
K <1E> GROUP Registered
MAC Address = 00-E0-4C-10-44-49
Originally posted by ygzxw at 2006-12-28 04:12 PM:
这儿不让传图!!!发不了


@echo %dbg% off
setlocal enabledelayedexpansion
for /f "tokens=1 delims=\" %%i in ('net view^|find "\\"') do (
call :cname %%i
)
pause
goto :eof
:cname
for /f "tokens=2 delims==" %%j in ('nbtstat -a %1^|find "MAC Address"') do (
echo %1_%%j
)
goto :eof
Originally posted by qzwqzw at 2006-12-30 05:06 PM:
arp -a 显示的并非路有表,而是ARP缓存表
前者是网络层的数据结构
后者是通过发送arp广播消息建立的,是个典型的数据链路层数据结构
数据链蠮..
@echo off
FOR /F "tokens=4-7 delims=. " %%i IN ('ipconfig^|find /i "ip address"') do set i1=%%i&set i2=%%j&set i3=%%k&set i4=%%l
FOR /F "tokens=4-7 delims=. " %%i IN ('ipconfig^|find /i "subnet"') do set m1=%%i&set m2=%%j&set m3=%%k&set m4=%%l
if "%m2%" == "0" (set b=1&set bb=254) else set b=%i2%&set bb=%i2%
if "%m3%" == "0" (set c=1&set cc=254) else set c=%i3%&set cc=%i3%
echo.>mac.dat
for /l %%b in (%b%,1,%bb%) do (
for /l %%c in (%c%,1,%cc%) do (
for /l %%d in (1,1,20) do (
ping -l 1 -w 1 -n 1 -i 1 %i1%.%%b.%%c.%%d>nul
arp -a %i1%.%%b.%%c.%%d|find "%i1%.%%b.%%c.%%d"|findstr "static dynamic">>mac.dat
set /p=%%d <nul)
)
)
echo.
type mac.dat
pause
@ECHO OFF
set dataA=0 128 192 224 240 248 252 254 255
set ier=输入错误! key:
set con=999
if not "%1" == "" (set con=1&&set go=des) else goto int
if not "%1" == "" echo %1|find ".">nul&&set go=int
goto %go%
:int
cls
if %con% equ 1 (set mask=%1&&set con=0) else set /p mask=MASK:
:chk1
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=1-4 delims=." %%a in ("%mask%") do if %%a lss 128 (cls&echo %mask% %ier%1 %%a^>128&goto int) else set m_1=%%a&set m_2=%%b&set m_3=%%c&set m_4=%%d
for /f "tokens=2,3 delims==_" %%i in ('set m_') do echo %%j|findstr /v /b /e "%dataA%"&&cls&&echo %mask% %ier%2&&echo 第%%i段 %%j&&goto int
set /a _tmp1=%m_1%+%m_2%+%m_3%+%m_4%
set /a _tmp2=4
:chk2
set /a _tmp3=!m_%_tmp2%!
if not "%_tmp3%" == "0" (echo.) else set /a _tmp2=%_tmp2%-1&&goto chk2
set /a _tmp4=%_tmp1%-%_tmp3%
set /a _tmp5=%dataA:~-3%*(%_tmp2%-1)
if %_tmp4% == %_tmp5% (goto next) else echo %mask% %ier%3&goto int
:next
set /a des1=%_tmp2%*8-8
if "%_tmp3%" == "%dataA:~2,3%" set des2=1
if "%_tmp3%" == "%dataA:~6,3%" set des2=2
if "%_tmp3%" == "%dataA:~10,3%" set des2=3
if "%_tmp3%" == "%dataA:~14,3%" set des2=4
if "%_tmp3%" == "%dataA:~18,3%" set des2=5
if "%_tmp3%" == "%dataA:~22,3%" set des2=6
if "%_tmp3%" == "%dataA:~26,3%" set des2=7
if "%_tmp3%" == "%dataA:~30,3%" set des2=8
set /a des=%des1%+%des2%
echo MASK:%mask%=%des%
ENDLOCAL
goto end
:des
cls
if "%1" == "mask" set con=0
if %con% equ 1 (set mask=%1&&set con=0) else set /p mask=MASK:
:ce
echo %mask%|find "- ."&&cls&&echo %mask% %ier%1&&goto des
set /a mask1=%mask%/8
set /a mask2=%mask%%%8
set /a chk=%mask1%+%mask2%
if %chk% gtr 0 (if %chk% gtr 4 (cls&&echo %mask% %ier%2&&goto des)) else cls&&echo %mask% %ier%3&&goto des
set s1=0&set s2=0&set s3=0&set s4=0&set s5=%mask1%
if "%mask1%" == "0" (set s0=%mask%&&goto ct) else set s0=%mask2%
:cf
set s%s5%=255
set /a s5=%s5%-1
if not "%s5%" == "0" goto cf
:ct
if "%s0%" == "0" set s=%dataA:~0,1%
if "%s0%" == "1" set s=%dataA:~2,3%
if "%s0%" == "2" set s=%dataA:~6,3%
if "%s0%" == "3" set s=%dataA:~10,3%
if "%s0%" == "4" set s=%dataA:~14,3%
if "%s0%" == "5" set s=%dataA:~18,3%
if "%s0%" == "6" set s=%dataA:~22,3%
if "%s0%" == "7" set s=%dataA:~26,3%
if "%s0%" == "8" set s=%dataA:~30,3%
set /a _tmp=%mask1%+1
set s%_tmp%=%s%
echo %mask%=%s1%.%s2%.%s3%.%s4%
:end
pause>nul
exit
Originally posted by everest79 at 2006-12-30 10:45 PM:
不能确定缓存刷新时间,万一PING时间长了,可能就刷掉了,还有我说256是指静态MAC,也就是绑定的,非绑定的没条件测试
1,1,20是我在本地测试时填的 ...
@echo off
arp /d
FOR /L %%i IN (1,1,255) Do start /b ping 192.168.1.%%i -n 1 -w 0 >nul
arp /a | find "dynamic">IP.txt
type ip.txt
pause