nveronesi ha scritto:Buongiorno a tutti, una info...
Ma adesso l'OP-COM è compatibile con Astra J? ero rimasto che non si riusciva a fare molto.. magari con un nuovo firmware hanno esteso la compatibilità?
Cerco di fare un po' di chiarezza sull'argomento... se mi riesce.
OP-COM è un sistema di diagnostica composto da un'interfaccia e da un software.
L'interfaccia funge appunto da interfaccia tra i
singoli pin della presa OBDII, sui quali i dati viaggiano serialmente (essendo singoli pin) e l'Universal Serial Bus di un PC. Il protocollo adottato sui vari pin può essere diverso, ed i singoli pin possono far capo a moduli elettronici ("centraline") diversi dell'automebile. La gestione dei vari protocolli di comunicazione è affidata a un microprocessore, mentre l'interfacciamento con l'USB ad un chipset prodotto da FDTI. Il microprocessore deve ovviamente avvalersi di un programma, per fare il suo lavoro, che è permanentemente (
firmware) all'interno dell'interfaccia e che, ovviamente, deve venire aggiornato per adeguarsi sia alla comunicazione con i nuovi moduli, sia per rimediare ad eventuali errori/limitazioni sui protocolli preesistenti, sempre possibili perchè i progettisti di OP-COM non hanno accesso ai progetti originali dei moduli.
Una volta giunti al PC, i dati devono essere elaborati, mostrati, ed eventualmente variati e reinviati all'interfaccia per la scrittura.
Questo avviene ad opera di un software, essenzialmente costituito da un programma di elaborazione ed una serie di database dove sono contenuti i dati con i quali il programma deve "confrontare" ciò che gli arriva (oltre una serie di programmi accessori per la gestione della comunicazione fisica con il chipset dell'intefaccia).
Anche il programma ed i vari database (diversi per i diversi modelli di automobili e per i vari moduli elettronici presenti su ognuno di essi) devono venire aggiornati affinchè ciò che arriva dall'interfaccia possa essere corretamente interpretato e correttamente riscritto. Il programma deve da un lato essere in grado di dialogare con il firmware aggiornato, dall'altro deve essere in grado di elaborare i dati presenti nei nuovo database. Da qui la necessità dell'aggiornamento sia del firmware, sia del software.
I progettisti dell'OP-COM vendono il sistema a caro prezzo (come d'altra parte è giusto, considerato lo sforzo intellettuale che ci sta dietro). Considerato che l'interfaccia è aggiornabile, e che la componentistica non la fabbricano loro, è relativamente facile acquistare un OP-COM, estrarne il firmware, scopiazzare lo schema elettrico del'interfaccia, e costruire dei cloni infilandovi dentro il firmware. E' ciò che hanno fatto i cinesi.
Come possono proteggersi i progettisti? Proteggendo il software.
Ora prendete la descrizione che segue come approssimativa, non oro colato; in realtà non ho studiato approfonditamente le protezioni (né mai lo farò - sono ormai fuori da questo "ambiente" da più di un decennio) ma ho dato un'occhiata di massima ai vari file ed agli header PE degli eseguibili
Inizialmmente la protezione era costituita dalla verifica di una chiave di criptazione, mentre il programma era compresso con un compressore commerciale gratuito chiamato MPRESS; la chiave avrebbe dovuto costituire il dato in input di una funzione unidirezionale. Sarebbe stato (relativamente
) facile ottenere una versione decompressa del programma e "convincerla" a funzionare senza chiave. Ma se la chiave non ha un riferimento crociato (ad esempio, qualcosa sul PC che viene utilizzato) vi è un metodo molto più semplice: copiare la chiave. Utilizzare una chiave ed un riferimento crociato dà un problema: la chiave può essere utilizzata solo sul PC per il quale è stata fatta. E' una protezione molto più valida per il progettista ma una scocciatura per l'utilizzatore.
Allora, è stata escogiata una soluzione più "elegante": legare il programma all'interfaccia. Si può così adoperare il sistema su diversi PC, purchè programma ed interfaccia rimangano gli stessi.
Il programma si avvale allora dei valori letti dal chipset FDTI, e funziona solo se li trova validi. Il chipset non è riscrivibile, quindi puoi leggere il valore, ma non lo puoi infilare dentro l'interfaccia.
Il programma, inoltre, è stato compresso con PECompact2, un compressore commerciale che tra l'altro cripta la IAT (Import Address Table) del programma, cosa che rende più difficile (non impossibile
) copiare
on the fly la versione decompressa del programma, e convincerlo a funzionare con qualunque chipset.
Per aggirare l'ostacolo, i cinesi allora hanno escogitato un altro metodo, che si avvale di due tecniche informatiche chiamate
API Hooking (l'intercettazione delle chiamate alle funzioni dell'Application Programming Interface) e
code injection, e cioè il forzare, nell'ambito di un certo processo, l'esecuzione di codice che non vi sarebbe compreso. Nel caso specifico si usa l'API hooking per poter iniettare il codice. Così, si "dà in pasto" al programma un numero di chipset FDTI valido facendogli credere che venga dall'interfaccia (tramite i driver dell'FDTI), ma è invece generato via software.
La prima protezione era in uso nella versione (cinese) 100219a; la chaive
dovrebbe essere in OPELDATA.
La seconda protezione è operante nella versione 120309a, che c'è in giro. Per aggirarla si sono avvalsi di un API Hooker commerciale, Easyhook, scritto nel 2008. Il metodo ha bisogno di un
launcher (difatti l'eseguibile OP-COM è insolitamente piccolo) ed il programma originale è trasformato in una DLL (sarebbe
prog.dll - è quello il programma "vero").
A quando risale tutto ciò? I "nomi" delle versioni di OPCOM sono in realtà AAMMGG. Quindi il 100219a risale al 19 febbraio del 2010, mentre il 120309 è stato rilasciato il 9 marzo del 2012.
Quindi, il programma che viene distribuito dai cinesi è un programma scritto nel 2012. Per le automobili che erano in produzione nel 2012.
Perchè allora nella versione 120309a+131223d compaiono auto più recenti, fino al 2014? Perchè il secondo numero è quello relativo ai database, rilasciati il 23 dicembre del 2013, e quindi comprensivi delle auto MY14. In pratica, i cinesi hanno preso un database più nuovo, e tentano di usarlo con il programma vecchio.
L'attuale versione dell'OP-COM "vero", invece, è 150406, 6 aprile 2015. E' liberamente scaricabile dal sito di OP-COM, ma probabilmente avranno variato ancora la protezione, ed il metodo dell'API Hooking+code injection non funziona più. O almeno non funziona seplicemente "riwrappando" il tutto con EasyHook. E, d'altra parte, neanche i database più recenti possono essere utilizzati; il formato è proprietario, e sono criptati. Sono stati variati, usandoli con il programma 120309 non funzionano, e non vi si può curiosare dentro.
Concludendo, noi "lavoriamo" con un interfaccia nuova, ma che "parla" con un programma del 2012, il quale tenta di elaborare database del 2013/14 scritti per un altro programma. Nel 2012, la mia auto era appena stata lanciata sul mercato. Pertanto i moduli relativi alla gestione di strumentazione o luci, uguali a quelli presenti sulla J 5 porte, che già esisteva, vengono letti e scritti correttamente. Ma quando tento di accedere alla AC Delco E83, non sento una sonora pernacchia solo perchè il mio portatile non è in grado di farne...