Jumlins TechBlog

The coding hell and the daily IT of Niklas Jumlin

September 17th, 2009 by Niklas Jumlin

I had a scenario where I wanted to see what was on the network at a location.

So I figured I’d just ping them all, man was this a pain or what! So I wrote a script for it instead. :)

And yes, I know there is alot of IP-scanners out there. But what hacker would I be if I used someone elses programs? I wanted my results in my own custom preferences.

The script was developed further on and now includes hostname lookup and logging to file with identification tags of the current place.
The script will ask all the necessary questions. Its quite useful. Check it out!

@echo off
: Copyright and program name
@set prog=PingTool
@set version=v2.2
@set author=Made by Niklas Jumlin - Copyright 2009-2010
 
: Set default variables
@for /f "Tokens=1" %%i in ('time /t') do @set tm=%%i
@for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do  @set dt=%%i%%j%%k%%l
@set tm=%tm::=.%
@set dtt=%dt% %tm%
@set stop=254
@color 0b
@set requests=2
@set timeout=200
@set trace=n
title %prog% %version%
echo %prog% %version%
echo %author%
 
: Start asking questions and store in variables
echo. 
echo Enter a name for this scan for easier identification, e.g Company Name
@set /p name=Name: 
cls
echo %prog% %version%
echo %author%
echo. 
echo Your current gateway is listed below:
ipconfig | find /i "gateway"
echo. 
echo Set what network segment you would like to scan, e.g 192.168.16
@set /p net=Net (default=none): 
cls
echo %prog% %version%
echo %author%
echo. 
echo Set IP-range stop
@set /p stop=Stop (default=254): 
cls
echo %prog% %version%
echo %author%
echo. 
echo Set number of requests sent per IP-number
@set /p requests=Requests (default=2): 
cls
echo %prog% %version%
echo %author%
echo. 
echo Set timeout (ms) for waiting for response
@set /p timeout=Timeout (default=200): 
cls
echo %prog% %version%
echo %author%
echo. 
echo Would you also like to lookup hostnames for %net%.1 - %net%.%stop%? (This may take a while)
echo. 
@set /p trace=(y/n) (default=n): 
if %trace%==y goto full
if %trace%==n goto fast
 
: Get to work
:fast
cls
echo %prog% %version%
echo %author%
echo %author% >> ipaddresses.txt
echo Scan started at: %dtt% >> ipaddresses.txt
echo Identification: %name% >> ipaddresses.txt
echo Trace=Off >> ipaddresses.txt
echo. >> ipaddresses.txt
echo. 
echo Trace=Off
echo. 
echo Scan started at: %dtt%
echo Pinging %net%.1 - %net%.%stop%
echo Canceling will result in incomplete results.
echo Results will be saved to ipaddresses.txt where the batch job is located.
echo. 
@FOR /L %%t IN (1,1,%stop%) DO title Now pinging: %net%.%%t & echo Now pinging: %net%.%%t & ping -w %timeout% -n %requests% %net%.%%t | find /i "TTL" && echo Found: %net%.%%t >> ipaddresses.txt
goto eof
 
:full
cls
echo %prog% %version%
echo %author%
echo %author% >> ipaddresses.txt
echo Scan started at: %dtt% >> ipaddresses.txt
echo Identification: %name% >> ipaddresses.txt
echo Trace=On >> ipaddresses.txt
echo. >> ipaddresses.txt
echo. 
echo Trace=On
echo. 
echo Scan started at: %dtt%
echo Pinging %net%.1 - %net%.%stop%
echo Canceling will result in incomplete results.
echo Results will be saved to ipaddresses.txt where the batch job is located.
echo. 
@FOR /L %%t IN (1,1,%stop%) DO title Now pinging: %net%.%%t & echo Now pinging: %net%.%%t & ping -w %timeout% -n %requests% %net%.%%t | find /i "TTL" && echo Found: %net%.%%t >> ipaddresses.txt && tracert -w %timeout% -h %requests% %net%.%%t | find " ms " >> ipaddresses.txt
goto eof
 
: Rearrange the date and time and set a completion date and time variable
:eof
@for /f "Tokens=1" %%c in ('time /t') do @set tc=%%c
@for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do  @set dc=%%i%%j%%k%%l
@set tc=%tc::=.%
@set dtc=%dc% %tc%
echo. >> ipaddresses.txt
echo Scan completed at: %dtc% >> ipaddresses.txt
echo. >> ipaddresses.txt
echo. 
echo Results saved to: %~dp0ipaddresses.txt
echo. 
goto quit
 
:quit
@pause
@exit
Share on Facebook

Leave a Reply