Identificazione di stampanti HP con NMAP e utilizzo dei risultati in Python / Perl

1

Un ottimo resoconto su hackeraggio di stampanti di rete sul sito di IronGeek per chiunque sia interessato a link .

Ecco cosa voglio fare: Eseguire la scansione della sottorete per le stampanti HP con porta 9100 aperta. So che posso usare il fingerprinting OS e l'argomento port per filtrarlo. Voglio esportare gli indirizzi IP che corrispondono a questi criteri in un file o in un elenco, quindi telnet su ognuno di questi IP e inviare un comando. In particolare: @PJL RDYMSG DISPLAY="IL TUO MESSAGGIO". Ciò farà sì che le stampanti visualizzino un messaggio personalizzato.

Consigli? Guida? Come potrei fare questo?

    
posta chubby_monky 07.07.2014 - 06:08
fonte

2 risposte

4

Questa funzionalità esiste già in Nmap, nello pjl-ready-message script NSE. Ecco un esempio di utilizzo:

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

Lo script controlla già un vero servizio PJL prima di inviare il comando, quindi probabilmente non è necessario verificare i risultati delle impronte digitali del sistema operativo.

    
risposta data 07.07.2014 - 16:56
fonte
1

Sembra che ciò potrebbe essere facilitato usando NSE . Prendi ad esempio il seguente script (chiamato 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

Se corri:

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

Supponendo che la tua rete sia 192.168.1.0/24, corrisponderà a tutti gli host online con porta 9100 aperta. Per ogni host che corrisponde a queste regole, questo script farà eco al suo indirizzo nel file targets.txt . Da lì, puoi adattare gli script di IronGeek per leggere da targets.txt ed emettere i rispettivi comandi telnet. Qualcosa come:

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;

Riguardo al rilevamento del sistema operativo, credo che sarà necessario più lavoro per abbinare la stringa del sistema operativo con le espressioni regolari (e rischiare di perdere una vera stampante HP) che se si tenta semplicemente di inviare i comandi HP a ogni host con la porta 9100 aperta. Se vuoi fare un tentativo, ecco l' API NSE .

    
risposta data 07.07.2014 - 09:34
fonte

Leggi altre domande sui tag