Cominciamo col dire che, quando provi a cercare informazioni su un nuovo tipo di chip, protocollo o periferica di tuo interesse, l’utilizzo di un motore di ricerca su Internet è probabilmente la prima azione che svolgerai andando a caccia di datasheets e/o quant’altro possa risultare di tuo interesse ed utile al progetto.
Spesso, infatti, risulta utile semplicemente digitare il nome del sistema per avere informazioni esaustive, ma altre volte, invece, la strada può risultare tortuosa a causa della totale mancanza di informazioni particolareggiate, obbligando un approccio di tipo cognitivo all’apparecchiatura/software che intendiamo “piegare” al nostro “univoco” utilizzo “fuori specifica”.
Vorrei quindi riportarvi una “True Story” di qualche annetto fà (quando ero ancora giovane e bello), riguardo uno studio che feci su una apparecchiatura Embedded (Una centralina antintrusione n.d.r.) dotata (per ovvie ragioni n.d.r.) di un BUS di interfaccia PROPRIETARIO alle proprie TASTIERE di pilotaggio che ne inibiva l’interfacciamento ad un banale PC, rendendone, di fatto, impossibile l’utilizzo in un contesto DOMOTICO (Esecuzione ed Interrogazione comandi/stato da remoto tramite PC Mediacenter; Interfacciamento di logica associata ad altre apparecchiature secondo una logica di eventi prestabilita; esecuzione di script di pilotaggio automatizzati non previsti dal firmware proprietario)
Credo, per osmosi, un simile approccio, possa risultare utile anche applicato ad altre “situazioni” di ben altro settore/interesse, in quanto, in un certo senso, definibile “universale”.
Tornando al mio progetto, lo scopo era dunque quello di simulare/emulare l’utilizzo di una tastiera ed il primo problema che mi si parò davanti fu la totale mancanza di informazioni riguardo il BUS di gestione proprietario in cui transitano i dati recepiti dalla centralina ed inviati dalle Tastiere.
Decisi quindi che l’unica via praticabile era quella di utilizzare un oscilloscopio interfacciato al PC che catturasse/loggasse i dati di mio interesse.
Trovai dunque su Internet questo “simpaticissimo” oggettino
Allegato 1078
Acquistabile su [url=http://www.easysync-ltd.com/product/520/ds1m12.html]Stringray USB oscilloscope adapter | USB oscilloscope[/url]
tramite il quale, riuscii ad ottenere dei sample di comunicazione ogni volta che emettevo dei comandi attraverso la tastiera “reale” cominciando, di fatto, a loggare una “enorme mole di dati”.
A seguire, tramite l’idea venuta fuori da numerose sessioni di brainstorming con il mio collega/compagno di merende che interpello/coinvolgo sempre nelle situazioni più disparate, programmai alcune righe di Java interfacciandole ad un software di analisi grafico-vettoriale andando anche ad imparare qualcosa riguardo il linguaggio SVG (Scalable Vector Graphic) durante i miei esperimenti.
(Inkscape "SVG Graphics Editor" [url=http://www.inkscape.org.]Inkscape. Draw Freely.[/url])
(Kevin Lindsey Software Development “Basic SVG shapes” 2003 [url=http://www.kevlindev.com/tutorials/basics/shapes/svg/index.htm]KevLinDev - Tutorials - SVG - Shapes[/url]
“Cui prodest?” Ebbene, PRIMA DI EMULARE, devi avere ben chiari tutti i meccanismi REALI di funzionamento.
Continuai quindi a scrivere (in verità poche) righe di Java per decodificare i sample di dati catturati, fino ad arrivare a capire in quale formato fossero emessi!!.....e...... BINGO!!!
Allegato 1079
Allegato 1080
A questo punto, scrivendo poche righe (nel mio caso in PERL), riuscii a comunicare con il sistema interfacciandolo alla seriale del mio PC!
Ovviamente vennero fuori numerosi altri problemi dovuti alla particolare natura dei segnali invertiti del BUS proprietario con risultati “non proprio perfetti” dovuti anche a “delay” di gestione della RS232 sia del mio codice PERL che dell’ambiente operativo Windows sotto il quale, ai tempi, stavo lavorando.
In seguito, sperimentando un semplice circuitino di inversione segnali per interfacciarmi correttamente al BUS proprietario tramite RS232, ed una board embedded come la RABBIT RCM3710 pilotata dallo stesso codice PERL originario, ottenni finalmente dei risultati perfetti in termini di timing/delay di esecuzioni comandi…
Allegato 1081
Questa mia piccola testimonianza vuole cercare di stimolare il vostro approccio al Reverse Engineer e specificatamente le vostre conoscenze verso il formato SVG, probabilmente altrettanto utile nella scoperta di numerosi altri formati di comunicazione non documentati.
Sarò onorato se tutto ciò potrà essere utile anche in altre, sempre interessanti, scoperte (anche fossero quelle di gestione dell’elettronica della vostra Lavatrice!)
...non di solo console è l'interesse....!
Segnalibri