,

Riavvio Remoto di Stampanti HP e altre!

 

(You can read the English version here)

Premessa

La ma HP LaserJet Pro presenta puntualmente due problemi se viene lasciata accesa e inutilizzata per diversi giorni, il problema più evidente è nell’utilizzo dello scanner che andrà a realizzare una scansione con barre verticali di diversi colori per tutta la pagina. Il secondo problema riguarda invece la stampa che risulta essere decisamente lenta nella fase iniziale di ricezione dati. Entrambi i problemi sembrano essere collegati ad una errata gestione della RAM la quale lasciando la stampante inutilizzata per diversi giorni si va a saturare.

L’assistenza consiglia puntualmente di fare un reset della NVRAM, reset che prevede la perdita di tutte le configurazioni. È passato oltre un anno dalla segnalazione mia e di altri utenti di questo problema, ma nulla è cambiato. Nessun aggiornamento firmware è stato purtroppo rilasciato da Febbraio 2015, portandosi dietro anche la mancata risoluzione di diverse vulnerabilità (come quelle di OpenSSL).

Per risolvere velocemente i problemi sopra descritti basta fare un riavvio manuale della stampante, ma puntualmente quando ho fretta mi capita di fare una scansione e di rilevare il problema il che mi costringe ad attendere ulteriormente.

In passato avevo già controllato se era possibile effettuare un reboot via software, così da automatizzare la procedura, ma purtroppo l’interfaccia Web o Telnet non offrono una funzione di riavvio. Assurdo! Trovai allora una prima procedura tramite FTP ma non funzionava, anzi mi stampava un foglio in bianco ed una seconda procedura sempre tramite FTP con l’invio di una stringa personalizzata di testo. Questa seconda procedura non generava alcune effetto.

Durante la festività di Santo Stefano mia moglie ha stampato diverso materiale per il suo Blog e la stampate era evidentemente lenta nel percepire i dati (andando a memoria l’avevo usata l’ultima volta 7 giorni prima), la prima stampa di 11 fogli ha impiegato circa 13 minuti e dopo un riavvio la stampa delle stesso materiale ha impiegato meno di due minuti.

Ho cercato nuovamente una soluzione per eseguire automaticamente un riavvio, scoprendo un articolo di un blog tedesco (non ho capito chi sia l’autore) che illustra una procedura funzionante da eseguire tramite Microsoft PowerShell che sfrutta il protocollo SNMP.

$PrinterIP = "192.168.1.87"
$SNMP = New-Object -ComObject olePrn.OleSNMP
$SNMP.Open($PrinterIP, "public")
$SNMP.Set(".1.3.6.1.2.1.43.5.1.1.3.1",4)
$SNMP.Close()

Per il mondo Linux/Unix è necessario installare snmp attraverso aptitude:

sudo apt-get install snmp

ed è possibile eseguire il Riavvio della Stampante HP attraverso il terminale con il semplice comando:

snmpset -v 1 -c public 192.168.1.87 ".1.3.6.1.2.1.43.5.1.1.3.1" i 4

avendo cura di sostituire 192.168.1.87 con l’indirizzo IP della propria stampante.

Ho poi deciso di inserire un cron automatico, sul mio server domestico, che alle 2 di notte e ogni 2 giorni mi esegue un riavvio:

0 2 */2 * * /usr/bin/snmpset -v 1 -c public 192.168.2.41 ".1.3.6.1.2.1.43.5.1.1.3.1" i 4

Remotely Reboot (Without Password)

Con la procedura illustrata ho finalmente risolto il problema, ma è evidente che non vi è alcuna richiesta di autenticazione nel comando che imputo.

Il protocollo SNPM viene sfruttato da molteplici stampanti per comunicare all’utente lo stato in cui si trova la stampante (in uso, documento aggiunto nella coda, cartuccia finita, ecc) e sfrutta la porta UDP 161 per le interrogazioni e le risposte, e la porta UDP 162 come destinazione dei messaggi.

Ho quindi esposto la porta 161 della mia stampante su Internet e la sua relativa interfaccia web. Da una connessione ad internet esterna ho eseguito il comando precedentemente illustrato con l’IP pubblico della mia connessione VDSL riuscendo a riavviare la stampante remotamente. Sì, ho riavviato la mia stampante senza alcuna autenticazione.

 

La stampante mostra il messaggio "Restarting..." poichè ha percepito il comando di riavvio.

La stampante mostra il messaggio “Restarting…” poichè ha percepito il comando di riavvio.

Sfruttando Shodan rivelo la presenza di quasi 3 milioni di dispositivi connessi a internet con la porta 161 aperta, ma tra di loro non troviamo solo stampanti. Affinando la ricerca rilevo 30248 device HP con la porta 161 aperta ma anche altri brand come 494 device Epson, 4235 device Exor e 541 device Lexmark.

Ho fatto un test su una stampante Lexmark connessa remotamente, anche essa è possibile riavviarla. Non ho invece effettuato test su device Epson, Exor o altre marche perché non le ho a disposizione. Se qualcuno ha una stampante di un altro brand e volesse provare aggiorno volentieri l’articolo così da creare un piccolo registro.

Una stampante non dovrebbe essere esposta su internet su questo punto credo siamo tutti concordi, ma allo stesso tempo i produttori dovrebbero prestare maggiore attenzione nell’implementazione delle funzionalità e sulla sicurezza dei dispositivi venduti. Un malintenzionato potrebbe riavviare in continuazione le stampanti di una infrastruttura ospedaliera o di una grande azienda bloccando la stampa di referti o di documenti importanti.

O semplicemente svegliare in piena notte un utente a causa del rumore dei rulli della sua stampante laser! 😀