From 3131832b7d708ab24f88ea9edd6c5c74887d247f Mon Sep 17 00:00:00 2001
From: 46halbe <46halbe@berlin.ccc.de>
Date: Sun, 19 Feb 2012 18:24:46 +0000
Subject: committing page revision 7

---
 pages/hackabike.md | 69 +++++++++++++++++++++++++++---------------------------
 1 file changed, 35 insertions(+), 34 deletions(-)

(limited to 'pages')

diff --git a/pages/hackabike.md b/pages/hackabike.md
index ac5f669b..e215fc8d 100644
--- a/pages/hackabike.md
+++ b/pages/hackabike.md
@@ -1,15 +1,15 @@
 title: Hack a Bike
 date: 2009-11-02 01:04:00 
-updated: 2012-02-18 21:09:17 
+updated: 2012-02-19 18:24:46 
 author: erdgeist
 tags: deutsche bahn, hack, bike, call, avr, hackabike
 previewimage: /images/01.jpg
 
-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.
+Schon 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.
 
 <!-- TEASER_END -->
 
-## Kurzeinführung in das Call a Bike System {#kurzeinführung-in-das-call-a-bike-system .quote}
+## Kurzeinführung in das Call-a-Bike-System {#kurzeinführung-in-das-call-a-bike-system .quote}
 
 Als Kunde ruft man die CallABike-Zentrale und gibt per DTMF-Wahl die
 vierstellige Radnummer durch. Von der Zentrale erhält man dann den
@@ -95,12 +95,12 @@ Es dauerte eine Weile, bis wir merkten, dass das System nach dem Booten
 durch ein Infrarot-Signal aktiviert werden muss. Das war mehr oder
 weniger Zufall.
 
-Wenn man eine normale Glühlampe benutzt, um besser sehen zu koennen,
+Wenn man eine normale Glühlampe benutzt, um besser sehen zu können,
 piepte die Elektronik gelegentlich scheinbar unmotiviert. Wie sich
 später herausstellte, reichte der durch die Glühlampe emittierte
 IR-Anteil aus, um den IR-Receiver zu triggern und den Bootvorgang
 fortzusetzen. Beim Booten testet sich das System selbst, und der Empfang
-eines Infrarot Signals gehört eben dazu. Im Zuge fortschreitender
+eines Infrarot-Signals gehört eben dazu. Im Zuge fortschreitender
 Professionalisierung™ wurde in der Folgezeit die Glühlampe durch ein
 Infrarot-Photon-Micro-Light ersetzt. Bei unserer weiteren Analyse des
 Systems begannen wir damit, alle Anschlüsse des Atmel durchzumessen, um
@@ -119,46 +119,47 @@ an. Zum Auslesen wurde hauptsächlich das freie
 AVR microcontrollers which can interface to many hardware in-system
 programmers”) benutzt. Die auf dem Atmel vorhandenen
 „Intellectual-Property“-Bits waren in einem undefinierten Zustand,
-deswegen konnten wir das Flash des Atmels mit der 8KB großen Firmware
-auslesen.
+deswegen konnten wir das Flash des Atmels mit der acht KB großen
+Firmware auslesen.
 
 In den nächsten Wochen waren mehrere Hacker damit beschäftigt, den
 ausgelesenen Assemblercode zu verstehen und zu dokumentieren. Dazu
 verwendeten wir AVR-Studio und [Ida
 Pro](http://www.datarescue.com/idabase/). Den Scramble Code (zum
-berechnen der Ausleih- und Abgabecodes) fanden wir relativ schnell, da
+Berechnen der Ausleih- und Abgabecodes) fanden wir relativ schnell, da
 sich dort eine Menge rotate-und-shift-Befehle befanden. Den
-Initialisierungscode erkannten wir wieder, da wir wussten, dass der
-Motor sich beim Einschalten zweimal herumdreht. So konnten wir das
-gelernte immer wieder an unserem Prototyp auf Richtigkeit überprüfen.
+Initialisierungscode erkannten wir wieder, da wir wußten, daß sich der
+Motor beim Einschalten zweimal herumdreht. So konnten wir das Gelernte
+immer wieder an unserem Prototyp auf Richtigkeit überprüfen.
 
 Die Ausleih- und Abgabecodes werden durch einen Scrambler generiert, der
-mit einem 16Bit-Counter des CallABikes und einem Zustandswert aufgerufen
-wird. Ein gerader Counterwert erzeugt Ausleihcodes und ein ungerader
-erzeugt die Abgabecodes. Der Scrambler nutzt den Counter und das
-Zustandsbyte, um ein Offset auf ein 1024 Bit großes Feld zu errechnen.
-Dieses Feld ist ein für jedes CallABike eindeutiger binärer String, der
-als der (wahrscheinlich) eindeutige Key des CallABikes bezeichnet werden
-könnte. Von diesem Offset aus werden dann 4x4 Bit genutzt, die die vier
-Ziffern für die Ausleih- und Abgabecodes repräsentieren. Die 16 Bit des
-Counters werden aber schlecht genutzt, denn schon nach 1024 Iterationen
-wiederholen sich die Ausleih- und Abgabecodes. Das bedeutet auch, dass
-es nur 512 Ausleihcodes je CallABike gibt, da es nur 512 gerade Offsets
-gibt die auf den Key (1024 Bit) zeigen können. CallABikes, die wir
-geöffnet haben und die wir wegen der Lockbits nicht auslesen konnten,
-haben wir mit einem Script 511 mal resetten lassen (bei einem Reset
-erhöht sich der Counter immer um zwei). Damit haben wir den
-ursprünglichen Zustand wiederhergestellt, und das CallABike war wieder
-‘in sync’ mit der Zentrale.
+mit einem 16-Bit-Counter des Call-a-Bikes und einem Zustandswert
+aufgerufen wird. Ein gerader Counterwert erzeugt Ausleihcodes und ein
+ungerader erzeugt die Abgabecodes. Der Scrambler nutzt den Counter und
+das Zustandsbyte, um ein Offset auf ein 1024 Bit großes Feld zu
+errechnen. Dieses Feld ist ein für jedes Call-a-Bike eindeutiger binärer
+String, der als der (wahrscheinlich) eindeutige Key des Call-a-Bikes
+bezeichnet werden könnte. Von diesem Offset aus werden dann 4x4 Bit
+genutzt, welche die vier Ziffern für die Ausleih- und Abgabecodes
+repräsentieren. Die 16 Bit des Counters werden aber schlecht genutzt,
+denn schon nach 1024 Iterationen wiederholen sich die Ausleih- und
+Abgabecodes. Das bedeutet auch, daß es nur 512 Ausleihcodes je
+Call-a-Bike gibt, da es nur 512 gerade Offsets gibt, die auf den Key
+(1024 Bit) zeigen können. Call-a-Bikes, die wir geöffnet haben und die
+wir wegen der Lockbits nicht auslesen konnten, haben wir mit einem
+Script 511 mal resetten lassen (bei einem Reset erhöht sich der Counter
+immer um zwei). Damit haben wir den ursprünglichen Zustand
+wiederhergestellt, und das Call-a-Bike war wieder ‘in sync’ mit der
+Zentrale.
 
 Wer sich das Display mal genauer angeschaut hat, wird festgestellt
-haben, dass der Zeichensatz ein proportionaler ist. Dazu gibt es im Code
+haben, daß der Zeichensatz ein proportionaler ist. Dazu gibt es im Code
 eine Tabelle, in der die Länge des Zeichens und die Position im Flash
-gespeichert sind. Ein ‘i’ und ein ‘!’ belegen nur ein Byte, wogegen z.B.
-ein ‘w’ sieben Bytes belegt. Die großen Logos und das Zahleneingabefeld
-liegen als 400 Byte große Bitmaps vor. Die lange schwarze Linie im
-CallABike-Logo zeigt die Stärke der Spule im Schloss an. Das haben wir
-nur durch das Code-Auditing herausgefunden.
+gespeichert sind. Ein ‘i’ und ein ‘!’ belegen nur ein Byte, wogegen z.
+B. ein ‘w’ sieben Bytes belegt. Die großen Logos und das
+Zahleneingabefeld liegen als 400 Byte große Bitmaps vor. Die lange
+schwarze Linie im Call-a-Bike-Logo zeigt die Stärke der Spule im Schloß
+an. Das haben wir nur durch das Code-Auditing herausgefunden.
 
 Unser erstes Ziel war es, den aus unserem Disassembler erhaltenen
 Sourcecode so anzupassen, dass nach dem Assemblieren mit dem Commandline
-- 
cgit v1.2.3