#!/bin/ksh ############################################################# # # NSSCAN: scans a b or c class ip range for names # # Chuck Geigner: Nov 12, 2001 # # Copyleft 2001. Distribute this script in its entirety as # you wish, keeping all attributions and source available # freely and without charge, in accordance with the LGPL. # see here: http://www.gnu.org/licenses/lgpl.txt # # 27May03: added whois scan, helpfile and speed control VER="0.1.4 alpha" VERSTR="nsscan Ver. $VER.\ (c) Chuck Geigner, http://chux0r.org" USAGE="\nUsage: \tnsscan -[B|C] ipaddr [-s [/path/file]] \n\ OR: \tnsscan -[d|h] --(use nsscan -h for help)--" USAGE2="\nExamples: \n\ To scan the C class range of IP's 10.5.60.0 (technically, CIDR 10.5.60.0/24):\n\ \t$ nsscan -c 10.5.60.0&\n\ To review the results of the scan:\n\ \t$ nsscan -d\n" # Speeds: 1=slow/complete 2=med/med 3=fast SPEED=1 OUTFILE="/tmp/nsscan.log" if [ "$1" = "-display" -o "$1" = "-d" -o "$1" = "--display" ]; then if [ ! -f $OUTFILE ]; then echo "$OUTFILE: File not found." exit else more $OUTFILE exit fi elif [ "$1" = "-help" -o "$1" = "-h" -o "$1" = "--help" ]; then echo $USAGE echo $USAGE2 exit fi if [ $# -lt 2 ]; then echo "nsscan needs 2 args. " echo $USAGE exit fi if [ ! -f /usr/bin/nslookup -o ! -f /bin/nslookup ]; then echo "Missing prerequisite: nslookup" exit fi Q1=`echo $2 | cut -d. -f1` Q2=`echo $2 | cut -d. -f2` Q3=`echo $2 | cut -d. -f3` Q4=`echo $2 | cut -d. -f4` if [ $# -gt 2 ]; then if [ "$3" = "-save" -o "$3" = "-s" ]; then if [ $# -eq 4 ]; then OUTFILE="$4" elif [ $# -gt 4 ]; then echo "extraneous values given:\c" CT=$# set -A ARGS "$@" while [ $CT -gt 3 ] do CT=`expr $CT - ${SPEED}` echo ${ARGS[$CT]} done echo "\n\c" exit else echo "Enter name of output file: \c" read OUTFILE fi fi fi cat /dev/null > $OUTFILE echo ${VERSTR} >> $OUTFILE if [ "$1" = "-B" -o "$1" = "-b" ]; then Q4=255 Q3=255 echo "scanning B-class network $Q1.$Q2.0.0..." whois -h whois.arin.net $Q1.$Q2.0.0 2> /dev/null >> $OUTFILE while [ $Q3 -ge 0 ] do while [ $Q4 -ge 0 ] do VAR=`nslookup $Q1.$Q2.$Q3.$Q4 2> /dev/null |\ grep -v ddress |\ grep -v Server|\ cut -d: -f2|\ sed "s/ //g"` echo "$VAR $Q1.$Q2.$Q3.$Q4\c" >> $OUTFILE Q4=`expr $Q4 - ${SPEED}` done Q4=255 Q3=`expr $Q3 - ${SPEED}` done echo "nsscan $Q1.$Q2.0.0 scan complete." exit elif [ "$1" = "-C" -o "$1" = "-c" ]; then Q4=0 echo "scanning C-class network $Q1.$Q2.$Q3.0..." whois -h whois.arin.net $Q1.$Q2.$Q3.0 2> /dev/null >> ${OUTFILE} while [ $Q4 -le 255 ] do VAR=`nslookup $Q1.$Q2.$Q3.$Q4 2> /dev/null |\ grep -v ddress |\ grep -v Server |\ cut -d: -f2 |\ sed "s/ //g" 2> /dev/null` if [ -n "$VAR" ]; then echo "$VAR\t\t$Q1.$Q2.$Q3.$Q4\c" >> $OUTFILE fi Q4=`expr $Q4 + ${SPEED}` done echo "nsscan $Q1.$Q2.$Q3.0 scan complete." exit else echo $USAGE exit fi