Forum: Mikrocontroller und Digitale Elektronik Reverse Engineering Zahlendarstellung im EEPROM knacken, wer schafft's


von Avr N. (balze)


Lesenswert?

Hallo zusammen,

ich habe ein Problem. Ich moechte gerne bei einer bestehenden Platine 
die Funktion und die Daten verstehen.
(Es geht um einen alten Motorradtacho den ich umbauen moechte.)

Die verbauten µCs sind von unbekanntem Typ und steuern sowohl LCD als 
auch das Drehspulinstrument an.

Einiges an Daten wird in einem seriellen EEPROM gespeichert.
Das hier gespeicherte Zahlenformat ist mir aber nicht verstaendlich.

Z.B.:
Wenn ich den Tageskilometerzaehler zuruecksetze, werden insgesamt zwölf 
16bit Worte geschrieben. Hierbei scheint es sich um 4 Werte zu handeln, 
die aus Sicherheitsgruenden je 3 mal gespeichert werden.

Beispiel:
Tageskilomterzaehler = 132,1 km
Wort 1:  65514
Wort 2:  61667
Wort 3:  34509
Wort 4:  65533

setze ich ihn jetzt zurueck (auf 0km) wird geschrieben:
Wort 1:  65514
Wort 2:  65514
Wort 3:  32666
Wort 4:  65533

Falls jemand versteht, wie aus den 4 Worten die 132,1 bzw. die 0,0 wird, 
wuerde ich mich sehr freuen, wenn er mir das erklaeren wuerde.

MfG,

Balze aka AVR Noob

von Wilhelm F. (Gast)


Lesenswert?

Avr Noob schrieb:

> Falls jemand versteht, wie aus den 4 Worten die 132,1 bzw. die 0,0 wird,
> wuerde ich mich sehr freuen, wenn er mir das erklaeren wuerde.

Kannst du das noch einmal oder zweimal wiederholen? Natürlich mit viel 
weniger Tageskilometern. Eine Runde um den Block. Das gibt evtl. mehr 
Aufschluß.

von Avr N. (balze)


Angehängte Dateien:

Lesenswert?

Wilhelm Ferkes schrieb:
> Eine Runde um den Block.

Hallo Wilhelm,

wenn ich das koennte, wuerde ich das sehr gerne tun.

Leider liegt der Tacho auf meinem Schreibtisch und ist auch nicht ganz 
vollstaendig :)
(Ist aus einem Unfallmotorrad, ich habe den Tacho geschenkt bekommen und 
moechte ihn nun recyclen.)

Das einzige was ich noch zu bieten habe ist, dass ich einen zweiten 
Block gefunden habe, der dem ersten aehnelt und vermutlich den zweiten 
Tageskilomterzahler repraesentiert (124,4km).

Wort 1:  65514
Wort 2:  63120
Wort 3:  42687
Wort 4:  65533

Ich kann diesen auch noch zuruecksetzen wenn es hilft. (Dann waere ich 
mir ueber die Position des Blockes sicher)

Ich habe gestern abend bereits versucht mir ein Tachosignal mit einem 
andern µC zu generieren, aber der Tacho reagiert hier sehr empfindlich 
und meldet eine Stoerung. Am WE werde ich es ein weiteres mal mit dem 
original Motorradgeschwindigkeitssensor (und 'ner Bohrmaschiene :) 
)versuchen.

Vielen Dank.

MfG,

Balze

von hp-freund (Gast)


Lesenswert?

Ich habe zwar auch noch kein System erkannt, vorausgesetzt der Wert 
steht überhaupt im km drin, aber ein schönes Werkzeug zum entschlüsseln:

http://www.onlinehexeditor.com/

von Hans (Gast)


Lesenswert?

Kein Muster entdeckt. Hatte IEEE754 vermutet.

 132,1 Km   0 Km         124,4 Km

 65514 FFEA 65514 FFEA   65514 FFEA

 61667 F0E3 65514 FFEA   63120 F690
 34509 86CD 32666 7F9A   42687 A6BF

 65533 FFFD 65533 FFFD   65533 FFFD

von hp-freund (Gast)


Lesenswert?

Was ist wenn die Radumdrehungen gespeichert werden?

von J.-u. G. (juwe)


Lesenswert?

Ich halte es auch für unwahrscheinlich, das die Werte in Einheiten von 
km abgespeichert werden. Es wird wohl eher ein gerätespezifisches Format 
sein, das dann je nach Einsatzgebiet in km oder Meilen umgerechnet 
werden kann und dann dargestellt wird.

von Olek (Gast)


Lesenswert?

ist das net ein Float wert?

von Avr N. (balze)


Lesenswert?

Hallo zusammen,

vielen Dank für die tollen Anregungen.

Das die Werte in km gespeichert sind ist natuerlich keineswegs sicher.
Da es sich um einen Suzuki Tacho handelt und nur ueber den Tacho die 
Unterscheidung zwischen Meilen und Kilometer unterschieden wird, ist 
auch alles andere möglich.

Sollten Impulse gezählt werden, sind es 4,735793.. Impulse pro Meter.
1888 mm Radumfang (gemessen! Was der Tacho intern hat ist unklar.)
Übersetzung 17/38
4 Impulse pro Ritzelumdrehung
Sensor der Geschwindigkeitsmessung am Ritzel.
-> 0,211... m pro Impuls -> 4,735793... Impulse pro Meter

Danke fuer Eure Unterstuetzung.

MfG,

Balze

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Eventuell mal invers deuten

000,0  FFEA FFEA 7F9A FFFD = 0015 0015 8065 0002
124,4  FFEA F690 A6BF FFFD = 0015 096F 5940 0002
132,1  FFEA F0E3 86CD FFFD = 0015 0F1C 7932 0002

macht beim EEPROM vielleicht Sinn, weil der Löschzustand 1 ist und 
eventuell 1-Bits auch garnicht gelöscht werden.

Hättest du die Möglichkeit das EEPROM zu beschreiben ?

von Hans (Gast)


Lesenswert?

Wer noch ein wenig mit IEEE754 spielen möchte, schau sich diese Seite 
an: http://www.h-schmidt.net/FloatApplet/IEEE754.html

von J.-u. G. (juwe)


Lesenswert?

In Betracht zu ziehen ist auch, dass neben den Entfernungsdaten auch 
eine Checksumme zur Validitätsprüfung gespeichert wird. (Jedenfalls mach 
ich es bei meinen Projekten so).

von hp-freund (Gast)


Lesenswert?

Dennis Heynlein schrieb:
> Hättest du die Möglichkeit das EEPROM zu beschreiben ?

Das könnte helfen. Einfach mal ein paar Bit dazu zählen und die km 
anzeigen lassen.
Es heist ja auch "Reverse Engineering" ;-)

von Mike S. (drseltsam)


Lesenswert?

Ich denke mal, dass es so schwer sein wird, definitiv zu sagen, was da 
gespeichert wird. Man müsste wirklich mitschreiben, was passiert, wenn 
sich das Rad dreht. Vielleicht findest Du ja irgendwo eine Doku, in 
welcher Form die Impulse vorliegen.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Ist der Sensor am Rad ein Hallsensor ?

von Wilhelm F. (Gast)


Lesenswert?

Wer bestimmt denn überhaupt, wie Daten in einem Steuergerät gespeichert 
werden müssen? Normen, wie IEEE?

Sonst hätte ich auch mal vermutet, daß ein Entwickler einen lustigen Tag 
hat, und die Zahlen mit einer anderen Zahl einfach nur XOR-verschlüsselt 
und wieder entschlüsselt. Alles schon gesehen. So was macht man, wenn 
man möchte, daß ein Kunde in einem gekauften Gerät nicht hinter die 
Details kommt. Wenn man möchte, daß er es nicht nachbaut, und daran 
verzweifeln soll.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Wilhelm Ferkes schrieb:
> Wenn man möchte, daß er es nicht nachbaut, und daran
> verzweifeln soll.

Ist das nicht schon immer die Herausforderung von Reverse Engineering 
gewesen ?
Ein Entwickler mit einem lustigen Tag und ein Hacker mit Neugier.

von Wilhelm F. (Gast)


Lesenswert?

Dennis Heynlein schrieb:

> Ist das nicht schon immer die Herausforderung von Reverse Engineering
> gewesen ?
> Ein Entwickler mit einem lustigen Tag und ein Hacker mit Neugier.

Du hast Recht. Dann steht uns ja hier noch was bevor. Selbstverständlich 
ist mit reichlich Aufwand alles knackbar. Ich bin aber auch neugierig, 
auch wenn ich im Augenblick hier selbst noch mit den Schultern zucke.

Ich hol schon mal Popcorn, Chips, und ein Pils... ;-)

von Olek (Gast)


Lesenswert?

wäre auch ne Möglichkeit, das der Wert in Metern gepeichert wird und nur 
km angzeigt werden. Der Wert für 000,0 lässt doch vermuten, dass da ne 
andere Einheit als km im Hintergrund liegt.

von Hans (Gast)


Lesenswert?

Das Verhältnis (132,1/124,4) der Kilometerstände muss sich in der 
Zahlenansammlung wiederspiegel.

          normal          invertiert
124,4     F690 A6BF       096F 5940
132,1     F0E3 86CD       0F1C 7932

Beispiel (normal Zahlen Byte 3 u. 4 LowHigh): BFA6 * 132,1/124,4 = CB82

Ist zwar in der Nähe - aber ..

von Wilhelm F. (Gast)


Lesenswert?

Olek schrieb:

> Der Wert für 000,0 lässt doch vermuten, dass da ne
> andere Einheit als km im Hintergrund liegt.

Bei meinem Auto kann ich in einem Service-Mode Meilen und km auslesen. 
Aber da ist ja nur ein Umrechnungsfaktor von 1,652km/Meile dahinter. Wie 
aber die Steuergeräte programmiert sind, ob auf km- oder Meilenbasis, 
weiß ich nicht. Der Ford Fiesta wird ja auch in England mit konstruiert 
und gebaut.

Apropos Meile: Was haben die denn da noch für komische Einheiten? Fuß? 
Inch?

von Rene Z. (rzimmermann)


Lesenswert?

Hallo,

ich kenne es von PKW Tacho's das die Werte auf viele Bytes verteilt 
werden. Meist liegen die Daten ja in einem EEprom und der sollte nicht 
so oft beschrieben werden. BMW hatte das damals auf 16 Bytes verteilt. 
Also war:

01 km = 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02 km = 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00
09 km = 01 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01
17 km = 01 02 01 01 01 01 01 01 01 01 01 01 01 01 01 01

usw.

Vieleicht hilft es ja, Gruß Rene

von Avr N. (balze)


Lesenswert?

Hallo zusammen,

so, jetzt bin ich wieder online, musste mal eben nach hause fahren (von 
der Arbeit 8P )

Dennis Heynlein schrieb:
> Ist der Sensor am Rad ein Hallsensor ?

Es ist (vermutlich) ein Hallsensor am Ritzel mit einem Geber, der 4 
Impulse pro Umdrehung (des Ritzels) macht.


Ich bin gerade 2 virtuelle Kilometer gefahren, waehrend mein 
Logicanalyzer aufgezeichnet hat. (Mit der Bohrmaschine Tempo 150km/h  :) 
)

Resultat: Nix! Offensichtlich werden die Werte nur beim Abschalten der 
Zuendung gespeichert.
Leider habe ich nicht erst die virtuelle Zuendung ausgemacht, sondern 
gleich das Netzteil abgeschaltet, das +12V und Zuendung hergibt.


Mehr Info kann ich heute leider nicht zu Verfuegung stellen, da mir 
jetzt ein Lötauge der Platine abgerissen ist. :(

Das muss ich am WE erstmal wieder anfrickeln.

Danke fuer Euer Engagement!!

MfG,

Balze

von J.-u. G. (juwe)


Lesenswert?

Avr Noob schrieb:
> Resultat: Nix! Offensichtlich werden die Werte nur beim Abschalten der
> Zuendung gespeichert.

Angesichts der begrenzten Schreibzyklen des EEPROM ist dieses Vorgehen 
ziemlich sinnvoll.

Ich bin aber gespannt, was Deine weiteren Tests noch hervorbringen.

von Jobst M. (jobstens-de)


Lesenswert?

Olek schrieb:
> Der Wert für 000,0 lässt doch vermuten, dass da ne
> andere Einheit als km im Hintergrund liegt.

Jou, eine mit Offset. :-D


Gruß

Jobst

von Frank M. (aktenasche)


Lesenswert?

Rene Zimmermann schrieb:
> 01 km = 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 02 km = 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00
> 09 km = 01 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01
> 17 km = 01 02 01 01 01 01 01 01 01 01 01 01 01 01 01 01

wohl für den gesamtkilometerzähler? sonst wär das ja reichlich ungenau..

von Ben _. (burning_silicon)


Lesenswert?

> Bohrmaschiene
Jou, bohr ma' Schiene. Dann hat sie ein Loch... ;)

SCNR

von Jobst M. (jobstens-de)


Lesenswert?

Frank Meier schrieb:
> wohl für den gesamtkilometerzähler? sonst wär das ja reichlich ungenau..

Nö. Es sei denn, dafür würden 4080km reichen.


Gruß

Jobst

von Avr N. (balze)


Lesenswert?

Ben _ schrieb:
>> Bohrmaschiene
> Jou, bohr ma' Schiene. Dann hat sie ein Loch... ;)
>
> SCNR

Darfst das e behalten!

MfG,

Balze

P.S.: Korinthenzaehler ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.