:: xarescan 0.1.a :: radix (at) ironik.org :: ===================== @echo off :: setting localenv and defaults :: ============================= :: CHANGE THIS :: =========== set defstartip= set defendip= :: DO NOT TOUCH ANYTHING ELSE :: ========================== setlocal :: table header :: ============ echo IP Address MAC Address Resources Name > scan.txt echo ..................................................................... >> scan.txt :: autoscan (finds lan ip address and scan ip range) :: ================================================= if NOT "%defstartip%" == "" goto skipautoscan for /F "tokens=2 delims=:" %%i in ('ipconfig ^| find "IP Address"') do set myip=%%i for /F "tokens=1,2,3 delims=. " %%i in ("%myip%") do set iprange=%%i.%%j.%%k set rngstart=1 set rngend=254 set startip=%iprange%.1 set endip=%iprange%.254 goto interface :: uses defined range if set :: ========================= :skipautoscan set startip=%defstartip% set endip=%defendip% for /F "tokens=1,2,3 delims=." %%i in ("%startip%") do set iprange=%%i.%%j.%%k for /F "tokens=4 delims=." %%i in ("%startip%") do set rngstart=%%i for /F "tokens=4 delims=." %%i in ("%endip%") do set rngend=%%i :: specify ip range :: ================ :interface echo xarescan 0.1.a (c) 2004 radix echo. set /P ifacestartip="Start IP Address [%startip%]: " if "%ifacestartip%" == "" goto usedefinedstart for /F "tokens=1,2,3 delims=." %%i in ("%ifacestartip%") do set iprange=%%i.%%j.%%k for /F "tokens=4 delims=." %%i in ("%ifacestartip%") do set rngstart=%%i :usedefinedstart set /P ifaceendip="End IP Address [%endip%]: %iprange%." if "%ifaceendip%" == "" goto usedefinedend set endip=%iprange%.%ifaceendip% set rngend=%ifaceendip% :usedefinedend set this=1 for /L %%a IN (%rngstart%,1,%rngend%) DO call :PING %%a :PING setlocal :: stats stuff :: =========== set /A this=%1-%rngstart% set /A totrange=%rngend%-%rngstart% set /A perc=%this%*100/%totrange% cls echo progress: %perc% %% - output: scan.txt type scan.txt :: if it finds "reply" let's check it's name e shares :: ================================================== ping -n 1 -w 3 %iprange%.%1 | find "Reply" > nul if %ERRORLEVEL% == 0 call :NOME %1 if %ERRORLEVEL% == 1 goto :EOF goto :EOF :: getting name and mac address :: ============================ :NOME setlocal set tmpname=unknown set tmpmac=00-00-00-00-00-00 for /F "tokens=3 delims== " %%i in ('nbtstat -a %iprange%.%1 ^| find "MAC Address ="') do set tmpmac=%%i for /F "tokens=1 delims=^< " %%i in ('nbtstat -a %iprange%.%1 ^| find "<00> UNIQUE"') do set tmpname=%%i call :SHAR %1 goto :EOF :: and checking for shares :: ======================= :SHAR setlocal net view \\%iprange%.%1 > nul cls if %ERRORLEVEL% == 2 goto error net view \\%iprange%.%1 | find "Shared" > nul if %ERRORLEVEL% == 0 set resrc=Share if NOT %ERRORLEVEL% == 0 set resrc=Empty goto message :error set resrc=Error :message for /L %%a in (1,1,9) do if %1 == %%a set alignspc= : for /L %%a in (10,1,99) do if %1 == %%a set alignspc= : for /L %%a in (100,1,255) do if %1 == %%a set alignspc= : echo %iprange%.%1 %alignspc% %tmpmac% : %resrc% : %tmpname% >> scan.txt goto :EOF :end