La idea es que muchas veces quiero obtener un listado de IP que dispongan de un determinado servicio abierto y no conseguí las IP una debajo de la otra.
Lo que hice fue utilizar unas opciones de Nmap para quitar información que me sobra y que a su vez acelera mucho el proceso.
Espero que les sea de tanta utilidad a ustedes como me fue a mi.
Si ponen -h les va a decir como usarlo.
Obviamente que está mas que en versión beta así que se aceptan criticas constructivas. :D:D
Gracias y saludos a todos
Código:
#!/bin/bash
case ${1} in
"-h" )
echo -e "Search a service from an IP range"
echo -e "Usage:"
echo -e "scan.sh [service] [target] [output_file]"
echo -e "Service:"
echo -e "\tsmb"
echo -e "\thttp"
echo -e "\tftp"
echo -e "\tsmtp"
echo -e "\ttftp"
echo -e "Target:"
echo -e "\t192.168.1.1"
echo -e "\t192.168.1.0-255"
echo -e "\t192.168.1.0/24"
echo -e "Example: ./scan.sh smb 192.168.1.0/24 smb.txt"
echo -e "Author: elsebasoto"
exit
;;
"smb" )
ports="445"
start="32"
;;
"http" )
ports="80"
start="31"
;;
"ftp" )
ports="21"
start="31"
;;
"smtp" )
ports="25"
start="31"
;;
"tftp" )
ports="69 -sU"
start="31"
;;
esac
# Variables
target=${2}
output=${3}
# Scan target
nmap -v -n -PN -p $ports $target | grep "Discovered" > ./target.txt
# Split IP
while read line
do
ip=${line:$start:15}
echo $ip >> ./ip.txt
done < ./target.txt
# Sorting
if [ $output == "" ]; then
output="./ip.txt"
fi
sort ./ip.txt -o $output
# Cleaning temporal files
rm ./ip.txt ./target.txt