added a functionality to look for common ports across a subnet

This commit is contained in:
jc
2025-04-19 23:48:49 +03:00
parent 72d9ac55e9
commit db6fa300a4
+16 -9
View File
@@ -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=($(</tmp/ips)); live_count["total"]=$((live_count["total"]+${#live[@]})); } || live=()
for ip in ${live[@]}; do for port in $(nc -zn -w2 $ip ${!keyports[@]} 2>&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