penetration programming Modify your .sh program to accept an optional command-line argument -t, followed by a space and an additional numerical argument, which sets the timeout value for the echo command in the portcheck function. The argument must come before the hostname and start and stop ports. If the argument is not given, the timeout should remain at a default value of 2. If the argument is given, in addition to changing the timeout, the script should print out an informational message “Timeout changed to ”. For example, ./portscanner.sh -t 3 www.yahoo.com 40 80 should change the default timeout for each write to /dev/tcp to 3 seconds. Note: adding this feature will also require you to change the way you scan and save the command line arguments for hostnames. The number and place of command line arguments will now vary depending on whether the user uses the ’-t’ option or not. You will have to add program logic to account for this, so that everything works correctly in either case. .sh program #!/bin/bash # bash port scanner # get the host to scan from the command line host=$1 startport=$2 stopport=$3 function pingcheck { # run a ping command and scrape its output to see if it succeeded pingresult=$(ping -c 1 $host | grep bytes | wc -l) if [ "$pingresult" -gt 1 ] then echo "$host is up" else echo "$host is down, quitting" exit fi } function portcheck { for ((counter=$startport; counter <= $stopport; counter++)) do if timeout 2 bash -c "echo > /dev/tcp/$host/$counter" then echo "$counter is open" else echo "$counter is closed" fi done } pingcheck portcheck
penetration
Modify your .sh program to accept an optional command-line argument -t, followed by a space and an additional numerical argument, which sets the timeout value for the echo command in the portcheck function. The argument must come before the hostname and start and stop ports. If the argument is not given, the timeout should remain at a default value of 2. If the argument is given, in addition to changing the timeout, the script should print out an informational message “Timeout changed to <value>”.
For example, ./portscanner.sh -t 3 www.yahoo.com 40 80 should change the default timeout for each write to /dev/tcp to 3 seconds.
Note: adding this feature will also require you to change the way you scan and save the command line arguments for hostnames. The number and place of command line arguments will now vary depending on whether the user uses the ’-t’ option or not. You will have to add program logic to account for this, so that everything works correctly in either case.
.sh program
#!/bin/bash
# bash port scanner
# get the host to scan from the command line
host=$1
startport=$2
stopport=$3
function pingcheck
{
# run a ping command and scrape its output to see if it succeeded
pingresult=$(ping -c 1 $host | grep bytes | wc -l)
if [ "$pingresult" -gt 1 ]
then
echo "$host is up"
else
echo "$host is down, quitting"
exit
fi
}
function portcheck
{
for ((counter=$startport; counter <= $stopport; counter++))
do
if timeout 2 bash -c "echo > /dev/tcp/$host/$counter"
then
echo "$counter is open"
else
echo "$counter is closed"
fi
done
}
pingcheck
portcheck
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 4 images