From db6fa300a469ea52ae759ba104b60f52b177beb1 Mon Sep 17 00:00:00 2001 From: jc Date: Sat, 19 Apr 2025 23:48:49 +0300 Subject: [PATCH] added a functionality to look for common ports across a subnet --- portradar.sh | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/portradar.sh b/portradar.sh index 08a1b7f..b608e72 100755 --- a/portradar.sh +++ b/portradar.sh @@ -26,12 +26,14 @@ pp(){ } ir(){ - h1=$1; h2=$2 - s1=$3; s2=$4 + [[ ! $p3 ]] && { h1=$1; h2=$2; s1=$3; s2=$4; } + [[ $p3 ]] && { h1=$1; h2=$2; h3=$3; s1=$4; s2=$5; s3=$6; } [[ $((${#s1} % 2)) != 0 ]] && s1="${s1} " [[ $((${#s2} % 2)) != 0 ]] && s2="${s2} " + [[ $p3 ]] && { [[ $((${#s3} % 2)) != 0 ]] && s3="${s3} "; } echo -n "|"; while ((${#s1}<$p1)); do s1=" ${s1} "; done; echo -n "${s1}"; echo -n "|" - while ((${#s2}<$p2)); do s2=" ${s2} "; done; [[ $colour ]] && cg_color $colour "${s2}" || echo -n "${s2}"; echo -n "|"; echo + while ((${#s2}<$p2)); do s2=" ${s2} "; done; [[ $colour ]] && cg_color $colour "${s2}" || echo -n "${s2}"; [[ ! $p3 ]] && echo "|" || echo -n "|" + [[ $p3 ]] && { while ((${#s3}<$p3)); do s3=" ${s3} "; done; [[ $colour ]] && cg_color $colour "${s3}" || echo -n "${s3}"; echo -n "|"; echo; } } pt(){ @@ -102,16 +104,20 @@ scan_tcp(){ ms(){ [[ $FORCE == true ]] && return - [[ $swing -eq 0 ]] && { for ((c=0; c<45; c++)); do echo -n "-"; done; echo; + [[ $swing -eq 0 ]] && { for ((c=0; c<96; c++)); do echo -n "-"; done; echo; p1=22 p2=20 - ir "Subnet" "Number of Hosts" "Subnet" "Number of Hosts" - ir "Subnet" "Number of Hosts" " - - - - - - - - - - " " - - - - - - - - - "; } + p3=50 + ir "Subnet" "Number of Hosts" "Open Ports" "Subnet" "Number of Hosts" "Open Ports" + ir "Subnet" "Number of Hosts" "Open Ports" " - - - - - - - - - - " " - - - - - - - - - " " - - - - - - - - - - - - - - - - - - - - - - - - "; } local colour="olbg" if [[ ${bytes[3]} == 255 ]]; then - wait; [[ -f /tmp/ips ]] && { live=$(sed -n '$=' /tmp/ips); live_count["total"]=$((live_count["total"]+$live)); } || live=0 - ir "Subnet" "Number of Hosts" "${bytes[0]}.${bytes[1]}.${bytes[2]}.1/24" "$live" - [[ $live -eq 0 ]] && { UP='\033[1A'; printf "$UP"; } + wait; [[ -f /tmp/ips ]] && { live=($(&1 -vv | grep -i "open" | cut -d " " -f3 | tr "\n" " "); do keyports[$port]=$((${keyports[$port]}+1)); done; done + out=$(for port in ${!keyports[@]}; do [[ ${keyports[$port]} -ne 0 ]] && echo -n "${port}(${keyports[$port]}) "; done) + ir "Subnet" "Number of Hosts" "Open Ports" "${bytes[0]}.${bytes[1]}.${bytes[2]}.1/24" "${#live[@]}" "$out" + for port in ${!keyports[@]}; do keyports[$port]=0; done + [[ ${#live[@]} -eq 0 ]] && { UP='\033[1A'; printf "$UP"; } [[ -f /tmp/ips ]] && rm -rf /tmp/ips fi @@ -151,6 +157,7 @@ cidr_to_ips() { # total live_count["total"]=0 + keyports=([21]=0 [22]=0 [80]=0 [88]=0 [135]=0 [443]=0 [445]=0 [554]=0 [1433]=0 [1521]=0 [2049]=0 [2375]=0 [3000]=0 [3306]=0 [4786]=0 [5000]=0 [5432]=0 [5984]=0 [6379]=0 [8000]=0 [8009]=0 [8080]=0 [8443]=0 [9100]=0 [9200]=0 [15672]=0 [27017]=0) # generate list of ip addresses local swing=0