diff options
| author | hukl <hukl@berlin.ccc.de> | 2012-02-18 20:46:54 +0000 |
|---|---|---|
| committer | hukl <hukl@berlin.ccc.de> | 2020-05-23 13:39:12 +0000 |
| commit | 552cfaeb9bd4df332104b970b5350b6ca782fbdb (patch) | |
| tree | c1d661edb12073707ddb7c60b0efd726d5d65e3c | |
| parent | 22412c7196db8885c968db46e727446da72cf0d3 (diff) | |
committing page revision 5
| -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 | |||
