Identificar impresoras HP con NMAP y luego usar los resultados en Python / Perl

1

Genial, escriba sobre piratería de impresoras de red en el sitio de IronGeek para cualquier persona interesada enlace .

Esto es lo que quiero hacer: Escanee la subred en busca de impresoras HP con el puerto 9100 abierto. Sé que puedo usar la huella digital del sistema operativo y el argumento del puerto para filtrarlo. Quiero exportar las direcciones IP que coincidan con este criterio a un archivo o lista, y luego hacer telnet a cada una de esas IP y emitir un comando. Específicamente: @PJL RDYMSG DISPLAY="SU MENSAJE". Esto hará que las impresoras muestren un mensaje de lista personalizado.

¿Consejo? ¿Dirección? ¿Cómo voy a hacer esto?

    
pregunta chubby_monky 07.07.2014 - 06:08
fuente

2 respuestas

4

Esta funcionalidad ya existe en Nmap, en el pjl-ready-message secuencia de comandos NSE. Aquí hay un ejemplo de uso:

nmap -p 9100 --script pjl-ready-message --script-args pjl_ready_message="your message here" 192.0.2.0/24

La secuencia de comandos ya busca un servicio real de PJL antes de enviar el comando, por lo que probablemente no tenga que verificar los resultados de las huellas digitales del sistema operativo.

    
respondido por el bonsaiviking 07.07.2014 - 16:56
fuente
1

Parece que esto podría facilitarse utilizando NSE . Tomemos, por ejemplo, el siguiente script (llamado hp.nse ):

function portrule(host, port)
  if port.state == "open" then
    cmd = "echo " .. host.ip .. " >> targets.txt"
    os.execute(cmd)
  end
end

function hostrule(host)
end

function action()
end

Si ejecuta:

nmap -p 9100 -n --script=./hp.nse 192.168.1.*

Suponiendo que su red es 192.168.1.0/24, coincidirá con cada host que esté en línea con el puerto 9100 abierto. Para cada host que coincida con estas reglas, esta secuencia de comandos reflejará su dirección en el archivo targets.txt . Desde allí, puede adaptar los scripts de IronGeek para leer desde target.txt y emitir los respectivos comandos de telnet. Algo como:

my $filename = "targets.txt";
open my $handle, $filename or die;
while(my $ip = <$handle>)  {   
    print $ip;
    # Declare socket for $ip.
    # Echo HP commands to that socket.
}
close $handle;

Sobre la detección del SO, creo que requerirá más trabajo para hacer coincidir la cadena del SO con expresiones regulares (y arriesgarse a perder una impresora HP real) que si simplemente intenta y envía los comandos de HP a cada host con el puerto 9100 abierto. Si desea intentarlo, aquí está la API de NSE .

    
respondido por el epadillas 07.07.2014 - 09:34
fuente

Lea otras preguntas en las etiquetas