PDA

Visualizza Versione Completa : Correzione Checksum usando la matematica!!!



jared_poe
01-10-2014, 22:37
Ciao a tutti, secondo voi ? possibile correggere il checksum usando solo un calcolo matematico?
Mi spiego, ho preso il file di una croma edc16c39 (chk =89e5), in un punto della mappa ho aggiunto 1, il nuovo file l'ho salvato con il nome "test 01 +1" (chk =89e6), sullo stesso file in un altro punto ho tolto 1, il nuovo file l'ho salvato con il nome "test 01 +1 -1" (chk =89e5) a questo punto in teoria se riscrivessi il file in centralina non mi dovrebbe dare nessun errore giusto?
Se questo ? vero vuol dire che alla fine di qualunque modifica basta fare la differenza tra i due chk e sottrarla (o aggiungerla) nell'area del chk per riportare il valore del chk come l'originale.
Io continuo le prove intanto mi piacerebbe sentire il vostro parere su questo argomento

jared_poe
02-10-2014, 00:05
Pi? prove faccio pi? non mi tornano i conti...qualcuno pu? spiegarmi a cosa si riferiscono quei valori che ho marcato di rosso

GPoint
02-10-2014, 23:46
Molto interessante, potrebbe essere molto utile nel caso non si avesse il driver che calcola in automatico il checksum e quindi ? fattibile la correzione manuale. Ma la zona relativa alla correzione del chksum come si identifica?

jared_poe
02-10-2014, 23:56
Su alcune ? verso la fine..*****unque sto continuando con le prove...non ? cos? semplice come pensavo :(

GPoint
03-10-2014, 00:14
Che difficolt? hai riscontrato? Cambiando pi? bit il discorso si fa pi? compplesso?

jared_poe
03-10-2014, 00:23
Esatto, inoltre non ho ancora capito che cosa sono quei valori che ho evidenziato nella foto

ugoboss
03-10-2014, 07:02
ci sono cks a 8 bit e cks a 16 bit e quelli a 16 bit non sono facili da sistemare a mano , poi devi sapere che c? L' rsa e la cosa si fa sempre piu' difficile, poi ci sono varie zone di cks, non ? che puoi andare a correggere dove vuoi, io dico che alla fine ? quasi impossibile nelle ecu di ultima generazione.

p.s. perche volete complicarvi la vita quando ci sono i sw che possono aiutarvi.

jared_poe
03-10-2014, 07:41
Poteva essere utile nel caso non si avesse il driver..*****unque grazie delle info, cos'? la' RSA?

sergiot
03-10-2014, 09:34
la tua ipotesi che col +1 e -1 in locazioni diverse era valido su molte centraline fino al 1995 2000, quando si usavano le eprom o cose simili.
con l'introduzione delle flash si sono adottati sistemi diversi ed il tuo calcolo non ? pi? valido.

rickymix
05-10-2014, 00:57
hi

can you expain it

i'm intressed for it please

i like to learn ;)

El Berto
09-12-2014, 10:05
Ciao a tutti, sono abbastanza ignorante in materia, magari voi potete illuminarmi....

Stavo guardando un file .ori di una FIAT Coup? (1996) con HxD (editor esadecimale).
Selezionando vari blocchi di codice ho scoperto che il checksum calcolato era uguale a quello contenuto nei byte subito dopo il blocco.
Da quanto ho letto la centralina, all'accensione, controlla in qualche modo il checksum.
Se adesso vado a modificare la mappa, ovviamente cambia il checksum; volendo lasciare il checksum inalterato suppongo si possa modificare qualche byte.
Come faccio a sapere quale ? la parte della mappa che posso cambiare senza modificare il comportamento dell'auto?
Grazie in anticipo.

sergiot
09-12-2014, 10:46
prima di tutto occorre sapere di che centralina si tratta.
comunque sia hai trovato il punto ed il metodo.
le soluzioni sono 2
1 modifichi, ti ricalcoli il checksum e lo scrivi nell'indirizzo che hai trovato
2 lasci il checksum inaterato e scrivi qualcosa che lo compensa (fa tornare i conti) in una zona di 00 o FF appena prima del checksum

El Berto
09-12-2014, 11:18
prima di tutto occorre sapere di che centralina si tratta.

Bosch Motronic (non ricordo la sigla) di una FIAT Coup? 20v turbo



2 lasci il checksum inaterato e scrivi qualcosa che lo compensa (fa tornare i conti) in una zona di 00 o FF appena prima del checksum

Quindi mi confermi che il blocco di codice tutto oxFF non serve a niente per quanto riguarda la mappa?

O.T.
E' un vecchio pallino che provo a fare da anni: una doppia mappa.
In pratica installo 2 chip di memoria al posto della EPROM originale, con uno switch seleziono una EPROM o l'altra.
Le mappe funzionano entrambe solo che ovviamente hanno il checksum diverso, infatti se passo da una mappa all'altra con lo switch la macchina non si accende, devo per forza staccara e riattaccare la centralina (o cos? ipotizzo io).

sergiot
09-12-2014, 12:23
un blocco di ff in coda alle mappe prima del checksum puoi compensare.
ma visto che lo puoi calcolare e sai dove scrivrlo non perdere tempo a compensare, calcoli il nuovo e lo scrivi

se anche fai la doppia eprom puoi avere anche 2 checksum diversi, ognuno conta per la sua mappa

chi fa la doppia mappa non deve staccare la centralina, basta lo switch consigliabile farlo a motore fermo. ( anche se non indispensabile)

El Berto
09-12-2014, 13:33
Ma la centralina, all'accensione, non fa un controllo sul checksum?
Nel senso: attacco la centralina (seleziono mappa 1), metto in moto, tutto ok.
Spengo il motore, seleziono mappa 2, metto in moto.... non va.
Stacco centralina (rimane selezionala mappa 2), riattacco centralina, metto in moto, il motore parte.
Quindi ho ipotizzato necessario avere i 2 checksum uguali....