Backdoor in alcuni apparati D-Link

Articolo originariamente pubblicato su FacileWiFi nell’Ottobre 2013

http://www.facilewifi.eu/viewtopic.php?f=7&t=3297

Dall’analisi del firmware di alcuni apparati D-Link è stata individuata una backdoor che permette di entrare nell’amministrazione via Web dell’apparato.

Basta mettere come nome utente xmlset_roodkcableoj28840ybtide senza alcuna password e siete dentro.

Il secondo pezzo del nome utente letto al contrario diventa “edit by 04882 joel backdoor”, per cui è perfettamente chiaro di cosa si tratta.

Ulteriori analisi hanno rivelato che diversi binari nel firmware, che modificano file di configurazione, fanno uso di questa backdoor per cui l’autore ha avanzato l’ipotesi che l’origine di tutto sia stato il fatto che poiché questi binari dovevano modificare delle configurazioni e poiché nell’interfaccia web c’erano già le funzioni per farlo, allora era più comodo sfruttare queste funzioni invece che scrivere del codice, magari per aumentare le portabilità aggiungo io. Siccome però l’interfaccia web richiedeva utente e password, che l’utente poteva poi cambiare, si è creato questo utente, chissà perché senza password. Una password avrebbe complicato le cose un po’ di più o parecchio di più se si implementa lo schema dell’ultimo firmware dell’AGPF, il 4.7.0, la cui password di admin che ad oggi 12016 sembra che non sia stata ancora scoperta.

L’autore ha trovato questa backdoor nel modello DIR-100 ma pare che sia presente anche in altri dispositivi.

L’articolo originale in inglese è qui, interessante per il tipo di analisi che è stata fatta. http://www.devttys0.com/2013/10/reverse-engineering-a-d-link-backdoor/

Facendo una ricerca con Google ha trovato un forum russo che ne parla

http://forum.codenet.ru/q58748/%D0%BF%D0%B5%D1%80%D0%B5%D0%B1%D0%BE%D1%80+%D0%BB%D0%BE%D0%B3%D0%B8%D0%BD%D0%BE%D0%B2+-+%D0%B4%D0%B0%D0%B9%D1%82%D0%B5+%D1%81%D0%BE%D0%B2%D0%B5%D1%82

nell’ultimo post in effetti c’è xmlset_roodkcableoj28840ybtide ma nessuno da allora sembra averla provata.

Ariston Lavastoviglie LD87 – Codici errore e risoluzione codice AL03

Un sabato di settembre la lavastoviglie si blocca dopo una decina di secondi dall’avvio mostrando un codice AL03. Telefonata al centro di assistenza, per il tecnico non se ne parla che Martedì o Mercoledì. Lavate tutte le stoviglie ho pensato allora di rivolgermi ad internet alla ricerca di informazioni.

 

La prima pagina dove capito è questa

http://www.ciao.it/Ariston_LD_87_X__Opinione_1152816

dove trovo questo elenco.

 

  • AL01 PERDITA ACQUA
  • AL02 CONNESSIONE O VALVOLE
  • AL03 SCARICO
  • AL04 TERMOSTATO
  • AL05 MANCATO SCARICO
  • AL06 MANCA ACQUA
  • AL07 NON UTILIZZATO
  • AL08 NON RISCALDA ACQUA
  • ALO9 ERRORE SOFTWARE
  • AL10 RESISTENZA
  • AL99 ERRORE DI COMUNICAZIONE CIRCUITO ELETTRONICO
  • H2O RUBINETTO CHIUSO

 

Quindi il problema è sullo scarico. In effetti quello che succede è che la lavastoviglie carica un po’ di acqua e poi si ferma.

Cercando tramite il codice AL03, limitandomi alle pagine in italiano, non trovo nulla. Io mi ero limitato all’italiano nell’ipotesi che in inglese non ci fosse nulla a parte pagine che parlavano di tutt’altro.

Mi sbagliavo.

Passando all’inglese trovo questa pagina

http://www.howtomendit.com/answers.php?id=13831

con i codici in inglese.

 

  • AL01 – Anti flood switch operated
  • AL02 – Valve or connections
  • AL03 – Time out – drain
  • AL04 – Thermistor (module)
  • AL05 – Circulation pump
  • AL06 – Time out – fill
  • AL07 – Not used
  • AL08 – Time out – heat
  • AL09 – Software recogntion error
  • AL10 – Heating circuit
  • AL99 – Communications error – connectors, cables etc.
  • H20 – Time out – fill (taps)

 

http://www.howtomendit.com/answers.php?id=13831

Passo quindi alla ricerca in inglese e rapidamente approdo a questo post del 2007 di Werner Almesberger

http://www.almesberger.net/ld87/al03.html

il quale risolve esattamente il mio problema sul mio esatto modello di lavastoviglie, la LD87

Werner analizza prima quali cause possono comportare l’emissione del codice AL03. La lavatrice scarica l’acqua sporca con una pompa ma questo processo non avviene. Le possibili cause possono essere:

 

  • Filtri intasati
  • C’è un probrema elettrico o elettronico (ad esempio un relè bruciato o un filo staccato)
  • Il problema è nel motore elettrico della pompa.
  • Il problema è nella meccanica della pompa, alberino bloccato o un oggetto dentro la pompa.
  • C’è un blocco nel percorso che dal vano delle stoviglie va alla pompa
  • C’è un blocco tra la pompa e la fine del tubo di scarico
  • Il sensore della presenza di acqua nella lavastoviglie è rotto

 

Dopo aver controllato il tubo di scarico e i condotti fino alla pompa il sospetto cade sulla pompa stessa. In effetti mi ricordo che la lavastoviglie carica un po’ di acqua e poi si sente un rumore che credo sia l’avvio della pompa di scarico. Ma questo rumore non c’è. Scoprirò che in effetti è così, la lavastoviglie effettua un test della pompa prima di iniziare il ciclo di lavaggio. E in qualche modo rileva il fatto che la pompa non gira, forse con un sensore di acqua oppure dai consumi del motore della pompa.

 

Il problema di Werner era un oggetto dentro la pompa e lo ha risolto smontando la pompa. Visto che questo è l’unico problema rimasto facilmente risolvibile (l’analisi dei guasti elettrici o elettronici è più complicata e pericolosa per la presenza della tensione di rete) seguo le sue dettagliatissime istruzioni.

Werner sottolinea il fatto che se c’è un oggetto è meglio rimuoverlo sicuramente che spingerlo con dei flessibili, non si fa altro che spostare il problema da un’altra parte. E io sono d’accordo con lui.

Werner suggerisce anche di avviare la lavastoviglie senza il tubo di scarico per vedere se la colpa è di quest’ultimo. Io mi son limitato a soffiarci dentro. Era libero. In alternativa lo si potrebbe attaccare ad un rubinetto.

 

Quello che segue è una versione italiana di quanto scritto in inglese da Werner, quindi con le sue osservazioni che ho arricchito dove opportuno. Le foto del post di Werner sono ben fatte per cui ne aggiungerò qui pochissime.

 

Preparazione

Per arrivare alla pompa vi serve un cacciavite Phillips (a croce) e una pinza. Per aprire la pompa serve una Torx T15.

La prima cosa da fare è staccare il cavo di alimentazione dalla presa. Acqua e tensione di rete non vanno molto d’accordo.

 

La pompa è situata sotto il vano stoviglie e per accedervi la lavastoviglie va coricata oppure rovesciata. Questo significa che l’acqua rimasta dentro, alcuni litri, fuoriuscirà spargendosi nel pavimento. Per mitigare il problema cerchiamo di rimuovere la maggior parte di quest’acqua.

 

L’approccio più semplice è quello di una spugna e un secchio ma è molto lungo.

Usare una bacinella molto bassa e un tubicino flessibile, usando il trucco del sifone, è pure lungo ma avviene per i fatti suoi sebbene dobbiamo sorvegliare il riempimento della bacinella.

Io avevo a disposizione una piccola pompa per acqua a 5V e ho usato quella. Anche una pompa per acquario potrebbe andare stando attenti alla tensione di rete. Con la pompa ho svuotato la lavastoviglie in meno di un minuto andando ad aspirare anche parte dell’acqua del condotto di scarico che si trova sotto la piastra traforata.

 

Nonostante ciò all’interno rimane un litro buono di acqua per cui preparatevi con degli stracci che serviranno anche come appoggio per la lavastoviglie.

Poggiati li stracci per terra ruotate la lavatrice e appoggiatela su un fianco dopodiché asciugate tutta l’acqua che uscirà.

 

Fatto questo iniziamo smontando lo scudo metallico che ricopre tutti i meccanismi del fondo. Tale scudo serve per raccogliere le perdite d’acqua.

Tale scudo è tenuto in posizione da 3 viti Phillips (un tipo di vite a croce) sul davanti e 3 sul retro. Werner non riusciva ad accedere alle 3 viti anteriori così ha smontato la fascia di plastica inferiore.

Io invece son riuscito a svitare le viti per cui la fascia l’ho lasciata al suo posto.

Una volta rimosse le viti va sollevato con attenzione lo scudo perché su di esso è montato il sensore per la fuoriuscita dell’acqua che è collegato alla lavastoviglie con un cavo che va staccato tirando il connettore che lo collega al sensore.

La pompa è l’oggetto bianco quasi al centro cui è collegato il tubo di scarico. Quest’ultimo va scollegato perché per rimuovere la pompa questa va ruotata e il tubo impedisce di farlo.

Il tubo è tenuto in posizione da una fascetta a molla. Schiacciando le estremità con una pinza la fascetta si allarga e può essere spostata.

A questo punto la pompa dovrebbe essere ruotata in senso antiorario ma un ulteriore vite impedisce di farlo. Svitiamo la vite e nel mentre rimuoviamo il cavo di alimentazione della pompa da connettore sulla pompa.

Fatto questo ruotiamo la pompa e la estraiamo dall’attacco del condotto che proviene dal vano stoviglie. Controlliamo che non vi siano ostruzioni.

 

La pompa è tenuta chiusa da tre viti Torx T15

 

 

Sarebbe possibile svitare tali viti con uno a lama piatta ma molto probabilmente danneggerete le viti. Io ho utilizzato uno di quei cacciaviti relativamente economici che hanno diversi inserti fra cui una serie Torx.

 

Una volta aperta la pompa trovo il colpevole: un pezzettino di plastica appartenente al cestello per le posate. Tale cestello è realizzato con una plastica rigida azzurra che in effetti già altre volte aveva perduto altri pezzettini. Evidentemente avrò sollevato la griglia traforata che fa da filtro per le parti grossolane e l’altro filtro, magari per una pulizia di manutenzione, e il pezzetto è scivolato giù fino ad arrivare alla pompa.

Attualmente ho eliminato il cestello in plastica rigida in favore di uno in plastica flessibile appartenente alla precedente lavastoviglie che chissà come avevo conservato.

Da notare che anche Werner aveva trovato un pezzettino di plastica proveniente dallo stesso cestello.

Una volta trovato il colpevole rimontiamo tutto seguendo l’ordine inverso senza dimenticare di ricollegare i cavi.

Rimontiamo quindi la pompa e la inseriamo nella sua sede. Riavvitiamo la vite di blocco e quindi ricolleghiamo il tubo di scarico e rimettiamo in posizione la fascetta usando la pinza.

Ricolleghiamo il cavo di alimentazione della pompa e quindi il cavo del sensore di perdita d’acqua sullo scudo e rimontiamo lo scudo.

Telecom Italia Multivision IP Urmet

Su ebay si trova questo Multivision IP, un esperimento abortito di Telecom Italia (adesso TIM).

Era nato come una sorta di radio multimediale, decisamente più grossa del Uebby.

Ha sia la connessione WiFi che Ethernet

Ha uno slot per le SD fino a 32Gb in FAT e una porta USB 1.1

Ha un telecomando ad infrarossi

I formati supportati sono MP3, AAC, M4A, WAV per l’audio e MOV, AVI, MPEG per il video ma non si sa quali codec.

  • Lo schermo è un LCD Samsung LMS700KF05-103 800×480. Non è touch.
  • Il processore è un NHPXA270CS che appartiene alla famiglia PXA270 della Marvell
  • Flash Samsung KFG1***02B una bella picchettata di vernice rosa ricopre alcune cifre.
  • RAM 2 moduli Samsung K4M56163PI 256Mbit 54p 7.5ns 16×16 SDRAM fBGA PC133-NIT1280 64Mb in tutto.
  • Davicom DM9000 ISA to Ethernet MAC controller with integrated 10/100 PHY http://www.davicom.com.tw/userfile/24247/DM9000-DS-F03-041906_1.pdf
  • Scheda WLan Urmet WL-1500 con Atheros AR2524

Questo dispositivo è stato prodotto dalla Urmet e pertanto non sembra sia mai stato distribuito anche all’estero al contrario del Uebby (o Webby). Ne ho preso uno e l’ho smontato nella speranza di trovare qualche connessione nota. Non ne ho trovata nessuna.

Ho anche provato a cercare porte aperte e non ne ho trovata alcuna fra quelle note. Non ho ancora provato tutte le 65535 porte possibili.

In rete, a parte gli annunci di vendita e qualche pagina con le caratteristiche non si trova nulla.

Di seguito alcune foto.

Scheda madre lato A

Scheda madre lato B

Processore, Flash e RAM

Scheda nella Base

Altra scheda nella base

Unico header montato (foto sfocata!)

Attenzione se smontate la base in quanto poi per rimontarla spesso dovrete smontare la parte principale che si trova dietro lo schermo.

WordPress mi ha tagliato le foto a destra ma se copiate il link e lo inserite nella barra del browser dovreste vederle intere.

Confronto DHT11, DS18B20 e sensore interno – DHT11 vs DS18B20 vs Internal sensor

Versione italiana più sotto!

This image is better that a description

As you can see the winner is the DS18B20 but the second, I believe, is the internal temperature that has to be adjusted (lowered in my case). There is a noise but it seems better than the DHT11.


 

Questa immagine dice tutto

Il DS18B20 si comporta meglio di tutti ma a sorpresa il sensore interno sembra comportarsi meglio del DHT11, sebbene sia rumoroso e non sia correttamente calibrato, circa 14 gradi in più.

NRF24L01 and “error: void value not ignored as it ought to be”

English version, versione italiana più sotto.

Some sketches for NRF24L01 doesn’t compile with the “error: void value not ignored as it ought to be”.

There are two RF24 libraries, one written by maniacbug https://github.com/maniacbug/RF24 and another one modified by TMRh20 https://github.com/TMRh20/RF24.

The first one has functions that return a boolean value instead the last one the same functions doesn’t return any value.

You can modify the sketch, like TMRh20 suggested me
Instead of this:
if(radio.available()){
  while(done){
    done = radio.read(blah);
  }
}

use this:

while(radio.available()){
  radio.read(blah);
}
Othewise you can swap the libraries but take in account that the TMRh20’s library is the newest one.

Italian version.
Alcuni sketch per NRF24L01 non vengono compilati a causa dell’errore “error: void value not ignored as it ought to be”
Ciò è dovuto al fatto che di librerie RF24 ne esistono due versioni, la prima scritta da maniacbug https://github.com/maniacbug/RF24 la seconda è invece derivata dalla prima e modificata da TMRh20 https://github.com/TMRh20/RF24.
La libreria di maniacbug ha alcune funzioni che restituiscono un valore booleano vero/falso mentre le stesse funzioni nella libreria di TMRh20 non restituiscono nulla.
TMRh20 mi ha suggerito questo cambiamento negli sketch, invece di usare questo
if(radio.available()){
  while(done){
    done = radio.read(blah);
  }
}

usare questo:

while(radio.available()){
  radio.read(blah);
}
Se ciò non fosse possibile  si può anche cambiare libreria usando quella più vecchia di maniacbug.

McuFriend LCD TFT shield e ILI9325: problema Bitmap con colori scorretti risolto.

Nel precedente articolo sulla prova delle librerie per lo shield LCD TFT McuFriend con ILI9325 avevo accennato al fatto che le bitmap venivano visualizzate con colori scorretti.

Avevo ipotizzato che si trattasse di un qualche registro non ben configurato. Contavo anche di effettuare un esperimento visualizzando contemporaneamente tutti i colori possibili ma c’è chi l’ha fatto prima di me e ne ha pubblicato la soluzione sul forum Arduino.

L’utente Magican ha individuato il problema nella rappresentazione dei colori che sembra essere una 555 invece di una 565, cioè tutti i colori sono rappresentati a 5 bit, compreso il verde che nella 565 ha 6 bit a disposizione.

Basta quindi cambiare la funzione che trasforma un colore in RGB 8 bit per canale nel colore RGB555

// Pass 8-bit (each) R,G,B, get back 16-bit packed color
uint16_t Adafruit_TFTLCD::color565fix(uint8_t r, uint8_t g, uint8_t b) {
//  return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3);
return ((r & 0xF8) << 8) | ((g & 0xF8) << 2) | (b >> 3);
}

Ciò può essere fatto sia direttamente nella libreria che in una funzione da usare nel programma di visualizzazione bitmap. Io ho provato personalmente questa modifica e mi ha funzionato.

Sul forum Arduino c’è un altro utente, David_Prentice, che segnala un problema più grave, a lui il verde ha ulteriori bit bloccati a zero ed è quasi sicuro che non si tratti di problemi dovuti ad un cattivo collegamento del flat. Forse i chip sono difettosi?

Ho aggiunto il pulsante per salvare in PDF

Prendendo iniziativa da quanto letto sul blog di Roberto Rossi qui

Come salvare i PDF degli articoli?

ho aggiunto anche io il pulsante per salvare in PDF le pagine interessanti.

Mcufriend LCD TFT shield con ILI9325: Test librerie

An English version of this post is HERE! Updated with link to a solution for bitmap colours.

Articolo aggiornato con il link al post sulla soluzione del problema dei bitmap con colori sballati.

Aggiunta l’ottima libreria di David Prentice.

Ho comprato recentemente uno shield con LCD TFT su Ebay, questo:

Alcune caratteristiche dichiarate erano:

  • 4-wire resistive touchscreen
  •  spfd5408 controller with built in video RAM buffer
  • 8 bit digital interface, plus 4 control lines

Lo schermo che mi è arrivato è però diverso

E’ evidentemente diverso. La scritta ili in basso a destra e la stampa 9325 a sinistra inducono a credere che il controllore sia un ILI9325 invece dell’SPFD5408.

Il sito mcufriend è giù da mesi, forse qualche anno. E’ presente su Archive.org ma i driver non sono stati archiviati.

Sono qunindi andato su questo sito http://misc.ws/2015/01/24/lcd-touch-screen-information/ da dove ho scaricato un programma di test, LCD_ID_Reader Version 1.2 che ho scaricato e provato usando un Arduino UNO R3 e l’IDE 1.6.5. Ho così avuto conferma che il controllore è un ILI9325 e visualizzato una schermata tutta rossa che dovrebbe significare che la libreria di Justin, l’autore del post, dovrebbe funzionare. E così è stato con l’eccezione della visualizzazione delle immagini bitmap. Io ho ottenuto questo

I colori sono sballati. Da esperimenti fatti sembra che ciò sia dovuto a qualche registro non configurato correttamente perché i colori Rosso Verde e Blu puri vengono visualizzati correttamente. (Edit: 08/09/2015 soluzione qui.)

La libreria Adafruit per questi schermi ad interfaccia parallela identifica correttamente lo schermo ma non visualizza nulla, ottengo il classico schermo bianco.

Cercando sul forum forum.arduino.cc ho trovato questo post www.mcufriend.com working in arduino uno and arduino mega scritto da buhosoft il quale pubblica una libreria Adafruit modificata. Tale libreria funziona solo che occupa il doppio dello spazio di quella originale Adafruit e l’esempio che visualizza immagini bmp su una UNO non ci entra.

Allora ho eliminato da tale libreria tutta la roba che non riguardasse l’ILI9325 ottenendo che l’unica differenza rispetto alla libreria originale Adafruit erano alcune righe nella routine di reset nel file cpp della libreria.

Le righe originali

*******************ORIGINAL ADAFRUIT******************

#ifdef USE_ADAFRUIT_SHIELD_PINOUT

 digitalWrite(5, LOW);

 delay(2);

 digitalWrite(5, HIGH);

#else

 if(_reset) {

 /*

   digitalWrite(_reset, LOW);

   delay(2);

   digitalWrite(_reset, HIGH);

   */

   digitalWrite(_reset, HIGH);

   delay(50);

   digitalWrite(_reset, LOW);

   delay(100);

   digitalWrite(_reset, HIGH);

   delay(50);

CS_ACTIVE;

RD_ACTIVE;

WR_ACTIVE;

delay(10);

 }

#endif

Vanno sostituite con queste

*****************MODIFIED BUHOSOFT*******************

#ifdef USE_ADAFRUIT_SHIELD_PINOUT

 digitalWrite(5, LOW);

 delay(2);

 digitalWrite(5, HIGH);

#else

 if (_reset) {

   digitalWrite(_reset, LOW);

   delay(2);

   digitalWrite(_reset, HIGH);

 }

#endif

Effettuando questa modifica alla libreria Adafruit funziona tutto tranne daccapo la visualizzazione dei bitmap.

Ho quindi provato la libreria di Smoke and Wires. http://www.smokeandwires.co.nz che si trova su GitHub https://github.com/Smoke-And-Wires/TFT-Shield-Example-Code. Funziona ma ho sempre il problema dei bitmap.

Ho poi provato la libreria di samuraijap. Funziona ma con errori, le immagini e i disegni appaiono nel posto sbagliato come se l’indirizzamento della memoria fosse errato.

Ho quindi provato la libreria di ruelj2. Anche questa funziona ma durante la scrittura dei dati compaiono delle righe bianche sullo schermo che poi scompaiono cessata la comunicazione.

L’altra libreria provata è stata quella di goltermc che ha funzionato.

Aggiungo la libreria di David Prentice
http://forum.arduino.cc/index.php?topic=286790.msg2477797#msg2477797
Ho eseguito il test solo con l’esempio graphictest_kbv ma ha funzionato perfettamente.
Quelle provate ma che non hanno funzionato sono:

  • Libreria di andreword
  • Libreria di JoaoLopes
  • Libreria di acharis
  • Libreria di SeedStudio, una vecchia versione per SPFD5408A che sembra essere compatibile con l’ILI9325

Non ho provato la libreria UTFT in quanto i pin per la comunicazione parallela sono diversi, usa i primi 8 pin compresi quelli della seriale.

Molte librerie sono vecchie e per funzionare sull’IDE 1.6.5 bisogna aggiungere un const davanti a tutte le righe che iniziano per static unsigned char  font[] PROGMEM = { nel file glcdfont.c

Negli sketch di esempio per i bitmap va inoltre aggiunta la riga #include <SPI.h>

An English version of this post is HERE!