#!/bin/bash if [ $# -ne 3 ]; then echo "Usage: ./nmap-christmas-tree.sh <host> <opened-port> <closed-port>" echo -e "\nopened-port\t- A TCP port number that is known to be opened/listening, e.g. 443" echo -e "closed-port\t- A TCP port number that is known to be closed, e.g. 44444" echo exit 1 fi HOST=$1 PORT1=$2 PORT2=$3 OPTS="-Pn -T4" function scan { opts=$@ echo "Trying $opts..." out=$(sudo nmap "$OPTS" -p $PORT1,$PORT2 $opts $HOST | grep -E "$PORT1|$PORT2") num=$(echo "$out" | awk '{print $2}' | uniq | wc -l) if [[ $num == 2 ]]; then echo echo "== DISCREPANCY occured on: $opts" echo -e "NMAP:\tsudo nmap "$OPTS" -p $PORT1,$PORT2 $opts $HOST" echo "$out" echo fi } scan -sS scan -sT scan -sA scan -sW scan -sM scan -sN scan -sF scan -sX scan --scanflags SYN scan --scanflags SYNACK scan --scanflags SYNFIN scan --scanflags SYNPSH scan --scanflags SYNRST scan --scanflags SYNURG scan --scanflags URG scan --scanflags URGACK scan --scanflags URGFIN scan --scanflags URGPSH scan --scanflags URGRST scan --scanflags PSH scan --scanflags PSHACK scan --scanflags PSHFIN scan --scanflags PSHRST scan --scanflags ACK scan --scanflags ACKFIN scan --scanflags ACKRST scan --scanflags RST scan --scanflags RSTFIN scan --scanflags FIN scan -sS -f scan -sT -f scan -sA -f scan -sW -f scan -sM -f scan -sN -f scan -sF -f scan -sX -f scan --scanflags SYN -f scan --scanflags SYNACK -f scan --scanflags SYNFIN -f scan --scanflags SYNPSH -f scan --scanflags SYNRST -f scan --scanflags SYNURG -f scan --scanflags URG -f scan --scanflags URGACK -f scan --scanflags URGFIN -f scan --scanflags URGPSH -f scan --scanflags URGRST -f scan --scanflags PSH -f scan --scanflags PSHACK -f scan --scanflags PSHFIN -f scan --scanflags PSHRST -f scan --scanflags ACK -f scan --scanflags ACKFIN -f scan --scanflags ACKRST -f scan --scanflags RST -f scan --scanflags RSTFIN -f scan --scanflags FIN -f scan -sS -f --badsum scan -sA -f --badsum scan -sW -f --badsum scan -sM -f --badsum scan -sN -f --badsum scan -sF -f --badsum scan -sX -f --badsum scan --scanflags SYN -f --badsum scan --scanflags SYNACK -f --badsum scan --scanflags SYNFIN -f --badsum scan --scanflags SYNPSH -f --badsum scan --scanflags SYNRST -f --badsum scan --scanflags SYNURG -f --badsum scan --scanflags URG -f --badsum scan --scanflags URGACK -f --badsum scan --scanflags URGFIN -f --badsum scan --scanflags URGPSH -f --badsum scan --scanflags URGRST -f --badsum scan --scanflags PSH -f --badsum scan --scanflags PSHACK -f --badsum scan --scanflags PSHFIN -f --badsum scan --scanflags PSHRST -f --badsum scan --scanflags ACK -f --badsum scan --scanflags ACKFIN -f --badsum scan --scanflags ACKRST -f --badsum scan --scanflags RST -f --badsum scan --scanflags RSTFIN -f --badsum scan --scanflags FIN -f --badsum scan -sS --badsum scan -sA --badsum scan -sW --badsum scan -sM --badsum scan -sN --badsum scan -sF --badsum scan -sX --badsum scan --scanflags SYN --badsum scan --scanflags SYNACK --badsum scan --scanflags SYNFIN --badsum scan --scanflags SYNPSH --badsum scan --scanflags SYNRST --badsum scan --scanflags SYNURG --badsum scan --scanflags URG --badsum scan --scanflags URGACK --badsum scan --scanflags URGFIN --badsum scan --scanflags URGPSH --badsum scan --scanflags URGRST --badsum scan --scanflags PSH --badsum scan --scanflags PSHACK --badsum scan --scanflags PSHFIN --badsum scan --scanflags PSHRST --badsum scan --scanflags ACK --badsum scan --scanflags ACKFIN --badsum scan --scanflags ACKRST --badsum scan --scanflags RST --badsum scan --scanflags RSTFIN --badsum scan --scanflags FIN --badsum scan -sS --mtu 16 scan -sA --mtu 16 scan -sW --mtu 16 scan -sM --mtu 16 scan -sN --mtu 16 scan -sF --mtu 16 scan -sX --mtu 16 scan --scanflags SYN --mtu 16 scan --scanflags SYNACK --mtu 16 scan --scanflags SYNFIN --mtu 16 scan --scanflags SYNPSH --mtu 16 scan --scanflags SYNRST --mtu 16 scan --scanflags SYNURG --mtu 16 scan --scanflags URG --mtu 16 scan --scanflags URGACK --mtu 16 scan --scanflags URGFIN --mtu 16 scan --scanflags URGPSH --mtu 16 scan --scanflags URGRST --mtu 16 scan --scanflags PSH --mtu 16 scan --scanflags PSHACK --mtu 16 scan --scanflags PSHFIN --mtu 16 scan --scanflags PSHRST --mtu 16 scan --scanflags ACK --mtu 16 scan --scanflags ACKFIN --mtu 16 scan --scanflags ACKRST --mtu 16 scan --scanflags RST --mtu 16 scan --scanflags RSTFIN --mtu 16 scan --scanflags FIN --mtu 16 scan -sS --mtu 65528 scan -sT --mtu 65528 scan -sA --mtu 65528 scan -sW --mtu 65528 scan -sM --mtu 65528 scan -sN --mtu 65528 scan -sF --mtu 65528 scan -sX --mtu 65528 scan --scanflags SYN --mtu 65528 scan --scanflags SYNACK --mtu 65528 scan --scanflags SYNFIN --mtu 65528 scan --scanflags SYNPSH --mtu 65528 scan --scanflags SYNRST --mtu 65528 scan --scanflags SYNURG --mtu 65528 scan --scanflags URG --mtu 65528 scan --scanflags URGACK --mtu 65528 scan --scanflags URGFIN --mtu 65528 scan --scanflags URGPSH --mtu 65528 scan --scanflags URGRST --mtu 65528 scan --scanflags PSH --mtu 65528 scan --scanflags PSHACK --mtu 65528 scan --scanflags PSHFIN --mtu 65528 scan --scanflags PSHRST --mtu 65528 scan --scanflags ACK --mtu 65528 scan --scanflags ACKFIN --mtu 65528 scan --scanflags ACKRST --mtu 65528 scan --scanflags RST --mtu 65528 scan --scanflags RSTFIN --mtu 65528 scan --scanflags FIN --mtu 65528