Tag Archives: Hardware

C/C++ developers please use -Wcast-align

Did you ever read the GCC documentation part Warning Options? If not, you may know the -Wall option. Yeah well, it enables a lot of options, but not literally all possible warnings. In my opinion setting -Wall should be the minimum you should set in every project, but there are more. You can also set -Wextra which enables even more warnings, but as you now might guess, still not all. Missing is especially one option, this post is about and the following describes why I consider it important to set: -Wcast-align

So what does the GCC doc say about it?

Warn whenever a pointer is cast such that the required alignment of the target is increased. For example, warn if a char * is cast to an int * on machines where integers can only be accessed at two- or four-byte boundaries.

In case you can not imagine what this means, let me explain. For example there are 32bit-CPUs out there which access memory correctly only at 32bit boundaries. This is to my knowledge by design. Let’s say you have some byte stream starting at an arbitrary aligned memory offset and it contains bytes starting from 0, followed by 1, then 2 and so on like this:

00 01 02 03 04 05 06 07

Now you set an uint32_t pointer to a non aligned address and dereference it. What would you expect? To help you a little, I have a tiny code snippet for demonstration:

uint8_t     buf[8];
uint32_t    *p32;
int         i;

/*  fill the buffer as described above  */
for ( i = 0; i < sizeof(buf); i++ ) {
    buf[i] = i;
}

for ( i = 0; i < sizeof(buf); i++ ) {
    p32 = (uint32_t *) &buf[i];
    printf( "0x%08X ", *p32 );
}
printf( "\n" );

The naïve assumption would be the following output:

0x03020100 0x04030201 0x05040302 0x06050403 0x07060504 0x15070605 0x02160706 0xC3021707

Note the last three containing some random bytes from memory behind our buffer! This is the output you get on a amd64 standard PC with little endian format (compiled on Debian GNU/Linux with some GCC 4.9.x).

Now look at this output:

0x03020100 0x00030201 0x01000302 0x02010003 0x07060504 0x04070605 0x05040706 0x06050407

This comes from an embedded Linux target with an AT91SAM9G20 Arm CPU, which is ARM9E family and ARMv5TEJ architecture or lets just say armv5 or older Arm CPU. Here It runs as little endian and was compiled with a GCC 4.7.x cross compiler.

Well those 32bit integers look somehow reordered, as if the CPU would shuffle the bytes of the word we point into? If you’re not aware of this this means silent data corruption on older Arm platforms! You can set the -Wcast-align option to let the compiler warn you, you may try this by yourself with the above snippet and your favorite cross compiler. Note: the warning does not solve the corruption issue, it just warns you to fix your code.

When reading the FAQ by Arm itself on this topic it’s not quite clear what the supposed behavior is, but what is clear is the following: unaligned access is not supported on older Arm CPUs up to ARM9 family or ARMv5 architecture.

Another point is interesting: even if the CPU supports unaligned access, whether it’s hard coded or an optional thing you must switch on first, it will give you a performance penalty. And coming back to my PC: this is also true for other processor families like Intel or AMD, although on recent processors it might not be that bad.

So what could or should we do as software developers? Assuming there are still a lot of old processors out there and architectures you might not know, and you never know where your code will end up: design your data structures and network protocols with word alignment in mind! If you have to deal with legacy stuff or bad protocols you can not change, you still have some other possibilities, have a look at The ARM Structured Alignment FAQ or search the net on how to let your kernel handle this.

If you want to handle it in code, memcpy() is one possibility. Assume we want to access a 32bit integer at offset 2, we could do it like this:

uint8_t *buf;
uint32_t myint;

memcpy( &myint, buf + 2, sizeof(uint32_t) );

And as said in the topic and above: turn on the -Wcast-align option!

(If you don’t want to be too scared about silent data corruption on your new IoT devices with those cheap old processors and your freshly compiled board support package, you might not want to turn it on on all those existing software out there. You might get a little depressed … )

Update: There’s a chapter on the Linux kernel documentation on this: Unaligned Memory Accesses.

Update: Also see EXP36-C. Do not cast pointers into more strictly aligned pointer types of the SEI CERT C Coding Standard.

Logitech-HID mit Debian Sid

Nutzer der Unstable-Variante von Debian (auch als Debian Sid bekannt) bekommen ja bekanntlich regelmäßig Gratisabenteuer aus dem Bereich der Systemadimistration geschenkt; sozusagen ein Quest-Abo.

Problem des Tages: Einen Systemstart nach dem letzten Update funktionierten Bluetooth-Tastatur und -Maus von Logitech nicht mehr, in meinem Fall konkret das Dinovo-Set.

Ich habe häufiger Ärger mit Logitech unter Linux, meistens ließ sich das aber mit einem Reset des Bluetooth-Dongles1 beheben. Dieses Mal nicht, der Fehler war persistent.
dmesg, logs und Modulliste waren soweit korrekt, es war alles da, was für die Geräte gebraucht würde und es wurde laut lsusb auch alles erkannt. Nur funktionierte einfach nichts. $SUCHMASCHINE lieferte dafür auch keine weiteren Ergebnisse.

Letztendlich habe ich das Problem in den udev-Regeln2, speziell der Datei 70-hid2hci.rules gefunden. Dort steht in Zeile 15:

RUN+="hid2hci --method=logitech-hid --devpath=%p"

Ein kurzer Blick auf die Manpage zeigt, dass der Aufruf nicht korrekt ist. Ich habe die Zeile so abgeändert:

RUN+="hid2hci --method=logitech --mode=hid --devpath=%p"

Seit dem funktionieren Tastatur und Maus wieder einwandfrei.

Die Regel deckt einen großen Bereich von Logitech-Produkten ab, das Problem tritt also wohl auch dort auf. Debian-Bugreport kommt dann später noch.

  1. Abziehen und wieder dranstecken. ;) []
  2. zu finden unter /lib/udev/rules.d/ []

Ausgesperrt bei Nacht

Ursprünglich hatte ich angefangen, diesen Beitrag in meinem noch recht neuen privaten Blog zu schreiben (der Tux hat übrigens auch eins), im Laufe des Schreibens wurde das dann aber doch zu technisch und passt eher hier her.

Warum also ausgesperrt? Es begann vor einigen Wochen, als mein bis dato stets zuverlässiges Notebook Samsung X05 plötzlich ab und zu stehen blieb, also einfror, sprich im laufenden Betrieb plötzlich nichts mehr ging. Mauszeiger ging nicht mehr, Bildschirminhalt änderte sich nicht mehr und sämtliche Tastatureingaben waren wirkungslos. Da half nur harter Reset und fortan Notebook nicht mehr bewegen, was natürlich die erwünschte Mobilität ad absurdum führt.

Unterdessen sah ich mich nach einem Ersatz um, der noch etwas leichter und kleiner als das 14″-Gerät (Masse etwa 2.1kg) sein sollte. Mittlerweile bestellt ist das Samsung NC10 in schwarz mit UMTS-Option. Ich hoffe, dass es ebenso zuverlässig sein wird, die technischen Daten und Testberichte stimmen da optimistisch. (Meine Erfahrungen damit, speziell im Hinblick auf Linux, werden folgen.)

Wenige Stunden nach der Bestellung dachte ich mir dann, dass ich das BIOS-Passwort, was beim alten Laptop stets abgefragt wurde, mal abschalten könne. Das wiederholte Eingeben bei den ganzen hardwarebedingten Reboots war etwas nervig. Gesagt getan: im BIOS-Setup dann keine Möglichkeit das abzuschalten, nur es zu ändern. Im Dialog zum Ändern hab ich also einfach zweimal Enter gedrückt und dann war ich ausgesperrt. Seitdem wird weder zwar immernoch das Passwort abgefragt, aber weder das alte Passwort noch einfach »Enter« drücken hilft. Es endet stets mit der Meldung »System disabled«, wohlgemerkt noch vor dem eigentlichen Booten.

Zunächst sei dazu angemerkt, dass ich das für einen schweren Bug in der BIOS-Software halte, weil der Nutzer an keiner Stelle darauf hingewiesen wird, dass sich der Rechner bei dieser Art Eingaben so verhält. Oder anders gesagt: das Ding hat sich hier an meinen durch langjährige Erfahrung geprägten Erwartungen vorbei verhalten. :-/

Die offensichtliche Lösung im Weltnetz ein passendes Master-Passwort zu finden, war zum Scheitern verurteilt und so wendete ich mich an den Support von Samsung. Ich erwähnte wann und wo ich das Gerät gekauft hatte und zudem, dass ich wegen räumlicher Trennung derzeit nicht in der Lage bin, an den Kassenzettel zu kommen. Interessiert Samsung aber nicht:

Da das BIOS-Passwort eine sicherheitsrelevante Einrichtung darstellt, benötigen wir aus rechtlichen Gründen eine Legitimation von Ihnen, zum Beispiel in Form eines Kaufbelegs, bevor wir Ihnen mit der Entsperrung eines BIOS-Passworts behilflich sein können.

Ok, war zu erwarten, wirft aber dennoch die Frage auf, was ich machen soll, wenn ich das Gerät beispielsweise gebraucht ohne Original-Kassenbon oder Quittung gekauft hätte? Wie soll ich da mein Eigentum nachweisen? Fotos mit mir und dem Gerät beim Verkäufer? Router-Logfiles mit der MAC-Adresse? Ich meine, ich verstehe ja, dass die das nicht jedem potentiellen Langfinger erzählen wollen, aber dann sollen sie doch bitte das BIOS-Setup so programmieren, dass man sich nicht versehentlich aussperren kann. :-(

Nachtrag: Mittlerweile habe ich den Kassenbon eingescannt und an Samsung geschickt. Heute bekam ich den Rückruf und gemeinsam mit dem Support-Menschen, konnte das Problem näher eingegrenzt werden. Nach dreimaliger Fehleingabe des Passworts zeigt das Notebook einen längeren String an, den man dem Support-Menschen vorliest. Der wiederum erzählte mir dann das aktuelle Passwort, das mir dann seltsam bekannt vorkam. Es stellte sich heraus, dass es genau zwei Passwörter gibt: ein System-Passwort und ein User-Passwort. Ersteres benötigt man, um ins BIOS-Setup zu gelangen, letzteres nur um den Rechner zu starten. Das Problem war nun, dass ich vergessen hatte, dass ich unterschiedliche Passwörter vergeben hatte. Ich wäre also noch mit dem eigentlich bekannten System-Passwort ins BIOS-Setup gekommen. Dort stellte ich dann fest, dass die zuvor als buggy gebrandmarkte Methode das Passwort wieder zu entfernen doch korrekt funktionierte. Ich konnte also beide Passwörter auf diese Weise wieder »clear« bekommen. Das einzige Problem war nun, dass anscheinend das System-Passwort beim Boot abgefragt wurde, wenn das User-Passwort nicht gesetzt war. Das muss man dann aber auch wissen. ;-)

Vorsicht Kunde!

Ich bin ein Freund freier Software und ich verwende diese sehr gern auf alten Rechnern. Das ökologische Bewusstsein lässt mich vom Kauf neuer Hardware stets zurückschrecken, wenn die alte noch funktioniert. In einem dieser Rechner ist (bis auf den im Notebook) mein einziger DVD-Brenner eingebaut, ein mittlerweile etwas älteres Teil von LG (GSA-4163A), das auch DVD-RAM brennen kann. Auf dem Rechner ist »nur« Debian installiert und das Brennen mit k3b funktioniert tadellos.

Nun hatte ich letzte Woche nach längerer Zeit mal wieder neue DVD-Rohlinge gekauft, weil mir die alten ausgegangen waren. Ich dachte, es könne nicht schaden, mal nach neuer Firmware für den DVD-Brenner zu schauen, die Hersteller optimieren ja doch die Brennrezepte und packen das in neue Firmware.

Leider war es mir mit Firefox/Iceweasel auf dem Debian nicht möglich auf der Webseite von LG die entsprechende Firmware zu finden. Auf dem Windows-Notebook mit Firefox und Opera sah das dann genauso aus, also machte ich meinem Ärger beim Kundenservice Luft:

Sehr geehrte Damen und Herren,

mir ist es leider mit drei verschiedenen Browser nicht gelungen eine aktuelle Firmware für meinen DVD-Brenner von Ihrer Website zu laden. Entweder wurde überhaupt keine Suchfunktion angezeigt oder es wurden keine Ergebnisse gefunden. Einfache Listen ohne Javascript und Flash, wo man schnell und einfach findet was man sucht, wären wesentlich kundenfreundlicher. :-(

Mit freundlichem Gruß
Alexander Dahl

Im Anschluss daran fand ich noch die »richtige« Supportseite und die aktuelle Firmware. Das hätte mich allerdings keinen Schritt weiter gebracht, denn dort heißt es:

1.verbinden Sie das Laufwerk als Master mit dem secondary IDE-Controller
setzen Sie den Jumper auf der Rückseite des Laufwerkes auf Master. Verbinden
Sie kein anderes Gerät an diesem IDE-Kabel.

Abgesehen von dieser widersinnigen Bastelei hätte mir aber noch etwas anderes einen Strich durch die Rechnung gemacht:

Diese Firmware ist nur für den Gebrauch an PC`s mit den Betriebssystemen:
Windows XP, Windows 2000, Windows Millennium Edition (ME), und
Windows 98SE.

Das ist so natürlich Unsinn. Richtig ist, dass die Software zum Firmware-Upgrade nur unter den oben genannten Betriebssystemen läuft. Alle anderen sind außen vor. Glücklicherweise ist die »neueste« Firmware für das Gerät schon älter. Ein kurzer Check verriet mir, dass diese bereits installiert war.

Damit hätte die Geschichte abgeschlossen sein können, das war wie gesagt alles letzte Woche. Der Kracher kommt aber noch, nämlich die Antwort auf meine Anfrage beim Support:

Sehr geehrter Herr Dahl,

herzlichen Dank, dass Sie mit LG Electronics Deutschland GmbH Kontakt aufgenommen haben.

Wahrscheinlich benutzen Sie den Browser Mozilla Firefox. Da unsere Seite fuer den Internetexplorer optimiert ist, moechten wir Sie bitten diesen zu verwenden.
Dann haben Sie auch bei der Suchoption den gewuenschten Erfolg.

Bei Rueckfragen senden Sie bitte den gesamten Mailverkehr als Anhang mit.

Wenn Sie noch weitere Fragen oder Anregungen haben sollten, können Sie sich jederzeit wieder an uns wenden.

Mit freundlichen Gruessen

Fragen hätte ich keine, aber eine Anregung an LG: Gestalten Sie doch bitte Ihre Webseiten so, dass nicht nur Nutzer des Internet Explorer alle gewünschten Informationen erhalten und ermöglichen Sie Nutzern freier Betriebssysteme auch ein Firmware-Upgrade, zur Not über irgendeine Bootdiskette oder -CD!

Nachtrag: Ich dachte mir, dass LG das hier wohl nicht lesen würde, also antwortete ich per Mail:

Sehr geehrte Damen und Herren,

Sie boten in der Antwort auf meine Anfrage an, mich mit weiteren
Anregungen an Sie zu wenden – gern.

Ich würde es zunächst begrüßen, wenn Sie Ihre Webseiten nicht nur auf
einen einzigen Browser optimieren würden, sondern der wachsenden Zahl
von Nutzern alternativer Browser und Betriebssysteme ebenso ermöglichen,
an die gewünschten Informationen zu gelangen.

Desweiteren empfinde ich es als klare Einschränkung, Firmware-Upgrades
nur unter den teuren Betriebssystemen von Microsoft durchführen zu
können. Nutzer von Linux, BSD oder Solaris sind praktisch nicht in der
Lage Ihre Hardware sinnvoll einzusetzen, weil Ihnen Firmware-Upgrades
verwehrt bleiben. Wie wäre es stattdessen Images für Boot-Disketten oder
-CDs bereitzustellen, von denen das Firmware-Upgrade
betriebssystemunabhängig möglich ist?

Mit freundlichem Gruß
Alexander Dahl

Was kommt zurück?

I’m sorry to have to inform you that your message could not
be delivered to one or more recipients. It’s attached below.

For further assistance, please send mail to

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The Symantec Mail Security program

: host 156.147.51.142[156.147.51.142] said: 550 gsfs@lge.com…
No such user (in reply to RCPT TO command)

Gut, wer nicht will, der hat schon – dann halt nicht.

Samsung R700 Linux Installation: Erfahrungen (2)

Ich denke, ich habe jetzt eine Konfiguration fuer das R700 gefunden, mit der (fast) die gesamte Hardware funktioniert. Zumindest kann ich nun mit dem R700 unter Linux X-Plane und Flightgear betreiben, was gleichermassen dienstlich wie auch privat sehr angenehm ist.

Ich bin uebrigens erstmal bei KDE 3.5.9 haengengeblieben, statt wie zuerst vorgenommen gleich das neue KDE 4.1 zu verwenden. Zusammen mit compiz-fusion ist KDE 3.5 ausreichend huebsch anzuschauen und angenehm zu bedienen. (Wie konnte ich nur so lange ohne die Funktionalitaet der Compiz-Plugins “Scale” und “Expose” leben?)

Lediglich die Regelung des LCDs geht unter X noch nicht. Und ich glaube, mein Sound ist insgesamt noch leiser als unter Windows, was ich darauf zurueckfuehre, welchen Kernelparameter ich verwende “model=basic”. Den Kartenleser habe ich noch nicht ausgiebig getestet.

Hier aber nun die Konfigurationen im Detail:

Continue reading

Samsung R700 Linux Installation: Erfahrungen (1)

Ich habe mittlerweile mit der Installation von Gentoo begonnen. Das System laeuft mittlerweile aus eigenem Bootloader und bedarf der weiteren Softwareinstallation.

Einen 2.6.26er-Kernel habe ich schon gebacken. Leider musste ich die Config  selbst zusammensuchen, ich habe mit Google keine andere Linuxinstallationsanleitung oder zumindest Kernelconfig gefunden. Wenn ich zufrieden und fertig bin, sollte ich meine .config hier im Blog veroeffentlichen und dann Werner Heuser von Tuxmobil einen Link fuer seine Sammlung zukommen lassen. Schliesslich hat mit diese Linksammlung auch schon so oft geholfen, als ich das alte Inspiron installiert habe.

Momentan kompiliere ich X und Anwendungsprogramme (Firefox, Thunderbird, Gimp, Openoffice). KDE zu installieren zoegere ich noch hinaus, wer weiss, ob nicht doch noch (wenigstens maskierte) KDE 4.1 Pakete zu bekommen sind. Ich glaube, dass es ein Overlay von KDE 4.1 gibt, aber ich mag Overlays nicht sonderlich und wuerde es lieber direkt aus Portage beziehen.

Bereits beim Installieren des Basissystem von Gentoo (Stage3) sowie dem Uebersetzen des Kernels sind mir beim Arbeiten mit der Shell und dem R700 einige Sachen aufgefallen, die seltsames Verhalten zeigen oder ganz anders geloest sind als beim alten Dell Inspiron 8200:

  1. STRG links und Fn auf der Tastatur sind genau andersherum angeordnet als beim Dell. Wenn man viel mit den Bash-Shortcuts (CTRL-E, CTRL-A, etc.) zu arbeiten gewohnt ist und gleichzeitig in den Fingern noch die Erinnerung an die alte Tastatur stecken, dann wird das Tippen arg eingeschraenkt. Ist aber nur Gewoehnungssache.
  2. Sowohl beim Inspiron als auch beim R700 ist die LCD-Helligkeit ueber Fn+Cursortasten zu regeln. Waehrend beim Inspiron allerdings die Hardware das uebernimmt (und es deswegen auch auf der Console oder beim Booten funktioniert), ist es beim R700 nur in Software geloest. Als Workaround kann ich aber zumindest einen Zahlenwert in /proc/acpi/video/NVID/LCD/brightness schreiben und damit die Helligkeit regeln.
  3. Unter Vista liess (und beim R60 meiner Freundin unter XP laesst)  sich mit Fn-F5 das Backlight komplett deaktivieren. Sehr stromsparend und bei Sonne von hinten auch noch ein wenig ablesbar. Keine Ahnung, wie ich das unter Linux hinbekommen kann. Hat jemand Ideen?
  4. Das R700 hat eine Webcam und einen SD-Kartenleser eingebaut. Wie krieg ich die nur unter Linux zum Laufen? Ich vermute mal, I2C ist mein Freund bei der Kamera und fuer MMC habe ich auch ein Kernelmodul gesehen, konnte es aber bisher noch nicht probieren. Ratschlaege sind auch hier aeusserst willkommen.
  5. Die Backspacetaste funktioniert auf der Shell manchmal seltsam. Es wird ab und zu irgendein Sonderzeichen mit in den Zeichenpuffer geschrieben, der dann die ganze Befehlszeile ruiniert. Es koennte auch sein, dass dies die ASCII Bell ist, weil ich derzeit gar keine Bell auf der Shell hoere. Da muss ich noch mal nachforschen. Eventuell liegt es auch der Keymap de-latin1-nodeadkeys, die ich in /etc/conf.d/keymaps eingetragen habe. Ich gehe spaeter mal auf de-latin1 zurueck und schaue, ob es Besserung gibt.
  6. Der verbaute Intel WLAN Chip 4965 braucht beim wpa_supplicant den Parameter “-Dwext” und nicht — wie ich zuerst dachte — “-Dipw”, wie ich es aus der manpage herauslesen wuerde.

Bei Gentoo aergere ich mich immer mehr ueber den Status von Firefox: Die Version 3.0 ist seit Monaten draussen, 3.0.1 seit ueber fuenf Wochen. Warum muss beides immer noch maskiert im Gentoo Portage sein?

Neues Notebook: Distro gesucht

Ich hab mir Mittwoch ein Samsung R700, welches meinen doch schon in die Jahre gekommenen Inspiron 8200 ersetzen soll. Nachdem ich mich ein, zwei Stunden ueber das vorinstallierte Vista amuesiert hatte, habe ich sofort mit der Entscheidungsfindung fuer eine Linuxdistribution begonnen. Klar war, dass ich eine Distribution wollte, mit der ich bereits Mileage habe, damit die Installation zuegig von der Sache geht.

  • Debian habe ich kurz erwogen, mich aber dann doch dagegen entschieden, weil ich einen Firefox moechte, der auch so heisst, und keinen Iceweasel. Dieses Lizenzgerangel um Firefox/Icewease und Thunderbird/Icedove interessiert mich als Endnutzer nicht die Bohne, solange ich beides legal kostenfrei verwenden darf. (Debians Entscheidung kann ich trotzdem verstehen und gutheissen: Fuer Firmen als Anwender kann eine absolut freie Distribution in der Finanzbuchhaltung/Rechtsabteilung selbst bei einer staatlichen Pruefung fuer froehliche Gesichter sorgen!) Mit apt-get und aptitude habe ich aber immer gern gearbeitet. KDE 4.1 ist allerdings auch nicht dabei, auch wenn es wohl bald in Debian Sid aufschlaegt.
  • Knoppix: Siehe Debian. Und ich war zu faul, mir die DVD zu saugen und zu brennen. Und kein KDE 4.1…
  • Opensuse: Suse will ich aus Prinzip nicht. Und die OpenSuse Live CD mit KDE 4.1 lief bei mir eh nicht richtig rund.
  • Sabayon Linux: Klingt interessant, insbesondere weil ich nicht so viel selbst kompilieren muesste. Aber ich mag den Ansatz nicht, dass einfach ueber ebuild/portage noch ein anderes Paketmanagementsystem draufgestuelpt wird. Ebuild ist selbst schon komplex genug… Ich bin unschluessig. Hat jemand Erfahrungen damit gemacht? Ich bitte um entsprechende Kommentare!
  • (K|X)ubuntu? Hat bei mir im Kopf immer noch den Status des Anfaenger-Linux. Nett waere aber, dass es auf deb-Paketen basiert. Und die Hardwareerkennung soll genial sein. Der Installer ist wohl gleichzeitig eine LiveCD, die ich wohl mal ausprobieren sollte. Wenn, dann muss es Kubuntu sein, die haben seit einigen Tagen wohl auch KDE 4.1.
  • Gentoo: Habe ich bisher auf dem Inspiron verwendet, stecke ich gedanklich also derzeit am tiefsten in der Materie. Wenn doch nur diese langen Installationszeiten durch das Kompilieren nicht waeren. Ich will doch lediglich moeglichst aktuelle Pakete mit moeglichst wenig Aufwand installieren. Gentoo ist halt viel Handarbeit. Was mich wundert: Firefox ist in der 3.0.1 immer noch maskiert (~x86), KDE 4.1 ist noch nichtmal maskiert zu haben. Was ist los bei Gentoo, schlafen die, haben die keinen Bock mehr oder einfach zu wenig Leute? Die hatten doch mal den Ruf, alles superschnell ins Portage hineinzubekommen.

Schlussendlich: Ich werde die Installation wohl mit Gentoo beginnen, auch wenn ich dabei ein leicht ungutes Gefuehl habe. Die Kubuntu-Installer ziehe ich mir aber auch und teste sie mal als LiveCD.

Notebookreparatur, 2

Über den ersten Teil meiner Notebookreparatur habe ich vor einiger Zeit schon geschrieben. Gestern und heute ging es dann weiter mit Teil zwei.

Nachdem ich mir geeignetes Werkzeug besorgt hatte, um die Seriell- und Parallelport-Anschlüsse auf der Rückseite des Notebooks abzuschrauben, habe ich es gestern Abend noch einmal auseinandergenommen. Diesmal ist es mir auch gelungen, das Mainboard mit der schadhaften Netzteilbuchse zu auszubauen.

Die korrekte Fehlerdiagnose: Da die Buchse nur an ihren Lötfahnen befestigt ist, wurde durch die dauerhafte Belastung eine dieser Fahnen abgerissen. Das erklärt, wieso das Verkanten des Steckers für eine Weile geholfen hat, bevor dann gar nichts mehr zu holen war.

Ich habe die Buchse ausgelötet, was überraschend reicht ging, und bin damit heute zum Elektronikladen gelaufen. Der Verkäufer kannte zwar mich nicht (wie auch …), aber sowohl Buchse als auch Problem. Und er wusste, dass es diese Buchse so nicht gibt und ich mir aus Drähten, einer anderen Buchse (die es gibt …) und Schrumpfschlauch etwas selbst basteln muss.

Jetzt habe ich also zwei Optionen:

  1. Entweder etwas basteln, das mit Draht, Buchse und Schrumpfschlauch wieder einen Anschluss ermöglicht – wobei ich noch das Problem der Zugentlastung lösen muss.
  2. Ein (kaputtes) Mainboard mit gleicher, intakter Buchse finden, das ist als Ersatzteillager missbrauchen kann.

Ich tendiere mittlerweile aber schon sehr zu Variante eins. Das ist nicht so schick, aber weitere Reparaturen dürften sich wesentlich einfacher gestalten.

Spontane Idee: Festplattenstecker und -buchse verwenden. (Also, die Teile, die im PC zur Stromversorgung genutzt werden.) Die Festplattenbuchse wird dann mit Kabeln aufs Mainboard gelötet, an den Festplattenstecker kommt die Buchse für die Notebook-Stromversorgung. Der Festplattenstecker passt dann noch ins Notebook und dient gleichzeitig als Zugentlastung. Falls dort mal etwas reisst, lässt sich das leichter reparieren, als wenn ich wieder am Notebook löten müsste.

Security by Obscurity

Im April hatte ich über die Sicherheitslücke in Chipkarten des Typs Mifare Classic geschrieben, die auch als Studentenausweis an der Uni Magdeburg dienen. Der Hersteller InterCard hatte Anfang April angekündigt sich zügig mit seinen Kunden in Verbindung zu setzen. Davon hat man hier an der Uni bisher nichts gemerkt.

Unabhängig davon ist heute bekannt geworden, dass NXP, der Hersteller der Chips, eine niederländische Universität verklagt hat, damit die keine Paper zu der Thematik veröffentlichen. Fefe schreibt dazu:

Das sagt mir persönlich ja immer alles, was ich über eine Firma wissen muß, wenn die ihre Sicherheitslücken nicht fixen und dazu stehen sondern den Boten unter Beschuß nehmen.

Ich frage mich, wie die sich das vorstellen. Die Niederländer sind ja lange nicht die einzigen, die Details zu der Sicherheitslücke veröffentlicht haben. Da gab’s einen Vortrag auf dem 24C3, die c’t hat lang und breit drüber berichtet und all diese Informationen sind seit über einem halben Jahr öffentlich, lange genug Zeit also für böse Buben sich da schlau zu machen und das Wissen zu speichern. Viel interessanter ist die Frage, wie sie die bestehenden Systeme absichern oder auf neue Systeme migrieren wollen. Wäre glatt mal interessant beim hiesigen Studentenwerk anzufragen, ob der Hersteller schon Kontakt aufgenommen hat und was da möglicherweise hinsichtlich neuer Karten o.ä. geplant ist.

Sicherheitslücken beim Studentenausweis der OvGU

Die Studenten der Otto-von-Guericke-Universität Magdeburg bekommen einen Studentenausweis mit RFID-Chip. Das ist schon seit einigen Jahren so und eigentlich sehr praktisch. Ähnlich wie bei der Geldkarte kann man Geld auf die Karte laden. Damit kann man in der Mensa und den Cafeterien des Studentenwerks sein Essen bezahlen, in der Bibliothek kopieren und sich an speziellen Automaten zurückmelden. Die drucken dann auch das neue Gültigkeitsdatum auf die Karte, so dass man bei den Magdeburger Verkehrsbetrieben stets einen gültigen Fahrausweis hat. Zusätzlich ist noch ein Strichcode vorn drauf, damit dient der Studentenausweis auch als Nutzerausweis der Bibliothek. Das System kommt von der Firma Intercard.

Vor einigen Monaten fiel mir auf, dass im Foyer der Mensa zwei kleine Automaten aufgestellt wurden, die den aktuellen Ladebetrag der Karte anzeigen. Diese Automaten sind im Gegensatz zu den Lesegeräten an den Kassen der Mensa sozusagen autark, nur ein Stromkabel ist angeschlossen. Der logische Schluss: der Geldbetrag ist direkt auf der Karte gespeichert. Die naheliegende Vermutung: wenn es gelänge, den RFID-Chip entsprechend zu manipulieren, ließe sich Guthaben erschleichen. Da ich kein gewiefter Hacker bin, blieb es bei einer Nachfrage beim Studentenwerk, wo man mir einerseits bestätigte, dass der Betrag tatsächlich auf der Karte gespeichert ist und andererseits versicherte, dass das System sicher sei und ich mich bei weiteren Fragen an den Hersteller wenden solle – habe ich nicht gemacht. Das ganze passierte wie gesagt im letzten Jahr.

Vor einigen Wochen nun erschien in der c’t 8/08 ein Artikel mit dem Titel »Chiptease – Verschlüsselungssystem eines führenden Bezahlkartensystems geknackt«. Das ganze las sich zunächst wie der jährliche Aprilscherz der Redaktion. Doch weit gefehlt, der eigentliche Aprilscherz war richtig absurd und relativ leicht zu enttarnen, dies hier hatte Hand und Fuß. Die Autoren hatten den RFID-Chip freigelegt und dann Layer für Layer abgeschliffen und abfotografiert, um aus der Halbleiterstruktur auf die Funktionsweise und damit die verwendete Verschlüsselungstechnik schließen zu können.

Eine kurze Recherche ergab, dass der untersuchte und millionenfach verbreitete Chip vom Typ »Mifare Classic« auch von Intercard eingesetzt wird. Die c’t verweist in ihrem Artikel auf eine Untersuchung des niederländischen OV-Chipkaart-Systems. Die Stellungnahme, die Intercard am 7.4.2008 veröffentlicht hat, liest sich recht interessant:

Zur Verschlüsselung der Systemdaten und -informationen wird der geheim gehaltene sogenannte CRYPTO1 Chiffrieralgorithmus eingesetzt, welcher nur mit speziellen NXP Bausteinen umgesetzt und verarbeitet werden kann. Diese Bausteine sind auch in den Mifare Lesemodulen eingebaut. Die Schlüssellänge beträgt 48 Bit, daraus ergeben sich über 280 Billionen Kombinationsmöglichkeiten.

Punkt 1: Security by Obscurity. Die erfolgreiche Kryptoanalyse hat wieder einmal gezeigt, dass dieses Konzept auf äußerst wackeligen Füßen steht. Punkt 2: Schlüssellänge. Mag das Mitte der 90er noch Stand der Technik gewesen sein, in »Kleiner Passwortgenerator in Perl« haben wir letztens erst Schlüssellängen diskutiert und 48 bit sind heutzutage lächerlich wenig. Intercard schreibt völlig zurecht:

Fazit
Die einfache Struktur der aufgedeckten Rechenregel, voraussagbare Zufallszahlen sowie
Zusammenhänge zwischen Karten-ID und Schlüssel lassen einen erfolgreichen Angriff auf
die Karte gewissermaßen recht einfach erscheinen.
Die Aussage “Verschlüsselungsalgorithmus Mifare Classic nachvollzogen” muss also
im Grundsatz als korrekt bewertet werden !

Die möglichen Gefahren sind klar. Da aber die Karte an der Uni hier, soweit ich weiß, nicht als Zugangskarte sondern nur als elektronische Geldbörse dient, ist dieser Punkt für mich am interessantesten. Im Hintergrund des Bezahlsystems wird ein sogenanntes Clearingsystem benutzt. Das bedeutet, dass sämtliche Transaktionen an Aufladeautomaten und Kassen geloggt und ausgewertet werden. Bei Unstimmigkeiten, die bei manipulierten oder geklonten Karten logischerweise auftreten, können die entsprechenden Karten anhand ihrer Seriennummer gesperrt werden. Insofern mache ich mir um meine Karte erstmal keine großen Sorgen, würde aber dennoch empfehlen keine allzu großen Beträge aufzuladen.

Nach einer Bestätigung der Schwächen des Kartensystems vom 19.3.2008 schreibt heise letzte Woche übrigens in »Aus für RFID-System Mifare Classic?«, dass auch das Nachfolgesystem Mifare Plus anfällig ist. Mehr und ausführliche Information zum Thema sowie den Vortrag zum Thema auf dem 24C3 findet man auf der Homepage von Karsten Nohl.

Eins noch, Intercard hatte in dem oben verlinkten PDF noch folgendes angekündigt:

Weitere Vorgehensweise
InterCard wird für seine Kunden sehr zeitnah (ca. 4 – 6 Wochen) eine Migrationsstrategie auf
eine neue Kartentechnologie ausarbeiten und vorstellen.

Wer da nähere Informationen in Bezug auf die OvGU hat, kann die gern an mich weiterleiten.