Skip to content

Instantly share code, notes, and snippets.

@jayliew
Created March 9, 2021 04:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jayliew/7c0a829f8dd2e639d809cf2da2f4bcf5 to your computer and use it in GitHub Desktop.
Save jayliew/7c0a829f8dd2e639d809cf2da2f4bcf5 to your computer and use it in GitHub Desktop.
network scan script using nc
#!/bin/bash
echo "First 3 IP octets: "
read net
echo "Start IP (last octet): "
read start_octet
echo "End IP (last octet): "
read end_octet
echo "[b]readth (a few ports) or [d]epth (large port range) port scan? Enter 'b' or 'd': "
read bdport
# default port list
bp_arr=(21 22 23 25 53 80 8080)
if [ -z $bdport ] || [[ $bdport == "b" ]] ; then
bdport="b" # default to breadth
elif [[ $bdport == "d" ]] ; then
echo "Start port: "
read sport
echo "End port: "
read eport
fi
echo "IP addr direction. 'r' for reverse. Enter for default (sequential): "
read direction
if [ -z $direction ] ; then
:
elif [[ $direction == "r" ]] ; then
tmp_octet=$start_octet
start_octet=$end_octet
end_octet=$tmp_octet
fi
if [[ $bdport == "b" ]] ; then
outfile="nc_${net}.${start_octet}-${end_octet}_bports"
elif [[ $bdport == "d" ]] ; then
outfile="nc_${net}.${start_octet}-${end_octet}_ports_${sport}-${eport}"
fi
echo "Output: $outfile"
echo "Scan range: $net .$start_octet - $end_octet"
for ((i=$start_octet; $i <=$end_octet; i++))
do
if [[ $(($i % 10)) == 0 ]]; then
echo "Scanning $net.$i ..."
fi
if [ -z $bdport ] || [[ $bdport == "b" ]] ; then
for bport in "${bp_arr[@]}"; do
nc -nvzw 1 $net.$i $bport 2>&1 | grep -E '[Oo]pen|[Ss]ucce' >> $outfile
done
elif [[ $bdport == "d" ]] ; then
for ((p=$sport; p <= $eport; p++))
do
nc -nvzw 1 $net.$i $p 2>&1 | grep -E '[Oo]pen|[Ss]ucce' >> $outfile
done
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment