Mini script para scaneo [bash]

Iniciado por elsebasoto, 27 Marzo 2011, 22:48 PM

0 Miembros y 1 Visitante están viendo este tema.

elsebasoto

Hola gente, les traigo un pequeño script que hice para realizar escaneos

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:D

Gracias y saludos a todos


#!/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

D4RIO

Valida las variables de entrada, observa:

Código (bash) [Seleccionar]
# Sorting
if [ $output == "" ]; then
output="./ip.txt"
fi

sort ./ip.txt -o $output

# Cleaning temporal files
rm ./ip.txt ./target.txt


Si no se pasa archivo de salida, se definira ouput como ip.txt, se escribirá el archivo de salida alli, y luego se borrara porque ip.txt se cuenta como temporal y output por default.

Por otro lado debes considerar que estás usando archivos temporales cuando no los necesitas.
OpenBSDFreeBSD

elsebasoto

Muchas gracias por la anotación del ./ip.txt  :P

Quedaría así

# Cleaning temporal files
rm ./target.txt



Me gustaría mucho si me cuentas como hacer todo esto sin archivo auxiliar porque la verdad es que no se me ocurre.

Gracias por la ayuda!!!!  ;-) ;-) ;-) ;-)

D4RIO

básicamente, el splitteo lo podés hacer con AWK y a lo sumo con Perl. Después lo pasas por un pipe a sort.

Pero el hecho de que no hayas visto lo del fichero temporal me hace pensar que no lo revisaste bien. Analizalo y deberías poder quitar ese fichero.
OpenBSDFreeBSD

elsebasoto

Actualización

nmap -v -n -PN -p $ports $target | grep "Discovered" | awk -F "on " '{print $2}'

de ahí para abajo es historia pasada.

Le agradezco a xD4RIOx que me comentó el AWK

Saludos