mirror of https://github.com/tLDP/LDP
68 lines
1.9 KiB
Bash
68 lines
1.9 KiB
Bash
#! /bin/sh
|
|
## Duplicate DaveG's ident-scan thingie using netcat. Oooh, he'll be p*ssed.
|
|
## Args: target port [port port port ...]
|
|
## Hose stdout _and_ stderr together.
|
|
##
|
|
## Advantages: runs slower than ident-scan, giving remote inetd less cause
|
|
##+ for alarm, and only hits the few known daemon ports you specify.
|
|
## Disadvantages: requires numeric-only port args, the output sleazitude,
|
|
##+ and won't work for r-services when coming from high source ports.
|
|
# Script author: Hobbit <hobbit@avian.org>
|
|
# Used in ABS Guide with permission.
|
|
|
|
# ---------------------------------------------------
|
|
E_BADARGS=65 # Need at least two args.
|
|
TWO_WINKS=2 # How long to sleep.
|
|
THREE_WINKS=3
|
|
IDPORT=113 # Authentication "tap ident" port.
|
|
RAND1=999
|
|
RAND2=31337
|
|
TIMEOUT0=9
|
|
TIMEOUT1=8
|
|
TIMEOUT2=4
|
|
# ---------------------------------------------------
|
|
|
|
case "${2}" in
|
|
"" ) echo "Need HOST and at least one PORT." ; exit $E_BADARGS ;;
|
|
esac
|
|
|
|
# Ping 'em once and see if they *are* running identd.
|
|
nc -z -w $TIMEOUT0 "$1" $IDPORT || \
|
|
{ echo "Oops, $1 isn't running identd." ; exit 0 ; }
|
|
# -z scans for listening daemons.
|
|
# -w $TIMEOUT = How long to try to connect.
|
|
|
|
# Generate a randomish base port.
|
|
RP=`expr $$ % $RAND1 + $RAND2`
|
|
|
|
TRG="$1"
|
|
shift
|
|
|
|
while test "$1" ; do
|
|
nc -v -w $TIMEOUT1 -p ${RP} "$TRG" ${1} < /dev/null > /dev/null &
|
|
PROC=$!
|
|
sleep $THREE_WINKS
|
|
echo "${1},${RP}" | nc -w $TIMEOUT2 -r "$TRG" $IDPORT 2>&1
|
|
sleep $TWO_WINKS
|
|
|
|
# Does this look like a lamer script or what . . . ?
|
|
# ABS Guide author comments: "Ain't really all that bad . . .
|
|
#+ kinda clever, actually."
|
|
|
|
kill -HUP $PROC
|
|
RP=`expr ${RP} + 1`
|
|
shift
|
|
done
|
|
|
|
exit $?
|
|
|
|
# Notes:
|
|
# -----
|
|
|
|
# Try commenting out line 30 and running this script
|
|
#+ with "localhost.localdomain 25" as arguments.
|
|
|
|
# For more of Hobbit's 'nc' example scripts,
|
|
#+ look in the documentation:
|
|
#+ the /usr/share/doc/nc-X.XX/scripts directory.
|