summaryrefslogtreecommitdiff
path: root/pages/hackabike.md
diff options
context:
space:
mode:
authorhukl <hukl@berlin.ccc.de>2012-02-18 20:46:54 +0000
committerhukl <hukl@berlin.ccc.de>2020-05-23 13:39:12 +0000
commit552cfaeb9bd4df332104b970b5350b6ca782fbdb (patch)
treec1d661edb12073707ddb7c60b0efd726d5d65e3c /pages/hackabike.md
parent22412c7196db8885c968db46e727446da72cf0d3 (diff)
committing page revision 5
Diffstat (limited to 'pages/hackabike.md')
-rw-r--r--pages/hackabike.md108
1 files changed, 56 insertions, 52 deletions
diff --git a/pages/hackabike.md b/pages/hackabike.md
index 4f788d47..eeb6a4a2 100644
--- a/pages/hackabike.md
+++ b/pages/hackabike.md
@@ -1,30 +1,31 @@
1title: hackabike 1title: Hack a Bike
2date: 2009-11-02 01:04:00 2date: 2009-11-02 01:04:00
3updated: 2009-11-02 01:51:14 3updated: 2012-02-18 20:46:54
4author: erdgeist 4author: erdgeist
5tags: deutsche bahn, hack, bike, call, avr 5tags: deutsche bahn, hack, bike, call, avr, hackabike
6previewimage: /images/01.jpg 6previewimage: /images/01.jpg
7 7
8Schon immer mal nachts ohne Transportmöglichkeit in einem fremden Bezirk aufgewacht? "Mal schnell" ein Fahrrad benötigt? In Berlin und anderen Großstädten Deutschlands bietet Die Deutsche Bahn mit dem Call-A-Bike Service Abhilfe. 8Schon immer mal nachts ohne Transportmöglichkeit in einem fremden Bezirk aufgewacht? "Mal schnell" ein Fahrrad benötigt? In Berlin und anderen Großstädten Deutschlands bietet Die Deutsche Bahn mit dem Call-A-Bike Service Abhilfe.
9 9
10<!-- TEASER_END --> 10<!-- TEASER_END -->
11 11
12## **Kurzeinführung in das CallABike System** {#kurzeinführung-in-das-callabike-system .quote} 12## Kurzeinführung in das Call a Bike System {#kurzeinführung-in-das-call-a-bike-system .quote}
13 13
14Als Kunde ruft man die CallABike-Zentrale und gibt per DTMF-Wahl die 14Als Kunde ruft man die CallABike-Zentrale und gibt per DTMF-Wahl die
15vierstellige Radnummer durch. Von der Zentrale erhält man dann den 15vierstellige Radnummer durch. Von der Zentrale erhält man dann den
16vierstelligen Code, mit dem man das CallABike-Fahrad öffnen kann. Zur 16vierstelligen Code, mit dem man das CallABike-Fahrad öffnen kann. Zur
17Sicherheit wird man nach dem Anruf von der Zentrale zurückgerufen. Die 17Sicherheit wird man nach dem Anruf von der Zentrale zurückgerufen. Die
18letzten vier Ziffern des Rückrufes enthalten nochmal den Code - annehmen 18letzten vier Ziffern des Rückrufes enthalten nochmal den Code - annehmen
19muss man den Anruf deswegen nicht.\ 19muss man den Anruf deswegen nicht.
20
20Jetzt läuft die Uhr und der Kunde muss pro Minute 6 Cent bezahlen (mit 21Jetzt läuft die Uhr und der Kunde muss pro Minute 6 Cent bezahlen (mit
21Bahncard nur 4 Cent). Wenn der Kunde das CallABike einfach mal schnell 22Bahncard nur 4 Cent). Wenn der Kunde das CallABike einfach mal schnell
22abstellen will (z.B. für einen kurzen Einkauf), kann man das CallABike 23abstellen will (z.B. für einen kurzen Einkauf), kann man das CallABike
23abschließen und im Display auf ‘Nicht Abgeben’ tippen. Es ist sozusagen 24abschließen und im Display auf ‘Nicht Abgeben’ tippen. Es ist sozusagen
24kurz geparkt. Danach kann man das CallABike mit dem gleichen Code wie 25kurz geparkt. Danach kann man das CallABike mit dem gleichen Code wie
25beim ersten Mal öffnen. Das kann man so oft wiederholen, wie man möchte. 26beim ersten Mal öffnen. Das kann man so oft wiederholen, wie man möchte.
26Die Zeit, die man bezahlen muss, läuft natürlich weiter.\ 27Die Zeit, die man bezahlen muss, läuft natürlich weiter.
27\ 28
28Wenn der Kunde das CallABike dann endgültig abgeben will, muss er beim 29Wenn der Kunde das CallABike dann endgültig abgeben will, muss er beim
29Schließen auf ‘Abgeben’ tippen; das CallABike gibt einem dann den 30Schließen auf ‘Abgeben’ tippen; das CallABike gibt einem dann den
30Rückgabecode. Mit diesem Code kann man gegenüber der Zentrale 31Rückgabecode. Mit diesem Code kann man gegenüber der Zentrale
@@ -32,15 +33,13 @@ Rückgabecode. Mit diesem Code kann man gegenüber der Zentrale
32Man ruft jetzt einfach wieder die Zentrale an und gibt den Rückgabecode 33Man ruft jetzt einfach wieder die Zentrale an und gibt den Rückgabecode
33durch. Danach muss man noch die Straßenecke auf Band sprechen, an der 34durch. Danach muss man noch die Straßenecke auf Band sprechen, an der
34man das CallABike abgestellt hat. Die Mietzeit wird damit dann auch 35man das CallABike abgestellt hat. Die Mietzeit wird damit dann auch
35beendet.\ 36beendet. Es ist auch möglich, zwei Räder mit einem Anruf auszuleihen
36\ 37oder abzugeben. Wenn der Kunde in seiner Nähe kein CallABike-Rad findet,
37Es ist auch möglich, zwei Räder mit einem Anruf auszuleihen oder 38kann er auch die Zentrale anrufen und fragen, wo das nächste CallABike-
38abzugeben. Wenn der Kunde in seiner Nähe kein CallABike-Rad findet, kann 39Rad steht. Ein Servicemitarbeiter der Bahn schaut dann in der Datenbank
39er auch die Zentrale anrufen und fragen, wo das nächste CallABike- Rad 40nach und gibt den Standort des nächstgelegenen CallABike-Rads durch.\
40steht. Ein Servicemitarbeiter der Bahn schaut dann in der Datenbank nach 41[Offizielle CallABike Webseite](http://www.callabike.de/i_fahrrad.html)
41und gibt den Standort des nächstgelegenen CallABike-Rads durch.\ 42
42[Offizielle CallABike Webseite](http://www.callabike.de/i_fahrrad.html)\
43\
44..."Es gibt natürlich auch andere Zeitgenossen, die haben, schon aus 43..."Es gibt natürlich auch andere Zeitgenossen, die haben, schon aus
45sportiven Gründen, allerlei versucht, um die Standfestigkeit der 44sportiven Gründen, allerlei versucht, um die Standfestigkeit der
46Hardware oder das elektronische Prinzip der eingebauten Mikrochips und 45Hardware oder das elektronische Prinzip der eingebauten Mikrochips und
@@ -53,8 +52,10 @@ Ausflüge auf einem grünen Puky-Rad unternahm, sich heutzutage aber als
53“postmoderner Urbaniker”, denn als “Fahrradfreak” versteht. Er lächelt 52“postmoderner Urbaniker”, denn als “Fahrradfreak” versteht. Er lächelt
54und sagt: “Erst diese Technik macht uns zum weltweit einzigen 53und sagt: “Erst diese Technik macht uns zum weltweit einzigen
55stationsunabhängigen Stadtradsystem. Der Code ist nicht zu knacken und 54stationsunabhängigen Stadtradsystem. Der Code ist nicht zu knacken und
56darauf sind wir richtig stolz.”... Kurzer Auszug eines Interviews mit 55darauf sind wir richtig stolz."...
57einem Call A Bike Techniker im Magazin Mobil der Deutschen Bahn 56
57*Kurzer Auszug eines Interviews mit einem Call A Bike Techniker im
58Magazin Mobil der Deutschen Bahn*
58 59
59## Artikel: 60## Artikel:
60 61
@@ -68,15 +69,17 @@ durch Batterien sichergestellt (3x 1.5V Mono). Die beiden Kästen sind
68durch eine Art Bügel miteinander verbunden. In diesem Bügel befindet 69durch eine Art Bügel miteinander verbunden. In diesem Bügel befindet
69sich ein sechspoliges Kabel für den Strom und zwei Spulen. Damit kann 70sich ein sechspoliges Kabel für den Strom und zwei Spulen. Damit kann
70geprüft werden, ob das Schloss wirklich geschlossen ist, oder einfach 71geprüft werden, ob das Schloss wirklich geschlossen ist, oder einfach
71kein oder nur irgendein anderer Bolzen zum Verschließen genommen wurde.\ 72kein oder nur irgendein anderer Bolzen zum Verschließen genommen wurde.
72\ 73
74 
75
73Der Kasten mit dem Display enthält den Exzentermotor zum öffnen des 76Der Kasten mit dem Display enthält den Exzentermotor zum öffnen des
74Schlosses, zwei Taster (Mikroschalter) und ein kapazitives 5x2-Touchpad. 77Schlosses, zwei Taster (Mikroschalter) und ein kapazitives 5x2-Touchpad.
75Die Hauptlogik sitzt unter dem Display. Sie ist nochmal durch eine 78Die Hauptlogik sitzt unter dem Display. Sie ist nochmal durch eine
76Metallplatte abgesichert, welche nur die Kabel zum Display/Touchpad 79Metallplatte abgesichert, welche nur die Kabel zum Display/Touchpad
77durchlässt. Damit wird der Motor und der Verschlussmechanismus vor einer 80durchlässt. Damit wird der Motor und der Verschlussmechanismus vor einer
78Attacke durchs Display geschützt.\ 81Attacke durchs Display geschützt.
79\ 82
80Die gesamte Platine ist mit schwarzem Silikon übergossen, das man 83Die gesamte Platine ist mit schwarzem Silikon übergossen, das man
81erstmal runterkratzen muss. Das geht prima mit einer Mess-Spitze. Außer 84erstmal runterkratzen muss. Das geht prima mit einer Mess-Spitze. Außer
82einer streichholzschachtelgroßen Platine (Rückseite Datenschleuder 82), 85einer streichholzschachtelgroßen Platine (Rückseite Datenschleuder 82),
@@ -92,8 +95,8 @@ Aktion gemacht, aber dann lag die Technik erstmal zwei Monate einsam in
92einer Kiste, weil wir es nicht geschafft haben, das CallABike zu booten. 95einer Kiste, weil wir es nicht geschafft haben, das CallABike zu booten.
93Es dauerte eine Weile, bis wir merkten, dass das System nach dem Booten 96Es dauerte eine Weile, bis wir merkten, dass das System nach dem Booten
94durch ein Infrarot-Signal aktiviert werden muss. Das war mehr oder 97durch ein Infrarot-Signal aktiviert werden muss. Das war mehr oder
95weniger Zufall.\ 98weniger Zufall.
96\ 99
97Wenn man eine normale Glühlampe benutzt, um besser sehen zu koennen, 100Wenn man eine normale Glühlampe benutzt, um besser sehen zu koennen,
98piepte die Elektronik gelegentlich scheinbar unmotiviert. Wie sich 101piepte die Elektronik gelegentlich scheinbar unmotiviert. Wie sich
99später herausstellte, reichte der durch die Glühlampe emittierte 102später herausstellte, reichte der durch die Glühlampe emittierte
@@ -105,8 +108,8 @@ Infrarot-Photon-Micro-Light ersetzt. Bei unserer weiteren Analyse des
105Systems begannen wir damit, alle Anschlüsse des Atmel durchzumessen, um 108Systems begannen wir damit, alle Anschlüsse des Atmel durchzumessen, um
106uns einen ungefähren Schaltplan zu erstellen (siehe Bild). Die 109uns einen ungefähren Schaltplan zu erstellen (siehe Bild). Die
107Datenblätter für den Atmel und das verwendete Display haben wir uns aus 110Datenblätter für den Atmel und das verwendete Display haben wir uns aus
108dem Web besorgt.\ 111dem Web besorgt.
109\ 112
110Im Januar hatte einer der Beteiligten dann endlich eine Idee, wie weiter 113Im Januar hatte einer der Beteiligten dann endlich eine Idee, wie weiter
111vorzugehen sei. Auf der Platine war uns eine unbenutzte 6-polige 114vorzugehen sei. Auf der Platine war uns eine unbenutzte 6-polige
112Steckerleiste aufgefallen, und wie sich herausstellte, handelt es sich 115Steckerleiste aufgefallen, und wie sich herausstellte, handelt es sich
@@ -119,8 +122,8 @@ AVR microcontrollers which can interface to many hardware in-system
119programmers”) benutzt. Die auf dem Atmel vorhandenen 122programmers”) benutzt. Die auf dem Atmel vorhandenen
120„Intellectual-Property“-Bits waren in einem undefinierten Zustand, 123„Intellectual-Property“-Bits waren in einem undefinierten Zustand,
121deswegen konnten wir das Flash des Atmels mit der 8KB großen Firmware 124deswegen konnten wir das Flash des Atmels mit der 8KB großen Firmware
122auslesen.\ 125auslesen.
123\ 126
124In den nächsten Wochen waren mehrere Hacker damit beschäftigt, den 127In den nächsten Wochen waren mehrere Hacker damit beschäftigt, den
125ausgelesenen Assemblercode zu verstehen und zu dokumentieren. Dazu 128ausgelesenen Assemblercode zu verstehen und zu dokumentieren. Dazu
126verwendeten wir AVR-Studio und [Ida 129verwendeten wir AVR-Studio und [Ida
@@ -129,8 +132,8 @@ berechnen der Ausleih- und Abgabecodes) fanden wir relativ schnell, da
129sich dort eine Menge rotate-und-shift-Befehle befanden. Den 132sich dort eine Menge rotate-und-shift-Befehle befanden. Den
130Initialisierungscode erkannten wir wieder, da wir wussten, dass der 133Initialisierungscode erkannten wir wieder, da wir wussten, dass der
131Motor sich beim Einschalten zweimal herumdreht. So konnten wir das 134Motor sich beim Einschalten zweimal herumdreht. So konnten wir das
132gelernte immer wieder an unserem Prototyp auf Richtigkeit überprüfen.\ 135gelernte immer wieder an unserem Prototyp auf Richtigkeit überprüfen.
133\ 136
134Die Ausleih- und Abgabecodes werden durch einen Scrambler generiert, der 137Die Ausleih- und Abgabecodes werden durch einen Scrambler generiert, der
135mit einem 16Bit-Counter des CallABikes und einem Zustandswert aufgerufen 138mit einem 16Bit-Counter des CallABikes und einem Zustandswert aufgerufen
136wird. Ein gerader Counterwert erzeugt Ausleihcodes und ein ungerader 139wird. Ein gerader Counterwert erzeugt Ausleihcodes und ein ungerader
@@ -148,8 +151,8 @@ geöffnet haben und die wir wegen der Lockbits nicht auslesen konnten,
148haben wir mit einem Script 511 mal resetten lassen (bei einem Reset 151haben wir mit einem Script 511 mal resetten lassen (bei einem Reset
149erhöht sich der Counter immer um zwei). Damit haben wir den 152erhöht sich der Counter immer um zwei). Damit haben wir den
150ursprünglichen Zustand wiederhergestellt, und das CallABike war wieder 153ursprünglichen Zustand wiederhergestellt, und das CallABike war wieder
151‘in sync’ mit der Zentrale.\ 154‘in sync’ mit der Zentrale.
152\ 155
153Wer sich das Display mal genauer angeschaut hat, wird festgestellt 156Wer sich das Display mal genauer angeschaut hat, wird festgestellt
154haben, dass der Zeichensatz ein proportionaler ist. Dazu gibt es im Code 157haben, dass der Zeichensatz ein proportionaler ist. Dazu gibt es im Code
155eine Tabelle, in der die Länge des Zeichens und die Position im Flash 158eine Tabelle, in der die Länge des Zeichens und die Position im Flash
@@ -157,15 +160,15 @@ gespeichert sind. Ein ‘i’ und ein ‘!’ belegen nur ein Byte, wogegen z.B.
157ein ‘w’ sieben Bytes belegt. Die großen Logos und das Zahleneingabefeld 160ein ‘w’ sieben Bytes belegt. Die großen Logos und das Zahleneingabefeld
158liegen als 400 Byte große Bitmaps vor. Die lange schwarze Linie im 161liegen als 400 Byte große Bitmaps vor. Die lange schwarze Linie im
159CallABike-Logo zeigt die Stärke der Spule im Schloss an. Das haben wir 162CallABike-Logo zeigt die Stärke der Spule im Schloss an. Das haben wir
160nur durch das Code-Auditing herausgefunden.\ 163nur durch das Code-Auditing herausgefunden.
161\ 164
162Unser erstes Ziel war es, den aus unserem Disassembler erhaltenen 165Unser erstes Ziel war es, den aus unserem Disassembler erhaltenen
163Sourcecode so anzupassen, dass nach dem Assemblieren mit dem Commandline 166Sourcecode so anzupassen, dass nach dem Assemblieren mit dem Commandline
164Tool [Avra](http://avra.sourceforge.net/) (“Assembler for the Atmel AVR 167Tool [Avra](http://avra.sourceforge.net/) (“Assembler for the Atmel AVR
165microcontrollers”) ein EXAKT identisches Binary herauskam. Auf der 168microcontrollers”) ein EXAKT identisches Binary herauskam. Auf der
166Grundlage dieses Referenzcodes konnten wir dann endlich änderungen 169Grundlage dieses Referenzcodes konnten wir dann endlich änderungen
167vornehmen.\ 170vornehmen.
168\ 171
169Nachdem wir uns diese Grundlage geschaffen hatten, konnten wir das 172Nachdem wir uns diese Grundlage geschaffen hatten, konnten wir das
170CallABike mit unserem eigenen Code flashen. Da wir keine Vulnerabilities 173CallABike mit unserem eigenen Code flashen. Da wir keine Vulnerabilities
171oder Backdoors fanden (jedes CallABike hat einen eigenen Key, der im 174oder Backdoors fanden (jedes CallABike hat einen eigenen Key, der im
@@ -185,8 +188,8 @@ ja der öffner nichts bezahlen muss und deswegen nicht motiviert ist,
185sich weiter um das Rad zu kümmern, und es aber auch niemand anders 188sich weiter um das Rad zu kümmern, und es aber auch niemand anders
186aufmachen könnte. Um das HackABike auch auf größere Entfernung noch von 189aufmachen könnte. Um das HackABike auch auf größere Entfernung noch von
187seinen unbehandelten Verwandten unterscheiden zu können, haben wir ihm 190seinen unbehandelten Verwandten unterscheiden zu können, haben wir ihm
188eine leicht veränderte Blink-Sequenz beigebracht.\ 191eine leicht veränderte Blink-Sequenz beigebracht.
189\ 192
190Im Verlauf der weiteren Analyse des Codes ist uns aufgefallen, dass das 193Im Verlauf der weiteren Analyse des Codes ist uns aufgefallen, dass das
191CallABike im Abgabecode integriert Statusinformationen an die Zentrale 194CallABike im Abgabecode integriert Statusinformationen an die Zentrale
192durchgeben kann. Je nachdem, in welchem technischen Zustand sich das 195durchgeben kann. Je nachdem, in welchem technischen Zustand sich das
@@ -197,8 +200,8 @@ Schloss nicht mehr in der richtigen Stellung ist. Wenn man z.B. den
197Schließknopf sieben mal ohne eingeführten Bolzen drückt, liefert der 200Schließknopf sieben mal ohne eingeführten Bolzen drückt, liefert der
198Scrambler einen entsprechenden Rückgabecode, der gültig ist, diesen 201Scrambler einen entsprechenden Rückgabecode, der gültig ist, diesen
199Zustand aber für die Zentrale erkennbar anzeigt. Von diesen Codes gibt 202Zustand aber für die Zentrale erkennbar anzeigt. Von diesen Codes gibt
200es 52 (eine Matrix aus 4x13).\ 203es 52 (eine Matrix aus 4x13).
201\ 204
202Die Backdoor erlaubt, das HackABike mit einem von uns festgelegten 205Die Backdoor erlaubt, das HackABike mit einem von uns festgelegten
203Ausleihcode einfach zu öffnen. Wenn man das HackABike dann wieder 206Ausleihcode einfach zu öffnen. Wenn man das HackABike dann wieder
204abgibt, ist es ganz normal wieder ausleihbar. Es steht auch wieder der 207abgibt, ist es ganz normal wieder ausleihbar. Es steht auch wieder der
@@ -206,8 +209,8 @@ Ausleihcode des vorherigen Kunden im Display. Die Zentrale merkt von
206diesem eingeschobenen Ausleihvorgang nichts - außer, dass es an einem 209diesem eingeschobenen Ausleihvorgang nichts - außer, dass es an einem
207anderem Ort steht, als es in der Datenbank vermerkt ist. Wenn es dann 210anderem Ort steht, als es in der Datenbank vermerkt ist. Wenn es dann
208aber wieder normal ausgeliehen und abgestellt wird, ist auch in der 211aber wieder normal ausgeliehen und abgestellt wird, ist auch in der
209Zentrale alles wieder in Ordnung.\ 212Zentrale alles wieder in Ordnung.
210\ 213
211Um ein CallABike in ein HackABike zu verwandeln, mussten wir sechs 214Um ein CallABike in ein HackABike zu verwandeln, mussten wir sechs
212Schrauben auf der Innenseite des Schlosskastens mit dem Display öffnen 215Schrauben auf der Innenseite des Schlosskastens mit dem Display öffnen
213und das Kabel des STK500 an den ISP-Anschluss der Platine stecken. 216und das Kabel des STK500 an den ISP-Anschluss der Platine stecken.
@@ -222,8 +225,8 @@ ihnen eine neue firmware verpasst wurde. Da UISP das Setzen der Lockbits
222nicht korrekt unterstützte, mussten wir das erstmal einbauen. Dazu haben 225nicht korrekt unterstützte, mussten wir das erstmal einbauen. Dazu haben
223wir den Output von AVR-Studio mit einem serial sniffer mitgelesen und 226wir den Output von AVR-Studio mit einem serial sniffer mitgelesen und
224uns die entsprechenden Kommandos für das STK500 rausgesucht und in UISP 227uns die entsprechenden Kommandos für das STK500 rausgesucht und in UISP
225eingebaut.\ 228eingebaut.
226\ 229
227Abschließend ist festzustellen, dass das technische Design des CallABike 230Abschließend ist festzustellen, dass das technische Design des CallABike
228in unseren Augen sehr gut ist. Jedes CallABike hat vermutlich einen 231in unseren Augen sehr gut ist. Jedes CallABike hat vermutlich einen
229eigenen 1024 Bit Key, der benötigt wird, um die Abgabe- und Ausleihcodes 232eigenen 1024 Bit Key, der benötigt wird, um die Abgabe- und Ausleihcodes
@@ -232,6 +235,8 @@ ausgelesen werden. Es wurde nur versäumt, die Lockbits zu setzen, um die
232Firmware vor dem Auslesen zu schützen. Unsere Attacke ist von den 235Firmware vor dem Auslesen zu schützen. Unsere Attacke ist von den
233verbrauchten Mannstunden wohl mehr Wert als ein paar Dutzend CallABikes. 236verbrauchten Mannstunden wohl mehr Wert als ein paar Dutzend CallABikes.
234 237
238 
239
235 EEPROM Content: 240 EEPROM Content:
236 241
237 0x0000 - 0x0001 unused 242 0x0000 - 0x0001 unused
@@ -244,14 +249,13 @@ verbrauchten Mannstunden wohl mehr Wert als ein paar Dutzend CallABikes.
244 0x00A0 - 0x00A2 first three bytes of key again 249 0x00A0 - 0x00A2 first three bytes of key again
245 0x00A3 - 0x00AF unused 250 0x00A3 - 0x00AF unused
246 0x00B0 - 0x01FF textmessages for display 251 0x00B0 - 0x01FF textmessages for display
247
248 252
249 bikecounter: 0x015E 253 bikecounter: 0x015E
250 EEPROM belongs to bike 3856 254 EEPROM belongs to bike 3856
251 255
252 Counter 0x0162: 3042 9843 5360 <-- rentcode 256 Counter 0x0162: 3042 9843 5360 <-- rentcode
253 257
254 -00- -01- -02- -03- -04- -05- -06- -07- -08- -09- -10- -11- -12- -13- 258 -00- -01- -02- -03- -04- -05- -06- -07- -08- -09- -10- -11- -12- -13-
255 00: 8584 7572 6970 4597 9119 4285 2144 0277 3197 0072 5545 6487 6341 9664 259 00: 8584 7572 6970 4597 9119 4285 2144 0277 3197 0072 5545 6487 6341 9664
256 01: 5244 2345 5463 6065 9493 2971 9352 5402 5519 4579 8355 9533 9245 4926 260 01: 5244 2345 5463 6065 9493 2971 9352 5402 5519 4579 8355 9533 9245 4926
257 10: 6615 7508 8159 7355 8125 3632 2920 4348 0484 7784 0084 6154 8905 6742 261 10: 6615 7508 8159 7355 8125 3632 2920 4348 0484 7784 0084 6154 8905 6742
@@ -259,30 +263,28 @@ verbrauchten Mannstunden wohl mehr Wert als ein paar Dutzend CallABikes.
259 263
260 Counter 0x0164: 7240 7043 9766 <-- rentcode 264 Counter 0x0164: 7240 7043 9766 <-- rentcode
261 265
262 -00- -01- -02- -03- -04- -05- -06- -07- -08- -09- -10- -11- -12- -13- 266 -00- -01- -02- -03- -04- -05- -06- -07- -08- -09- -10- -11- -12- -13-
263 00: 1542 5463 4821 7206 8181 5293 5100 8370 7662 7831 6561 1071 9350 7554 267 00: 1542 5463 4821 7206 8181 5293 5100 8370 7662 7831 6561 1071 9350 7554
264 01: 8480 7640 5094 4420 7470 5025 6472 0596 9260 5499 4274 0341 7092 7363 268 01: 8480 7640 5094 4420 7470 5025 6472 0596 9260 5499 4274 0341 7092 7363
265 10: 6369 3545 6991 9042 0121 7702 7931 5600 6755 8264 9063 9596 6918 8761 269 10: 6369 3545 6991 9042 0121 7702 7931 5600 6755 8264 9063 9596 6918 8761
266 11: 4254 0960 8294 7529 9793 4954 5455 9345 0183 3995 4992 5949 4392 9538 270 11: 4254 0960 8294 7529 9793 4954 5455 9345 0183 3995 4992 5949 4392 9538
267 271
268 Here you see the open and close pins of the bike 3856 with 272 //Here you see the open and close pins of the bike 3856 with
269 the counter at 0x0162 273 the counter at 0x0162
270 At first the Customer gets the open pin 3042. When the customer 274 At first the Customer gets the open pin 3042. When the customer
271 closes the lock and everything is ok he gets the return code 8584. 275 closes the lock and everything is ok he gets the return code 8584.
272 When for example the battery (-01-) is exhausted he gets the return code 276 When for example the battery (-01-) is exhausted he gets the return code
273 7572. 277 7572.
274
275 278
276 The following commands are possible via infrared: 279 //The following commands are possible via infrared:
277 0x5B read bikenumber 280 0x5B read bikenumber
278 0xCE calibrate coil 281 0xCE calibrate coil
279 0xC5 read RAM from 0x00AD 282 0xC5 read RAM from 0x00AD
280 283
281 after transmit of the first 32 bytes of the key 284 //after transmit of the first 32 bytes of the key
282 0xCA enable watchdog (reboot) 285 0xCA enable watchdog (reboot)
283 0xC8 write and read the key of the EEPROM 286 0xC8 write and read the key of the EEPROM
284 0xCD write and read other parts of the EEPROM 287 0xCD write and read other parts of the EEPROM
285
286 288
287 //Code zum Generieren der Abgabe/Ausleihcodes bei gegebenem Key aus dem eeprom 289 //Code zum Generieren der Abgabe/Ausleihcodes bei gegebenem Key aus dem eeprom
288 290
@@ -351,3 +353,5 @@ verbrauchten Mannstunden wohl mehr Wert als ein paar Dutzend CallABikes.
351 0x3E,0xBE,0xB9,0x1F,0xA8,0xF9,0x61,0x0B, 353 0x3E,0xBE,0xB9,0x1F,0xA8,0xF9,0x61,0x0B,
352 0xD6,0x7F,0x75,0xE7,0xF4,0x31,0x3F,0x6B 354 0xD6,0x7F,0x75,0xE7,0xF4,0x31,0x3F,0x6B
353 }; 355 };
356
357