diff options
-rw-r--r-- | pages/hackabike.md | 108 |
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 @@ | |||
1 | title: hackabike | 1 | title: Hack a Bike |
2 | date: 2009-11-02 01:04:00 | 2 | date: 2009-11-02 01:04:00 |
3 | updated: 2009-11-02 01:51:14 | 3 | updated: 2012-02-18 20:46:54 |
4 | author: erdgeist | 4 | author: erdgeist |
5 | tags: deutsche bahn, hack, bike, call, avr | 5 | tags: deutsche bahn, hack, bike, call, avr, hackabike |
6 | previewimage: /images/01.jpg | 6 | previewimage: /images/01.jpg |
7 | 7 | ||
8 | Schon 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. | 8 | Schon 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 | ||
14 | Als Kunde ruft man die CallABike-Zentrale und gibt per DTMF-Wahl die | 14 | Als Kunde ruft man die CallABike-Zentrale und gibt per DTMF-Wahl die |
15 | vierstellige Radnummer durch. Von der Zentrale erhält man dann den | 15 | vierstellige Radnummer durch. Von der Zentrale erhält man dann den |
16 | vierstelligen Code, mit dem man das CallABike-Fahrad öffnen kann. Zur | 16 | vierstelligen Code, mit dem man das CallABike-Fahrad öffnen kann. Zur |
17 | Sicherheit wird man nach dem Anruf von der Zentrale zurückgerufen. Die | 17 | Sicherheit wird man nach dem Anruf von der Zentrale zurückgerufen. Die |
18 | letzten vier Ziffern des Rückrufes enthalten nochmal den Code - annehmen | 18 | letzten vier Ziffern des Rückrufes enthalten nochmal den Code - annehmen |
19 | muss man den Anruf deswegen nicht.\ | 19 | muss man den Anruf deswegen nicht. |
20 | |||
20 | Jetzt läuft die Uhr und der Kunde muss pro Minute 6 Cent bezahlen (mit | 21 | Jetzt läuft die Uhr und der Kunde muss pro Minute 6 Cent bezahlen (mit |
21 | Bahncard nur 4 Cent). Wenn der Kunde das CallABike einfach mal schnell | 22 | Bahncard nur 4 Cent). Wenn der Kunde das CallABike einfach mal schnell |
22 | abstellen will (z.B. für einen kurzen Einkauf), kann man das CallABike | 23 | abstellen will (z.B. für einen kurzen Einkauf), kann man das CallABike |
23 | abschließen und im Display auf ‘Nicht Abgeben’ tippen. Es ist sozusagen | 24 | abschließen und im Display auf ‘Nicht Abgeben’ tippen. Es ist sozusagen |
24 | kurz geparkt. Danach kann man das CallABike mit dem gleichen Code wie | 25 | kurz geparkt. Danach kann man das CallABike mit dem gleichen Code wie |
25 | beim ersten Mal öffnen. Das kann man so oft wiederholen, wie man möchte. | 26 | beim ersten Mal öffnen. Das kann man so oft wiederholen, wie man möchte. |
26 | Die Zeit, die man bezahlen muss, läuft natürlich weiter.\ | 27 | Die Zeit, die man bezahlen muss, läuft natürlich weiter. |
27 | \ | 28 | |
28 | Wenn der Kunde das CallABike dann endgültig abgeben will, muss er beim | 29 | Wenn der Kunde das CallABike dann endgültig abgeben will, muss er beim |
29 | Schließen auf ‘Abgeben’ tippen; das CallABike gibt einem dann den | 30 | Schließen auf ‘Abgeben’ tippen; das CallABike gibt einem dann den |
30 | Rückgabecode. Mit diesem Code kann man gegenüber der Zentrale | 31 | Rü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 | |||
32 | Man ruft jetzt einfach wieder die Zentrale an und gibt den Rückgabecode | 33 | Man ruft jetzt einfach wieder die Zentrale an und gibt den Rückgabecode |
33 | durch. Danach muss man noch die Straßenecke auf Band sprechen, an der | 34 | durch. Danach muss man noch die Straßenecke auf Band sprechen, an der |
34 | man das CallABike abgestellt hat. Die Mietzeit wird damit dann auch | 35 | man das CallABike abgestellt hat. Die Mietzeit wird damit dann auch |
35 | beendet.\ | 36 | beendet. Es ist auch möglich, zwei Räder mit einem Anruf auszuleihen |
36 | \ | 37 | oder abzugeben. Wenn der Kunde in seiner Nähe kein CallABike-Rad findet, |
37 | Es ist auch möglich, zwei Räder mit einem Anruf auszuleihen oder | 38 | kann er auch die Zentrale anrufen und fragen, wo das nächste CallABike- |
38 | abzugeben. Wenn der Kunde in seiner Nähe kein CallABike-Rad findet, kann | 39 | Rad steht. Ein Servicemitarbeiter der Bahn schaut dann in der Datenbank |
39 | er auch die Zentrale anrufen und fragen, wo das nächste CallABike- Rad | 40 | nach und gibt den Standort des nächstgelegenen CallABike-Rads durch.\ |
40 | steht. Ein Servicemitarbeiter der Bahn schaut dann in der Datenbank nach | 41 | [Offizielle CallABike Webseite](http://www.callabike.de/i_fahrrad.html) |
41 | und 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 |
45 | sportiven Gründen, allerlei versucht, um die Standfestigkeit der | 44 | sportiven Gründen, allerlei versucht, um die Standfestigkeit der |
46 | Hardware oder das elektronische Prinzip der eingebauten Mikrochips und | 45 | Hardware 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 |
54 | und sagt: “Erst diese Technik macht uns zum weltweit einzigen | 53 | und sagt: “Erst diese Technik macht uns zum weltweit einzigen |
55 | stationsunabhängigen Stadtradsystem. Der Code ist nicht zu knacken und | 54 | stationsunabhängigen Stadtradsystem. Der Code ist nicht zu knacken und |
56 | darauf sind wir richtig stolz.”... Kurzer Auszug eines Interviews mit | 55 | darauf sind wir richtig stolz."... |
57 | einem Call A Bike Techniker im Magazin Mobil der Deutschen Bahn | 56 | |
57 | *Kurzer Auszug eines Interviews mit einem Call A Bike Techniker im | ||
58 | Magazin 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 | |||
68 | durch eine Art Bügel miteinander verbunden. In diesem Bügel befindet | 69 | durch eine Art Bügel miteinander verbunden. In diesem Bügel befindet |
69 | sich ein sechspoliges Kabel für den Strom und zwei Spulen. Damit kann | 70 | sich ein sechspoliges Kabel für den Strom und zwei Spulen. Damit kann |
70 | geprüft werden, ob das Schloss wirklich geschlossen ist, oder einfach | 71 | geprüft werden, ob das Schloss wirklich geschlossen ist, oder einfach |
71 | kein oder nur irgendein anderer Bolzen zum Verschließen genommen wurde.\ | 72 | kein oder nur irgendein anderer Bolzen zum Verschließen genommen wurde. |
72 | \ | 73 | |
74 | |||
75 | |||
73 | Der Kasten mit dem Display enthält den Exzentermotor zum öffnen des | 76 | Der Kasten mit dem Display enthält den Exzentermotor zum öffnen des |
74 | Schlosses, zwei Taster (Mikroschalter) und ein kapazitives 5x2-Touchpad. | 77 | Schlosses, zwei Taster (Mikroschalter) und ein kapazitives 5x2-Touchpad. |
75 | Die Hauptlogik sitzt unter dem Display. Sie ist nochmal durch eine | 78 | Die Hauptlogik sitzt unter dem Display. Sie ist nochmal durch eine |
76 | Metallplatte abgesichert, welche nur die Kabel zum Display/Touchpad | 79 | Metallplatte abgesichert, welche nur die Kabel zum Display/Touchpad |
77 | durchlässt. Damit wird der Motor und der Verschlussmechanismus vor einer | 80 | durchlässt. Damit wird der Motor und der Verschlussmechanismus vor einer |
78 | Attacke durchs Display geschützt.\ | 81 | Attacke durchs Display geschützt. |
79 | \ | 82 | |
80 | Die gesamte Platine ist mit schwarzem Silikon übergossen, das man | 83 | Die gesamte Platine ist mit schwarzem Silikon übergossen, das man |
81 | erstmal runterkratzen muss. Das geht prima mit einer Mess-Spitze. Außer | 84 | erstmal runterkratzen muss. Das geht prima mit einer Mess-Spitze. Außer |
82 | einer streichholzschachtelgroßen Platine (Rückseite Datenschleuder 82), | 85 | einer streichholzschachtelgroßen Platine (Rückseite Datenschleuder 82), |
@@ -92,8 +95,8 @@ Aktion gemacht, aber dann lag die Technik erstmal zwei Monate einsam in | |||
92 | einer Kiste, weil wir es nicht geschafft haben, das CallABike zu booten. | 95 | einer Kiste, weil wir es nicht geschafft haben, das CallABike zu booten. |
93 | Es dauerte eine Weile, bis wir merkten, dass das System nach dem Booten | 96 | Es dauerte eine Weile, bis wir merkten, dass das System nach dem Booten |
94 | durch ein Infrarot-Signal aktiviert werden muss. Das war mehr oder | 97 | durch ein Infrarot-Signal aktiviert werden muss. Das war mehr oder |
95 | weniger Zufall.\ | 98 | weniger Zufall. |
96 | \ | 99 | |
97 | Wenn man eine normale Glühlampe benutzt, um besser sehen zu koennen, | 100 | Wenn man eine normale Glühlampe benutzt, um besser sehen zu koennen, |
98 | piepte die Elektronik gelegentlich scheinbar unmotiviert. Wie sich | 101 | piepte die Elektronik gelegentlich scheinbar unmotiviert. Wie sich |
99 | später herausstellte, reichte der durch die Glühlampe emittierte | 102 | später herausstellte, reichte der durch die Glühlampe emittierte |
@@ -105,8 +108,8 @@ Infrarot-Photon-Micro-Light ersetzt. Bei unserer weiteren Analyse des | |||
105 | Systems begannen wir damit, alle Anschlüsse des Atmel durchzumessen, um | 108 | Systems begannen wir damit, alle Anschlüsse des Atmel durchzumessen, um |
106 | uns einen ungefähren Schaltplan zu erstellen (siehe Bild). Die | 109 | uns einen ungefähren Schaltplan zu erstellen (siehe Bild). Die |
107 | Datenblätter für den Atmel und das verwendete Display haben wir uns aus | 110 | Datenblätter für den Atmel und das verwendete Display haben wir uns aus |
108 | dem Web besorgt.\ | 111 | dem Web besorgt. |
109 | \ | 112 | |
110 | Im Januar hatte einer der Beteiligten dann endlich eine Idee, wie weiter | 113 | Im Januar hatte einer der Beteiligten dann endlich eine Idee, wie weiter |
111 | vorzugehen sei. Auf der Platine war uns eine unbenutzte 6-polige | 114 | vorzugehen sei. Auf der Platine war uns eine unbenutzte 6-polige |
112 | Steckerleiste aufgefallen, und wie sich herausstellte, handelt es sich | 115 | Steckerleiste aufgefallen, und wie sich herausstellte, handelt es sich |
@@ -119,8 +122,8 @@ AVR microcontrollers which can interface to many hardware in-system | |||
119 | programmers”) benutzt. Die auf dem Atmel vorhandenen | 122 | programmers”) benutzt. Die auf dem Atmel vorhandenen |
120 | „Intellectual-Property“-Bits waren in einem undefinierten Zustand, | 123 | „Intellectual-Property“-Bits waren in einem undefinierten Zustand, |
121 | deswegen konnten wir das Flash des Atmels mit der 8KB großen Firmware | 124 | deswegen konnten wir das Flash des Atmels mit der 8KB großen Firmware |
122 | auslesen.\ | 125 | auslesen. |
123 | \ | 126 | |
124 | In den nächsten Wochen waren mehrere Hacker damit beschäftigt, den | 127 | In den nächsten Wochen waren mehrere Hacker damit beschäftigt, den |
125 | ausgelesenen Assemblercode zu verstehen und zu dokumentieren. Dazu | 128 | ausgelesenen Assemblercode zu verstehen und zu dokumentieren. Dazu |
126 | verwendeten wir AVR-Studio und [Ida | 129 | verwendeten wir AVR-Studio und [Ida |
@@ -129,8 +132,8 @@ berechnen der Ausleih- und Abgabecodes) fanden wir relativ schnell, da | |||
129 | sich dort eine Menge rotate-und-shift-Befehle befanden. Den | 132 | sich dort eine Menge rotate-und-shift-Befehle befanden. Den |
130 | Initialisierungscode erkannten wir wieder, da wir wussten, dass der | 133 | Initialisierungscode erkannten wir wieder, da wir wussten, dass der |
131 | Motor sich beim Einschalten zweimal herumdreht. So konnten wir das | 134 | Motor sich beim Einschalten zweimal herumdreht. So konnten wir das |
132 | gelernte immer wieder an unserem Prototyp auf Richtigkeit überprüfen.\ | 135 | gelernte immer wieder an unserem Prototyp auf Richtigkeit überprüfen. |
133 | \ | 136 | |
134 | Die Ausleih- und Abgabecodes werden durch einen Scrambler generiert, der | 137 | Die Ausleih- und Abgabecodes werden durch einen Scrambler generiert, der |
135 | mit einem 16Bit-Counter des CallABikes und einem Zustandswert aufgerufen | 138 | mit einem 16Bit-Counter des CallABikes und einem Zustandswert aufgerufen |
136 | wird. Ein gerader Counterwert erzeugt Ausleihcodes und ein ungerader | 139 | wird. Ein gerader Counterwert erzeugt Ausleihcodes und ein ungerader |
@@ -148,8 +151,8 @@ geöffnet haben und die wir wegen der Lockbits nicht auslesen konnten, | |||
148 | haben wir mit einem Script 511 mal resetten lassen (bei einem Reset | 151 | haben wir mit einem Script 511 mal resetten lassen (bei einem Reset |
149 | erhöht sich der Counter immer um zwei). Damit haben wir den | 152 | erhöht sich der Counter immer um zwei). Damit haben wir den |
150 | ursprünglichen Zustand wiederhergestellt, und das CallABike war wieder | 153 | ursprünglichen Zustand wiederhergestellt, und das CallABike war wieder |
151 | ‘in sync’ mit der Zentrale.\ | 154 | ‘in sync’ mit der Zentrale. |
152 | \ | 155 | |
153 | Wer sich das Display mal genauer angeschaut hat, wird festgestellt | 156 | Wer sich das Display mal genauer angeschaut hat, wird festgestellt |
154 | haben, dass der Zeichensatz ein proportionaler ist. Dazu gibt es im Code | 157 | haben, dass der Zeichensatz ein proportionaler ist. Dazu gibt es im Code |
155 | eine Tabelle, in der die Länge des Zeichens und die Position im Flash | 158 | eine 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. | |||
157 | ein ‘w’ sieben Bytes belegt. Die großen Logos und das Zahleneingabefeld | 160 | ein ‘w’ sieben Bytes belegt. Die großen Logos und das Zahleneingabefeld |
158 | liegen als 400 Byte große Bitmaps vor. Die lange schwarze Linie im | 161 | liegen als 400 Byte große Bitmaps vor. Die lange schwarze Linie im |
159 | CallABike-Logo zeigt die Stärke der Spule im Schloss an. Das haben wir | 162 | CallABike-Logo zeigt die Stärke der Spule im Schloss an. Das haben wir |
160 | nur durch das Code-Auditing herausgefunden.\ | 163 | nur durch das Code-Auditing herausgefunden. |
161 | \ | 164 | |
162 | Unser erstes Ziel war es, den aus unserem Disassembler erhaltenen | 165 | Unser erstes Ziel war es, den aus unserem Disassembler erhaltenen |
163 | Sourcecode so anzupassen, dass nach dem Assemblieren mit dem Commandline | 166 | Sourcecode so anzupassen, dass nach dem Assemblieren mit dem Commandline |
164 | Tool [Avra](http://avra.sourceforge.net/) (“Assembler for the Atmel AVR | 167 | Tool [Avra](http://avra.sourceforge.net/) (“Assembler for the Atmel AVR |
165 | microcontrollers”) ein EXAKT identisches Binary herauskam. Auf der | 168 | microcontrollers”) ein EXAKT identisches Binary herauskam. Auf der |
166 | Grundlage dieses Referenzcodes konnten wir dann endlich änderungen | 169 | Grundlage dieses Referenzcodes konnten wir dann endlich änderungen |
167 | vornehmen.\ | 170 | vornehmen. |
168 | \ | 171 | |
169 | Nachdem wir uns diese Grundlage geschaffen hatten, konnten wir das | 172 | Nachdem wir uns diese Grundlage geschaffen hatten, konnten wir das |
170 | CallABike mit unserem eigenen Code flashen. Da wir keine Vulnerabilities | 173 | CallABike mit unserem eigenen Code flashen. Da wir keine Vulnerabilities |
171 | oder Backdoors fanden (jedes CallABike hat einen eigenen Key, der im | 174 | oder 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, | |||
185 | sich weiter um das Rad zu kümmern, und es aber auch niemand anders | 188 | sich weiter um das Rad zu kümmern, und es aber auch niemand anders |
186 | aufmachen könnte. Um das HackABike auch auf größere Entfernung noch von | 189 | aufmachen könnte. Um das HackABike auch auf größere Entfernung noch von |
187 | seinen unbehandelten Verwandten unterscheiden zu können, haben wir ihm | 190 | seinen unbehandelten Verwandten unterscheiden zu können, haben wir ihm |
188 | eine leicht veränderte Blink-Sequenz beigebracht.\ | 191 | eine leicht veränderte Blink-Sequenz beigebracht. |
189 | \ | 192 | |
190 | Im Verlauf der weiteren Analyse des Codes ist uns aufgefallen, dass das | 193 | Im Verlauf der weiteren Analyse des Codes ist uns aufgefallen, dass das |
191 | CallABike im Abgabecode integriert Statusinformationen an die Zentrale | 194 | CallABike im Abgabecode integriert Statusinformationen an die Zentrale |
192 | durchgeben kann. Je nachdem, in welchem technischen Zustand sich das | 195 | durchgeben 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 | |||
197 | Schließknopf sieben mal ohne eingeführten Bolzen drückt, liefert der | 200 | Schließknopf sieben mal ohne eingeführten Bolzen drückt, liefert der |
198 | Scrambler einen entsprechenden Rückgabecode, der gültig ist, diesen | 201 | Scrambler einen entsprechenden Rückgabecode, der gültig ist, diesen |
199 | Zustand aber für die Zentrale erkennbar anzeigt. Von diesen Codes gibt | 202 | Zustand aber für die Zentrale erkennbar anzeigt. Von diesen Codes gibt |
200 | es 52 (eine Matrix aus 4x13).\ | 203 | es 52 (eine Matrix aus 4x13). |
201 | \ | 204 | |
202 | Die Backdoor erlaubt, das HackABike mit einem von uns festgelegten | 205 | Die Backdoor erlaubt, das HackABike mit einem von uns festgelegten |
203 | Ausleihcode einfach zu öffnen. Wenn man das HackABike dann wieder | 206 | Ausleihcode einfach zu öffnen. Wenn man das HackABike dann wieder |
204 | abgibt, ist es ganz normal wieder ausleihbar. Es steht auch wieder der | 207 | abgibt, 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 | |||
206 | diesem eingeschobenen Ausleihvorgang nichts - außer, dass es an einem | 209 | diesem eingeschobenen Ausleihvorgang nichts - außer, dass es an einem |
207 | anderem Ort steht, als es in der Datenbank vermerkt ist. Wenn es dann | 210 | anderem Ort steht, als es in der Datenbank vermerkt ist. Wenn es dann |
208 | aber wieder normal ausgeliehen und abgestellt wird, ist auch in der | 211 | aber wieder normal ausgeliehen und abgestellt wird, ist auch in der |
209 | Zentrale alles wieder in Ordnung.\ | 212 | Zentrale alles wieder in Ordnung. |
210 | \ | 213 | |
211 | Um ein CallABike in ein HackABike zu verwandeln, mussten wir sechs | 214 | Um ein CallABike in ein HackABike zu verwandeln, mussten wir sechs |
212 | Schrauben auf der Innenseite des Schlosskastens mit dem Display öffnen | 215 | Schrauben auf der Innenseite des Schlosskastens mit dem Display öffnen |
213 | und das Kabel des STK500 an den ISP-Anschluss der Platine stecken. | 216 | und 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 | |||
222 | nicht korrekt unterstützte, mussten wir das erstmal einbauen. Dazu haben | 225 | nicht korrekt unterstützte, mussten wir das erstmal einbauen. Dazu haben |
223 | wir den Output von AVR-Studio mit einem serial sniffer mitgelesen und | 226 | wir den Output von AVR-Studio mit einem serial sniffer mitgelesen und |
224 | uns die entsprechenden Kommandos für das STK500 rausgesucht und in UISP | 227 | uns die entsprechenden Kommandos für das STK500 rausgesucht und in UISP |
225 | eingebaut.\ | 228 | eingebaut. |
226 | \ | 229 | |
227 | Abschließend ist festzustellen, dass das technische Design des CallABike | 230 | Abschließend ist festzustellen, dass das technische Design des CallABike |
228 | in unseren Augen sehr gut ist. Jedes CallABike hat vermutlich einen | 231 | in unseren Augen sehr gut ist. Jedes CallABike hat vermutlich einen |
229 | eigenen 1024 Bit Key, der benötigt wird, um die Abgabe- und Ausleihcodes | 232 | eigenen 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 | |||
232 | Firmware vor dem Auslesen zu schützen. Unsere Attacke ist von den | 235 | Firmware vor dem Auslesen zu schützen. Unsere Attacke ist von den |
233 | verbrauchten Mannstunden wohl mehr Wert als ein paar Dutzend CallABikes. | 236 | verbrauchten 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 | |||