lobo
26-02-2003, 20:34
Hi,
ich versuche gerade zum Spass einen Portscanner mit der Bash und Telnet zu basteln.
Das eigentliche Problem ist nur hier:
# save target reply in SCAN
SCAN=`echo ${MSG} | telnet ${TARGET} ${SPORT} 1>/dev/null`
Von stderr(2), kommt bei einem offenen Port die Meldung "Connection closed by foreign host.". Leider werden aber nur Ausgaben von stdout in der Variablen $SCAN gespeichert. Wie kann ich die Ausgabe von stderr in der Variablen $SCAN speichern?
#!/bin/sh
# target host
TARGET=${1}
# start port
SPORT=${2}
# end port
EPORT=${3}
# send message to host
MSG="this is not a scan ;-)"
# target reply: port open message
TREP="Connection closed by foreign host."
while [ ! ${SPORT} -eq ${EPORT} ]; do
# save target reply in SCAN
SCAN=`echo ${MSG} | telnet ${TARGET} ${SPORT} 1>/dev/null`
# compare SCAN with TREP
if [ "${SCAN}" == "${TREP}" ]; then
echo "${SPORT} is open, on ${TARGET}!";
else
echo "${SPORT} is closed, on ${TARGET}!";
fi
# increment port
SPORT=`expr ${SPORT} + 1`
done;
gruss
Jochen
ich versuche gerade zum Spass einen Portscanner mit der Bash und Telnet zu basteln.
Das eigentliche Problem ist nur hier:
# save target reply in SCAN
SCAN=`echo ${MSG} | telnet ${TARGET} ${SPORT} 1>/dev/null`
Von stderr(2), kommt bei einem offenen Port die Meldung "Connection closed by foreign host.". Leider werden aber nur Ausgaben von stdout in der Variablen $SCAN gespeichert. Wie kann ich die Ausgabe von stderr in der Variablen $SCAN speichern?
#!/bin/sh
# target host
TARGET=${1}
# start port
SPORT=${2}
# end port
EPORT=${3}
# send message to host
MSG="this is not a scan ;-)"
# target reply: port open message
TREP="Connection closed by foreign host."
while [ ! ${SPORT} -eq ${EPORT} ]; do
# save target reply in SCAN
SCAN=`echo ${MSG} | telnet ${TARGET} ${SPORT} 1>/dev/null`
# compare SCAN with TREP
if [ "${SCAN}" == "${TREP}" ]; then
echo "${SPORT} is open, on ${TARGET}!";
else
echo "${SPORT} is closed, on ${TARGET}!";
fi
# increment port
SPORT=`expr ${SPORT} + 1`
done;
gruss
Jochen