Archive for the ‘Technotrends’ Category

Bis auf die Wurzeln verschluesselt (SWWFSP*)

Wednesday, February 15th, 2006

ALLE ACHTUNG! Dieser Eintrag ist obsolet. Mit den aktuellen Installations-Datentraegern der Distributionen Debian und Ubuntu laesst sich das unten beschriebene Setup ebenfalls durchfuehren (ohne externes Gebastel). Die Scripte werden daher nicht mehr weiter angepasst (und duerften inzwischen aufgrund geaenderter Ordnerstrukturen fuer das initramfs auch nicht mehr funktionieren). Ich danke euch fuer eurer unermuedliches Fehlersuchen :).
Achtung bitte. Dieser Eintrag wurde mehrfach aktualisiert. Bitte beachte auch die Updates am Ende des Eintrages. Diese koennten ergaenzend zum Eintrag selber schon Fragen loesen oder Anhaltspunkte fuer weitere Informationsbeschaffung leisten. Danke :)

Nochmal Achtung! Inzwischen gibt es unter blog.roothell.org eine aktuellere Anleitung fuer alle Ubuntu Dapper Benutzer, die auch ohne weiteres mit Dapper Drake funktionieren soll. Danke an alle, die mir dies mitgeteilt haben.

Hallo liebe unbaendige Fangemeinde dieser prosaischen Hirnvergewaltigung. Heute war ein guter Tag… zumindest fuer die meisten Menschen auf diesem Planeten. Valentingstag ist ein Tag der Liebe, der Zuneigung und der Gestaendnisse. Nichts der gleichen erreichte mich, bis auf eine einsame traurig schauende digitale Rose meiner Cousine, die mich sehr gefreut hat. Naja… seis drum. Ein Nerd ist ein Nerd. Wer beliebt sein will sollte sich andere Hobbys suchen und in der Stadt herumlaufen, mit den teuren Klamotten rumprollend. Das ist nicht so mein Ding, da behalte ich doch lieber all das Geld ein und gebe es fuer den ganzen Kram aus, der kaputt geht und ersetzt werden muss… siehe mein iBook. Noch immer koennte ich mir die Stimmbaender aus dem Hals fluchen.
So aehnlich muss ich heute morgen auch geklungen haben. Erstmal war die Nacht recht kurz da ich gestern Abend noch, Gott allein weiss wie, mein Notebook,bzw das Debian darauf abgeschossen habe. Zusaetzlich dazu hat mich eine Erkaeltung dahingerafft… oder sagen wir “hatte”… ich leide nie sehr lange darunter und meistens ist das mit viel Tee und meiner Lieblingsmusik in wenigen Stunden ausgesessen. Ich war als heute nicht in der Firma, hatte quasi Schonfrist ;). Was macht ein Nerd an so einem Tag? …
Zu dieser Frage sollte man als interessierte Persoenlichkeit zunaechst folgenden Gegensatz zu verstehen versuchen. Nerds sind, obgleich sie der Oeffentlichkeit gegenueber haeufig zu Schreckhaftigkeit neigen leicht von jeglicher technischer Spielerei zu begeistern. Auch wenn diese erst mit gewisser Zurueckhaltung und Skepsis beaeugt wird zieht sie den gekoederten Nerd rasch in ihren Bann und wird so lange nicht losgelassen bis sie an allen Enden pfeift und blinkt. Dem entgegen steht der oft auch nur technischen Massnahmen zur Datensicherheit vorgeschobene Schutz der Privatsphaere, deren interessante Seite mich am heutigen Tag zu fesseln drohte. Ich spreche mit diesen geschwollenen Worten vom tool ‘cryptsetup’ (die Variante mit LUKS). Dieses kleine Wunderknaeul aus Prozeduren und Variablen ist in der Lage mittels des Kernel Device Mappers in Linux eine Abstraktionsebene zwischen den Benutzer und die Hardware zu schieben, die eine transparente Verschluesselung zulaesst (Beschrieben im Linux Magazin 08/2005 incl des technischen Hintergrundes den beiseite zu lassen ich gedachte). Diese Abstaktionsschicht, die ich im fortlaufenden einfach beim Namen des zustaendigen Kernel-Moduls nenne (”dm-crypt”) laesst auf herrlich einfache und sichere Art und Weise ganze Dateisysteme hinter dem mystischen Schleier der Kryptographie verschwinden. Im Einsatz ist dieses Verfahren seit etwa 07/2005 in diesem Haushalt zur Speicherung von Gespraechsdaten und Schluesseln auf der PBX4Linux Telefonanlage und bisher konnte ich nicht klagen, was Leistung oder Zuverlaessigkeit angeht. Allerdings ist in diesem Fall nur ein Teil des Dateisystems verschluesselt.
Wie ich bereits sagte war das Debian auf meinem Notebook eh schwer beschaedigt und da mich diese Crypto-Technik immer wieder dazu antreibt zu lesen, zu verstehen und auszuprobieren wagte ich es, einen ersten Versuch zu einer Crypto Root FS Installation zu unternehmen. Der Haken dabei ist, dass schon sehr frueh beim Booten, wenn das Wurzeldateisystem auf dem die Programme (unter anderem zum Initialisieren des Crypto-Dateisystems) liegen noch nicht verfuegbar ist, ein Programm zum Aktivieren des Device-Mappers im Kernel gestartet werden muss. Debian konnte das bis vor kurzem noch (als sie noch mkinitrd und klassische cramfs initrds, winzige dateisysteme mit den zum booten wichtigsten Prograemmchen, benutzten). Die HowTos in der Cryptsetup-Dokumentation und im Internet, die ich zu debian und gentoo gefunden habe benutzten fast alle dieses Verfahren. Da mit der Umstellung von devfs oder classical dev auf udev im Kernel auch die Umstellung von initrds zu initramfs (anstatt cramfs kommen hier cpio Archive zum Einsatz) einher ging sind diese HowTos, was die Pre-Root-Mount Abschnitte - also die, die beschreiben, wie man ein verschluesseltes Root FS mountet - angeht unbrauchbar. Im Versuch liess sich auch der Kernel mit der aus der sonst recht hilfreichen Dokumentation von cryptsetup (die man unter /usr/share/doc/cryptsetup/CryptoRoot.HowTo findet) erstellten initrd nicht booten, bzw fand dieser das dm-crypt Laufwerk nicht. Vielleicht war das ein Problem mit LUKS.
Das neuere cryptsetup aus unstable (aktuell leider nicht das aus testing und stable, weshalb unbedingt vorher aktualisiert werden muss) unterstuetzt die wunderbaren LUKS Erweiterungen. LUKS steht fuer “Linux Unified Key Setup” und ist quasi ein Header auf dm-crypt Laufwerken, in dem mehrere Schluessel fuer mehrere Benutzer etc festgelegt werden koennen und noch vieles mehr. Weitere Infos dazu gibts unter http://luks.endorphin.org. Auch wenn das Initialisieren eines solchen Laufwerkes wesendlich einfacher ist, muss man darauf achten, dass das cryptsetup mit dem man arbeitet dies auch unterstuetzt. Das war z.B. bei der Gentoo Live CD aus dem 2005.1er Release nicht der Fall. Bei INSERT unterstuetzte der aktuelle Kernel nicht die noetigen aes ciphers und somit musste ich eh neu installieren. (Kleine Anmerkung an dieser Stelle: Ich zog noch einige andere CDs in erwaegung, aber ich wollte auch noch fertig werden und habe mich daher fuer eine etwas exotische, wenn auch in vielerlei Hinsicht vorteilhaftere Methode entschieden)
(Es folgt eine Anleitung in der bitte jede Leserin und jeser Leser aufmerksam darauf achtet die Werte, Pfade und Devicenamen an das eigene System anzupassen. Diese Anleitung ist fuer Menschen, die wissen was sie tun.)
Wie bereits vor einigen Tagen erwaehnt, das Notebook ist des Nerdes Freund.. demnach hat mans immer dabei und kann es sich nicht erlauben wenn mal was nicht tut. Bei meinem Firmennotebook ergibt sich zuseatzlich die schwierigkeit, dass ich ueber einen unpowered (4Wire) FireWire Port von CD booten muss. Daher eruebrigt sich das Mitfuehren einer Knoppix CD. Die recht Geraeumige 80GB HDD ermoeglicht allerdings das Unterbringen einer speziell auf die Rettung von Daten und Systemen ausgelegten Debian Installation von unter 1GB, die ich gleichsam zum zusammenstellen des dm-crypt root und des initramfs benutzen moechte.
Zur Installation von Debian nehme ich in der Regel direkt einen Debian Installer Daily Snapshot. Die Dinger tun oft genug und sind aktuell. _SO_ mag ich das. Ausserdem kommt man schnell ran und muss nur um die 100 MB herunterladen (http://www.debian.org/devel/debian-installer/). Herunterladen, Brennen und es kann losgehen (die unglaublichen Szenen bei den Versuchen das FireWire CD Laufwerk ans laufen zu bringen erspare ich euch… gleichzeitig enthalte ich euch auch noch mehrere Lachkraempfe vor, aber wir sind ja zum Arbeiten hier… nicht zum tratschen.)
Das Partitionieruntsschema ist recht einfach:

  • hda1: ca 350MB Boot (ext2) - Ich mag es gerne geraeumig und bastel viel mit kerneln. Ausserdem wusste ich noch nicht wie gross das initramfs mit all den tools nacher werden wuerde. Nummer sicher! Im Debian Installer setzen wir die Partition auf “Formatieren” und “Benutzen als ext2″. Da wir Grub benutzen koennten wir auch XFS oder ext3 nehmen… aber warum ein journal? der Mountpunkt ist /boot
  • hda2: ca 780MB Swap (noch kein FS! der swapspace wird auch verschluesselt ;)) - Ich habe 384MB Ram, das ist weniger als 512MB, daher muss ich nach der Faustregel aus meinen fruehen Linuxtagen das doppelte an swap nehmen. Ich bin bisher ganz gut mit der groesse gefahren.
  • hda3: ca 7.5GB Root (auch noch kein FS, dafuer sind wir heite hier) - Das Root Dateisystem traegt nacher nicht das /home directory, also darf ist es mit 7.5GB fuer ein statisches Arbeitssystem schon ganz schoen geraeumig. Wir haben den Platz ja schliesslich.
  • hda5: ca 800MB Rescue Root (ext3) - Hier rein installieren wir erstmal. Das teil rettet uns nacher unseren Kragen, wenn mit dem Hauptsystem unterwegs mal die Pferde durchgehen. Im Debian Installer setzen wir es auf “Formatieren” und “Benutzen als ext3″. Der Mountpunkt ist /
  • hda6: ca 50 GB Home (noch nix, auch das /home wird verschluesselt) - Das Homedir traegt spaeter die Benutzerverzeichnisse. Ich neige dazu da allen moeglichen Krams reinzuwerfen, daher hab ich hier auch etwas platz vorgesehen.
  • hda7: der Rest. Ich werfe hier ziemlich viel speicher ueber Bord, aber man weiss ja nie. Vielleicht will ich mal eine andere Distri testen oder so. Ich lasse die restlichen >10GB mal frei und harre der Dinge die da kommen.

Unser Debian Installer fuehlt sich also etwas beengt, denn bisher weiss er nur von den beiden putzigen Partitioenchen von insgesamt etwas ueber 1GB. Das ist / (hda5) und /boot (hda1). Wir installieren hier erstmal das Basissystem rein, installieren auf nachfrage grub und machen weiter. Ich mag grub eher, weil er im Zweifel eine kleine shell zum schnellen korrigieren der Parameter und der Kernel-Namen bietet. Sowas hat LILO irgendwie nicht. Schade.
Nach der Installation des Basis Systems bereiten wir die Installation des Crypto-Root sorgfaeltig vor. Zu installieren sind cryptsetup, das 2.6.15 (das ist gerade aktuell… wenn du das liest vielleicht auch schon wieder veraltet) kernel image fuer unseren Prozessor (ich nehme hier 686, da ich einen Pentium III besitze) und, sollte das nicht eh schon passiert sein, die initramfs-tools. Natuerlich installiert hier auch jeder seinen lieblingseditor und alle tools, die man auf der konsole zur wiederherstellung braucht. Meine lieblinge sind hte (Paket ht), partimage, parted und einige Andere dinger die mir gerade nicht einfallen.
Der Knackpunkt ist wie gesagt das initramfs. Von hier aus muss die Passphrase abgefragt werden, der device-mapper eingerichtet und das LUKS initialisiert werden. Das macht zwar alles ein kleiner Befehl, aber an diesem haengt ein Rattenschwanz an Bibliotheken die alle in das kleine Image rein muessen. Zum GLUECK habe ich festgestellt, dass die initramfs tools einem hier die ganze arbeit abnehmen und Abhaengigkeiten aufloesen. Damit es allerdings ueberhaupt was zum mounten gibt muessen wir den krams erstmal verschluesseln. Wer hier nach einem HowTo fuer das uebernehmen einer bestehenden Installation sucht, dem muss ich leider absagen. Vielleicht bringt es aber auch was weiterzulesen. Die Installationsprozedur ist fast die selbe.
Spaetestens an dieser Stelle solltest du den aktuellen Kernel gebootet haben. Wenn nicht, neu starten. der 2.6.15 kann alles was wir brauchen. Zur Anwendung wird kommen: ein dm-crypt LUKS mit aes-cbc-essiv:sha256 cipher. Das bedeutet, wir benutzen Cryptsetup mit LUKS Support, AES als Verschluesselungs-Algorithmus, wenden diese als Zyklische Block Chiffre, damit in Blocks zufaellig gleiche Fragmente nicht auch in der verschluesselten Kopie gleich aussehen. Danach salzen wir diesen Zyklus noch mit einem Initialisierungsvektor, der gehashed wird. Damit verhintert man Wartermarking Angriffe. Die Details sind BITTE dem LM zu entnehmen ;). Ich will nicht noch mehr ueber die Technik sagen.
Schreiten wir also zur Tat: hda3 ist unser erstes Opfer. Nach der Tabelle oben muesste hier hinein das Root Dateisystem in das wir spaeter das Grundsystem kopieren. Damit das geht, und der Kernel weiss, dass es sich hierbei um den Physischen Raum fuer ein verschluesseltes Dateisystem handelt benutzen wir jetzt (ich hoere einige zum xten mal aufatmen, “Kommt der Junge jetzt endlich zur Sache”) erstmalig cryptsetup. Die Manpage ist auf jeden Fall einen Blick wert! (Folgende cryptsetup Aktionen werden bitte als root ausgefuehrt, da wir direkt mit den BLock devices arbeiten)

cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/hda3

(Einige HowTos fuellen vorher die HDD mit Zufallsdaten. Dies kann aus kryptoanalytischer Sicht Sinn machen um Bereiche in denen verschluesselte Daten liegen nicht offensichtlich zu zeigen. Ich habe darauf verzichtet. Die Manpage von “shred” hilft weiter, wenn dieser Schritt gewuenscht wird.)
Die Nachfrage von Cryptsetup (die hoffentlich alle angezeit bekommen… ansonsten ist wohl ein Fehler aufgetreten) LESEN WIR SORGFAELTIG und bestaetigen sie dann mit YES (alles schoen brav gross schreiben). Wir werden 2x nach einer Passphrase gefragt, nach deren 2 maliger korrekter Eingabe alle Daten auf /dev/hda3 verloren gegangen sind (ich hab doch gesagt… LESEN ;)). Jetzt sind hoffentlich alle Header geschrieben. Die Passphrase ist optimalerweise sehr lang, dennoch leicht zu merken und schwer zu erraten. Ganze Saetze mit Zahlen und Satzzeichen machen das ganze interessant. Wichtig jedoch ist, dass zum Zeitpunkt der Passphrase eingabe die lokalisierten Tastaturtreiber noch nicht geladen sind (Anmerkung vom 23.2.06: Das stimmt inzwischen nicht mehr ganz. In der aktuellen Version sollte die Keymap, die sowieso vom System beim booten geladen wird mit in das initramfs gepackt werden). Verzichte also auf z,y, Klammern, Semikoli und andere Frechdachse, die sich auf der englischen Tastatur ganz wo anders verkrochen haben (zumindest Umlaute sollte man auch dann beiseite lassen, wenn man nach dem 23.2.06 installiert hat).

Die Parameter erklaeren sich wie folgt: -c legt die oben bereits erklaerte cipher fest, -y laesst cryptsetup 2x nach einer Passphrase fragen und -s ist die laenge unseres Schluessels in Bit. 256 Bit ist fuer AES das aktuell unterstuetzte Maximum. luksFormat ist die durchzufuehrende Aktion (Formatieren mit LUKS) und /dev/hda3 das zu formatierende Geraet. Haeufig wurde ich gefragt ob man auch ein anderes Dateisystem als LUKS verwenden kann… aber hier ist schon die Frage in die falsche Richtung gedacht. LUKS ist nicht etwa schon das Dateisystem, sondern nur die Vorbereitung fuer das transparente dm-crypt. Das Dateisystem erstellen wir spaeter…
Noch ist allerdings unser verschluesselter Datenspeicher noch nicht sichtbar… das ist auch besser so. Was wir sehen lenkt uns vom wesendlichen ab. Wir sollten uns gleich an das wichtige gewoehnen und durch Wiederholung lernen. Schliesslich haben wir ja noch unsere Home Partition hda6 (oder aehnlich). Mit ihr verfahren wir erneut wie oben beschrieben.
Ist das erledigt ist es Zeit zum spielen. Wir aktivieren kurz mal beide dm-crypt mappings um erstens zu schauen wie das geht und zweitens um zu sehen ob wir uns noch an die Passphrase erinnern. Letzteres ist besonders wichtig. Ich merke hier noch einmal an (andere Dokumentationen haben das sicher auch schon getan) dass Daten aus einem Crypto-Device, dessen Passphrases man vergessen oder dessen Schluessel man verloren hat NICHT (UND AUF KEINEN FALL) in einem fuer uns zu ueberlebenden Zeitraum zurueckerlangt werden koennen. BITTE vergesst eure passphases also nicht.

cryptsetup luksOpen /dev/hda3 root

Dieser Befehl oeffnet das crypto device mapping (luksOpen, erster Parameter) fuer das physikalische device (/dev/hda3, zweiter Parameter) und laesst im device node /dev/mapper/root (/dev/mapper/ + dritten Parameter) den Klartext erscheinen, als waere dieses node das eigentliche Geraet selbst. Logisch gibt es also keinen Unterschied zwischen dem Mapper Device und einer unverschluesselten Festplatte. Hier spielt das Unix-Prinzip “Alles ist eine Datei” seine Staerken aus (ich liebe es :)). Damit wir allerdings diese Aktion (die nacher auch aus dem initramfs automatisch ausgefuehrt werden muss) durchfuehren koennen, muessen wir erneut unsere Passphrase eingeben (diesmal nur einmal, schliesslich sehen wir direkt ob sie falsch war oder nicht). Haben wir uns irgendwann mal nicht vertippt, erzaehlt das cryptsetup uns welcher schluessel das denn war, mit dem wir das device entfesselt haben und setzt das Mapping in /dev/mapper/. Rein theoretisch koennten wir jetzt dort ein Dateisystem anlegen, aber das lassen wir besser. Erst probieren wir das gleiche nochmal mit dem home mapping (und ersetzen dabei den device Namen, sowie den namen des Mappings durch /dev/hda6 und ‘home’.
Damit der kernel oder besser gesagt das cryptsetup init script die Geraete und mappings, die wir brauchen wiederfindet, werden diese in der Datei /etc/crypttab (aehnlich den Dateisystemen in der /etc/fstab) verwaltet. Wir richten hier die uns wichtigen drei (ja…. tatsaechlich. Der swap wird _fast_ automagisch verschluesselt) oder mehr Eintraege an. Ich stelle alle 3 mal exemplarisch vor. Der Inhalt meiner /etc/crypttab auf der rescue-Partition schaut wie folgt aus:

root /dev/hda3 none luks,retry=3,cipher=aes-cbc-essiv:sha256
home /dev/hda6 none luks,retry=3,cipher=aes-cbc-essiv:sha256
swap /dev/hda2 /dev/random swap

Die Eintraege gestalten sich demnach im Format:
Zum keyfile und den Optionen empfehle ich einen Blick in die Manpage 5 crypttab (man 5 crypttab), wo die optionen feutlich erklaert werden. Das Keyfile sei kurz von mir erklaert. Es ist moeglich, anstatt einer Passphrase einen Schluessel aus einem Keyfile (von der beim Formatieren angegeneben Schluessellaenge) mit anzugeben. Dies empfielt sich fuer den SWAP. Da dieser eh nach dem booten unwichtig wird (mal suspend to ram ausgenommen, dass ich nie benutze) ist es moeglich, hier /dev/random einzutragen. Nicht ganz paranoide koennen hier auch /dev/urandom eintragen. Dies hat den Vorteil, dass das erstellen der 32 byte (bei 256 bit passt das) fuer den Schluessel nicht zu lange dauert. /dev/random kann manchmal SEHR langsam sein. /dev/urandom hingegen spuckt in der Regel etwa 1MB/s aus. Da unsere Rescue Partition nicht verschluesselt ist verzichten wir hier auf die angabe von Schluesselfiles. Dies wuerde, da diese gleichsam unverschluesselt und somit theoretisch fuer jedermann zugaenglich waeren unsere gesamte Arbeit unnoetig machen. Wer als Passphrase “mama” gewaehlt hat oder auf die Idee mit den keyfiles auf der rescue-Partition gekommen ist kann hier ruhigen gewissens das Lesen aufgeben. Dir fehlt in diesem Falle das noetige Mass an Verfolgungswahn ;). Auf dem verschluesselten RootFS hingegen werden wir gleich ein Schluesselfile fuer die home-Partition hinterlegen. Das erspart uns einmal Passphrase tippen und ist theoretisch genau so sicher, wie wenn die home directories auf der gleichen partition laegen wie das RootFS. Wer hier fuer das Homedir mehr Sicherheit benoetigt kann allerdings auch dann darauf verzichten.
Nun erstellen wir endlich die Dateisysteme. Bei mir fiel die Wahl fuer beide Partitionen auf ext3. Dieses Dateisystem ist ein guter Allrounder fuer solche Dinge… und ich persoenlich habe schlechte Erfahrungen mit reiserfsund xfs gemacht. Diese halten mich immer wieder davon ab die beiden nochmal auszuprobieren ;). Wir tun wieder so als seien unsere mapper-devices ganz normale Partitionen:

mkfs.ext3 /dev/mapper/root
mkfs.ext3 /dev/mapper/home

Dies erledigt alles fuer uns und kann eine weile dauern. Eine gute Gelegenheit ein Glas Wasser oder eine Flasche Bier zu holen. Fuer nen Kaffee reichts wohl nicht. Nachdem wir festgestellt haben, dass alles ok ist tragen wir das gerade getane in die /etc/fstab unseres rescue Systems ein und legen die entsprechenden Mount-Punkte an. Folgendes findet sich in meiner fstab zu den 3 dm-crypt Geraeten:

/dev/mapper/root /mnt/root ext3 defaults 0 2
/dev/mapper/home /mnt/root/home ext3 defaults 0 2
/dev/mapper/swap swap swap sw 0 0

Das mkswap, was einige vielleicht vermissen, koennen wir uns sparen. Das wird von dem cryptsetup init-Script erledigt. Zu beachten waere an dieser Stelle, dass ein bereits bestehender Eintrag auf /dev/hda2 als swap device entfernt werden sollte. Mit

mkdir /mnt/root
mount -a
mkdir /mnt/root/home
mount -a

erledigen wir alles Noetige. Es sollte normal sein, dass er nach dem ersten ‘mount -a’ noch meckert. Das tut er, da er den Pfad /mnt/root/home noch nicht finden kann. Nun fuehren wir, um das Swap Geraet zu initialisieren

/etc/init.d/cryptdisks start
swapon -a

aus. Treten hier keine Fehler auf, und zeit “free” die gewuenschte Menge an swap Speicher, so koennen wir, nachdem wir mkinitramfs mit den noetigen Informationen versorgt haben mit dem Kopieren des Root Dateisystems weitermachen. Unter

http://misc.jpoetry.net/crypto_root/cryptsetup_script.tar.gz

befindet sich ein betreutes Archiv mit 2 Scripten. Einem sog. hook-Script, dass mkinitramfs beim erstellen des initramfs sagt, was es zu noch mit in das archiv zu packen hat und ein Script, das beim booten den cryptsetup befehl ausfuehrt. Es werden nur mittels LUKS verschluesselte dm-crypt devices direkt unterstuetzt. Fuer alles weitere findet sich im Abfrage script ein Kommentar, wo es etwas einzufuegen gibt. Das Archiv mittels

tar -xzvf cryptsetup_script.tar.gz -C /

zu entpacken sollte fuer die meisten Mitmenschen genuegen. Sollten Fehler beim erstellen des initramfs auftreten, sind diese mittels der Fehlermeldungen in den 2 entpackten shell scripten leicht zu finden.
Der Befehl “cp” leistet uns nun beim “klonen” des installierten rescue-Systems gute Dienste. Oftmals liest man, dass das uebertragen von installierten Systemen nur mittels tar geschehen sollte. Das ist so nicht korrekt. cp unterstuetzt die geforderten Eigenschaften zum beibehalten von Links, special devices, Berechtigungen und so weiter ebenso. Ist /mnt/root/ und /mnt/root/home nun gemountet, kopieren wir mittels

cp -avx / /mnt/root/
cp -avx /home/* /mnt/root/home/

das gesamte installierte rescue System in unser verschluesseltes Dateisystem. Das kann einige Zeit dauern. Schliesslich werden die Daten jetzt bevor sie geschrieben werden ordendlich durch die Wurst gedreht. Wir passen nun noch einige Dinge in den Dateien /mnt/root/etc/fstab und /boot/grub/menu.lst an. In der fstab unseres spaeteren Arbeitssystems ist eigentlich nur das /mnt/root/ vor den beiden Mountpunkten fuer /dev/mapper/root und /dev/mapper/home zu entfernen. Wer moechte kann das rescue-System auf geeignete Weise in die spaetere Installation mounten, der hierfuer anzulegende Eintrag ergibt sich fast von selbst aus den Kommentaren in der Datei. Die menu.lst muss etwas gefuehlvoller angepasst werden. Hier kopieren wir einen der bestehenden Eintraege mit den Angaben fuer unser Rettungssystem (optimalerweise den aktuellsten) bis GANZ unten unter die DEBIAN AUTOMAGIC KERNELS LIST. Wer moechte kann in /boot eine kopie eines funktionierenden Kernels und eines funktionierenden initramfs anlegen und diese beispielsweise vmlinuz-rescue und initrd.img-rescue nennen. So gehen sie beim Entfernen des Kernels vom System nicht verloren (achtung ist hier den Modulen geboten, die dennoch verschwinden koennten). Ist das getan, muesste ein rescue eintrag in der menu.lst etwa so aussehen:

title Rescue System
root (hd0,0)
kernel /vmlinuz-rescue root=3,5 ro
initrd /initrd.img-rescue
boot

Weil ich etwas Probleme mit dem root dateisystem hatte, gebe ich als root= Argument die Major,Minor IDs von /dev/hda5 an. Das bootet sicherer. Ausserdem habe ich das savedefault entfernt, da ich nicht moechte, dass, wenn ich einmal das Reparatursystem gestartet habe, das gleiche wieder passiert wenn ich neu starte. Ein paar Dinge muessen noch geran werden.
Das initramfs erwartet einige erweiterte kernelparameter um daraus den cryptsetup Befehl zusammenbauen zu koennen. Diese muessen wir natuerlich JEDEM Kernel mitgeben. Innerhalb der DEBIAN AUTOMAGIC KERNELS LIST finden wir eine Zeile, die wahrscheinlich wie folgt ausschaut:

# kopt=root=/dev/hda5 ro

Dies hat der Debian Installer dort richtigerweise fuer das Rescue System hingeschrieben. Da wir aber fuer neue Kernel unser Crypto Root als rootfs mitgeben moechten geben wir hier folgenden Parameter an (der Hash (oder auch Raute (#) genannt) bleint UNBEDINGT dort stehen):

# kopt=root=/dev/mapper/root ro

Dies sagt dem Kernel, dass er unser dm-crypt device als RootFS benutzen soll. Da nun cryptsetup immernoch nicht weiss, welches echte device dorthin gemapped werden soll (wir erinnern uns daran, bei dem cryptsetup luksOpen-Aufruf /dev/hda3 angegeben zu haben) muessen wir einen weiteren Parameter hinzufuegen. Die Zeile schaut letztendlich so aus:

# kopt=root=/dev/mapper/root cryptivice=/dev/hda3 ro

Der Parameter cryptivice wird ebenfalls benutzt um festzustellen, dass der Benutzer ein dm-crypt einzuhaengen wuenscht. Hierbei handelt es sich nicht um einen Kernel-Parameter, sondern um ein Hilfskonstrukt, der von einem der Scripte, welches wir eben nach /etc/mkinitramfs entpackt haben interpretiert wird. Haben wir alles editieren beendet und die Datei gespeichert, berichtet uns

update-grub

ob alles geklappt hat. Nachfolgend erstellen wir mittels

(Hier stand mal: ‘mkinitramfs -o /boot/initrd.img-2.6.15-1-686′. Empfohlen wird jedoch:)

update-initramfs -u ALL

(jeder moege seinen aktuell laufenden Kernel da hinschreiben wo meine verwendete Version steht) das initramfs neu. Wenn hier keine Fehler auftregen fuehren wir sicherheitshalber erneut

update-grub

aus. Dies ist eigentlich nicht noetig, aber man weiss ja nie ;). Alle kurzentschlossenen tippen an dieser stelle nocheinmal “sync”.
Eben hatte ich schoneinmal angerissen, dass es sinnig sein koennte, auf der verschluesselten Root-Partition ein keyfile fuer die home-partition zu hinterlegen. Um das zu tun gehen wir wie folgt vor (wenn wir denn wollen).
Die Erstellung eines keyfiles geht mittels dd leicht von der Hand:

dd if=/dev/random of=/mnt/root/etc/keys/home.key bs=32 count=1

Der Schluessel ist erstellt. Eventuell muss man je nach Lage des Entropie-Pools ein wenig auf den Tasten Klimpern oder die Maus spazieren fuehren. Dies sort fuer genug Eingabe/Ausgabe-Daten um 32 Byte an zufalls daten zu erzeugen. Da wir moechten, dass dieser Schluessel auch ein Schloss hat, auf das er passt, benutzen wir erneut cryptsetup um den Schluessel zu unserem dm-crypt Geraet hinzuzufuegen:

cryptsetup luksAddKey /dev/hda6 /mnt/root/etc/keys/home.key

Nach eingabe der Passphrase zu dem Geraet (sicherheitshalber… man weiss ja nie wer da gerade einen schluessel hinzufuegen moechte) ist das Keyfile gueltig. Wir muessen cryptsetup und dessen initscript nur noch mitteilen, dieses auch zu benutzen. Dazu editieren wir /mnt/root/etc/crypttab entsprechend unseren Wuenschen und tragen in der Zeile von ‘home’ anstatt none /etc/keys/home.key ein. ACHTUNG. Pass auf, dass du nicht aus versehen die crypttab vom rescue-System editierst oder gar das Keyfile darin erstellst. Ist dies einmal passiert, shredde das keyfile und loesche den Schluessel mit cryptsetup aus dem device. Wie das geht verraet die manpage zu cryptsetup.

Ist das alles getan koennen wir uns an einen ersten reboot wagen. Startet das System nicht: Fehlermeldungen sammeln und in #debian-linux im euirc diskutieren. Da bin ich zu finden und kann eventuell helfen.

So sollte es aussehen
So sollte es theoretisch aussehen

UPDATE: 15.2.06

Was sich sicherlich einige gefragt haben werden ist, wie sowas denn wohl performt. Ich habe dazu mal mit hdparm ein paar lese-Tests durchgefuehrt. Das rapeaesentativste Ergebnis ist folgendes:

/dev/hda:
Timing cached reads: 716 MB in 2.01 seconds = 356.81 MB/sec
Timing buffered disk reads: 74 MB in 3.05 seconds = 24.26 MB/sec

/dev/mapper/root:
Timing cached reads: 700 MB in 2.00 seconds = 349.18 MB/sec
Timing buffered disk reads: 40 MB in 3.04 seconds = 13.15 MB/sec

Die Festplatte ist ein 2,5″ Notebook HDD im UDMA66 Modus ( SAMSUNG MP0804H ) auf . Fuer die noetige Cryptographie sorgt ein PIII 1200Mhz Mobile Tualatin. Der erste wert ist ohne, der 2. mit crypto. Die “cached” WErte verraten, dass der cache noch nicht verschluesselt/entschluesselt ist (da diese sich sehr stark aehneln).

UPDATE: 16.2.06

Gestern habe ich ein ThinkCentre E50 von Lenovo (ehemals vertrieben durch IBM) erstanden und fand die Idee irgendwie cool beim booten anstatt des oben zu sehenden blauen Crypto-Banners ein ASCII-Art IBM Logo anzuzeigen. Die neuen Scripte koennen demnach jetzt auch Theming, undzwar derart, dass man dem kernel beim booten den Parameter “crptbanner=” mitgibt. Das Script zur Erkennung des Cryptoroot mount-Wunsches, das im Endeffekt das Banner anzeigt zeigt dann, sofern vorhanden das entsprechende Banner. Bisher wird nur der Parameter ‘ibm’ unterstuetzt (wenn ich die Scripte gleich hochgeladen habe). Ein Foto gibts in der Review zum ThinkCentre an der ich gerade schreibe.

Das ThinkCentre macht mit seinem Celeron D 2.66Ghz einen Datendurchsatz von knapp 19MB/s im Lesebetrieb aus dem dm-crypt. Die HDD ansich, eine 80GB HDD aus dem Hause Seagate liest 55MB/s Rohdaten. Hier ist also immernoch der Flaschenhals am Prozessor.

Versuche, eine Hifn 7955 fuer das Crypto-API als Hardware-coprozessor dienstbar zu machen schlugen fehl. Der Entwickler des alten Linux Treiber Patches (Eugene Surovegin) erklaerte mir (auf Englisch) wie folgt:

“Der Patch ist eine Sackgasse. Du wirst zuemlich wenig erreichen, wenn du den Hifn Chip neben zeitgemaessen CPUs betreibst. Das Problem steckt im Kernel-Crypto-Layer, der synchron arbeitet. So lange da kein asynchrones Crypto im Kernel ist, sind Hardware-basierte Crypto-Beschleuniger nahezu sinnlos. Ich werde nicht mehr an diesem Patch arbeiten aus diesem speziellen Grund, daher habe ich ihn auch von meiner Webseite entfernt.”

Daraufhin habe ich alle Versuche eingestellt, das Teil sinnvoll ans laufen zu bringen ;). Danke nochmal Eugene fuer diese wirklich schnelle und ausfuehrliche Antwort. So mag ich Community-Kommunikation.

UPDATE: 17.02.06

Kausalitaetsupdate: Warum ueberhaupt Crypto Dateisysteme? Ich fuehre von meiner privaten Seite aus folgende 3 Gruende auf:

  • Widerstand gegen Eingriff und Einblick in meine mobilen Geraete. Ich offenbare meine Daten ungerne Dritten, wenn auch nur indirekt. Jegliches Mittel um meine privaten Daten und somit meine Privatsphaere, fuer mich immernoch nutzbar vor dem Eingriff Dritter zu bewahren soll mir recht sein. Ein guter Anfang sind Crypto-Dateisysteme.
  • Widerstand gegen hoehere Gewalt. Faellt die Festplatte oder ein Teil von ihr aus und ich bin gezwungen sie entweder zu vernichten oder zum Hersteller zu schicken, so gebe ich die Daten meist in beiden Faellen ungewollt und ohne die Gelegenheit einer rechnischen Vernichtung aus der Hand. Der Hersteller des Datentraegers, dem ich nicht vol lvertraue hat andere technische Mittel als ich um die Daten zu lesen. Dies ist, als Konkretisierung des ersten Punktes, unerwuenscht.
  • Technischer Spieltrieb. Wie zu Anfang bereits gesagt spielt der technische Spieltrieb auch eine entscheidende Rolle. Es macht mir Spass die technischen Zusammenhaenge zwischen einem Crypto-Root-Dateisystem, dem Kernel und dem Bootvorgang, die kleinen und grossen damit verbundenen Probleme zu verstehen und aufzuloesen.


UPDATE: 23.02.06:

Da ein Bekannter namens ‘tums’ sehr verwirrt war ueber die Tatsache, dass zwar aus dem Rescue System heraus seine Passphrase funktionierte, beim booten aber nicht (und wir bede LANGE geraetselt haben woran das liegen koennte), habe ich die Scripte (aktuel herunterzuladen) um die loadkeys Funktionalitaet erweitert. die zu ladene Keymap (per default die, die das System auch beim booten laed) kann man unter /etc/mkinitramfs/hooks/CRYPTSETUP im header aendern. Irgendwelche Wahnsinnigen wollen bestimmt beim booten eine chinesische keymap benutzen um potentielle Angreifer zusaetzlich zu verwirren. Davon sei abgeraten. Der Standard ist bei Debian /etc/console/boottime.kmap.gz und funktioniert in der Regel.

UPDATE: 05.06.06:

Danke an IceBear, der mit mir in #debian-linux im euIRC das Problem fuer die Ubuntu User erleichtert hat! Ich habe das script so angepasst, dass man als “cryptivice” argument auch die major und minor des gewuenschten devices angeben kann. Dies wird dann automatisch erstellt und benutzt. Herausfinden kannst du diese Werte, indem du im laufenden System ein ls -l /dev/ machst… dort stehen dann die major und minor id durch Komma getrennt zwischen den Owner-Informationen und dem Modifikationsdatum. In meinem aktuellen Fall (/dev/sda1, major 8, minor 1) gebe ich also an: “cryptivice=8,1″. Die Zahlen sind bitte NUR durch ein Komma zu trennen.. keine Leerzeichen und keine Punkte etc bitte… Entschuldigt die lange Wartezeit

Danke fuers Zuhoeren und bitte fuer die Hilfe :)

Der Sternensucher.

* SWWFSP = Searched Web Without Finding a Similar Posting

[tags]Crypt, Crypto, root fs, cryptsetup, Debian, HowTo, dm-crypt, LUKS, mkinitramfs, initramfs, Hifn, Linux, loadkeys, keymap[/tags]

Tragbare Welt

Sunday, February 12th, 2006

Des Nerdes Freund ist sein Notebook, seine kleine informelle Trickkiste in der er, wann immer er will herumwuehlen kann und mit der er beeindruckende Kunststueckchen vollbringen kann, die, wenn sie auch fuer ein aussenstehenden Beobachter bisweilen an der definition einer “Verrueckten Spinnerei” nur haarscharf vorbeischrammen, ebenso beeindruckende Folgen haben koennen. Ich fuer meinen Teil durfte bis vor 2 Wochen mein iBook G4 als Trickkiste mit mir herumtragen und war damit auch sehr zufrieden - nicht zuletzt weil das Ding einfach knuffig ausschaute. Wie viele Kunststueckchen ich damit vollbracht habe bleibt ein Geheimnis, mit Sicherheit waren es nicht wenige ;).
Eines Tages kommt die Zeit fuer jeden dieser Begleiter an dem es irgendwo anfaengt zu klemmen, zu schrammen und zu klappern - DER Tag, an dem dieser Begleiter beginnt seinen Dienst nicht mehr mit so viel Freud-Verbreitung zu verrichten, wie anfangs, als er noch neu war. Meistens kommt dieser Tag erschreckend nah nach ablauf der Garantiezeit… und in jedem Fall viel weit entfernt von dem Tag, an dem man das Geld fuer einen neuen Begleiter zusammengespart haette. (Sei’n wir mal ehrlich, das ganze Geld landet eh immer wieder in so Spielereien wie Webcams und Modems ;) oder anderen Elementen aus $Spielerei[i] (i > 0)). In meinem Fall war das iBook ziemlich genau 1.75 Jahre alt. Im Mai waeren es 2 Jahre gewesen. Jetzt schon setzte das erste digital-Rheuma ein. Die On-Board Netzwerkloesung begann Sporadisch nicht mehr zu funktionieren… ein leises Klopfen auf den Gehaeuseteil in dem diese untergebracht war brachte in der ersten Zeit noch Linderung und das war ja eh nicht so schlimm… “Schliesslich hab ich noch AirPort”… AirPort ist ein wirklich wunderbar klingender Name fuer etwas, dass dem ambitionierten Nerd graue Haare regelrecht meterweise aus saemtlichen koerperteilen treibt, sobald dieser versucht sein liebstes Betriebssystem zu installieren. “Da gibts immernoch keine Treiber fuer das AirPort Extreme” war immer eine beliebte Antwort auf LUG-Treffen auf die Frage “Noch kein Linux drauf? Verraeter!”. Letzten endes hat sich inzwischen eine Gruppe dieses Problemes angenommen und einen inzwischen zumindest als Proof-of-Concept tauglichen Treiber zusammen-reverse-engineered, der die Stichhaltigkeit dieser Ausrede mehr und mehr schwinden laesst. AirPort Extreme rettete also meinen Tag mehrmals wenn das Stolperfallen-angebundene Netzwerkequiptment den Dienst verweigerte. Doch auch hier nagte der Zahn der Zeit. Das unverstellbare Grauen begann… Netzwerklosigkeit, Kommunikationsverlust. Der Halbtot eines Nerds tritt in dem Moment in dem die SSH-Sitzung zu seinem Lieblingsrechner alle 5 Minuten zusammenbricht. AirPort Extreme war Geschichte und zuletzt in einer Auflistung der PCI-Geraete gar nicht mehr vorhanden. “Naja… stecken wa halt mal ein USB Geraet dran…”. Diese Problemloesung half einige Tage. Im Wohnzimmer sitzend mit den Freunden in aller Welt den Abend verbringen, eine schoene Sache. Apple war immer fuer Ueberraschungen gut. Am 30. Januar als ich von der Firma nach hause kam ueberraschten sie mich mit einem Herrlichen Kurztheather. “Zwielicht” nannten Sie es, “Halbe Erblindung” nannte ich es. Fuer den interessierten Beobachter bzw. die interessierte Beobachterin stelle ich folgendes Bild in den Raum (Anmerkung: hier funktioniert AirPort gerade mal wieder durch spontanheilende Aura):

iBook im Halbschatten
iBook im Halbschatten

Ein irreparabler Ausfall der linken Hintergrundbeleuchtung fuehrte zu einem kurzen schockartigen Aufschrei, einem Augenreiben und dem blitzartigen Griff zur Digitalkamera (Dokumentationsfetischismus fuehrt dazu, dass man immer eine in Griffweite hat). Ich wollte es kaum glauben, wurde allerdings dazu gezwungen. Eigentlich wollte ich mir an diesem Abend noch eine Folge von “Ai Yori Aoshi” ansehen, doch die Idee schrieb ich bei dem Bild vorerst ab. Einige Minuten spaeter jedoch erreichte mich endlich die Erinnerung an den TV-Adapter fuer das iBook. “Mit dem waere das ja alles kein Problem… ich hol ihn schnell und die DVD mit dem DivX drauf…”… so weit so gut, nach Einrichtung und Verkabelung aller Einzelheiten des iBooks mit dem Fernsehgeraet fehlte nur noch das einlegen der DVD. Das typische Geraeusch beim Einlegen eines Datentraegers in das Slot-In Laufwerk des iBooks, dass eher auf Besorgnis erregende weise nach einem sich uebergebenden Hirsch klingt als nach dem erfolgreichen Einziehen eines optischen Datentraegers wurde eng gefolgt von einem ganz neuen Geraeusch. “Siiiup Siiiiiup - *tock* *tock*” klang es aus dem Laufwerk mehrere Male, danach warf es die DVD wieder aus. Gleichsam alle original CDs, DVD-ROM, DVD-R und alle -RW Medien, mit denen ich versuchte meinen Verdacht (auf einen weiteren Defekt am iBook) zu widerlegen. Das einzige was das Laufwerk noch lesen mochte waren CD-R und DVD+R. Hocherfreut ueber diese neue Erfahrung baute ich meine Verkabelung wieder ab und stellte das iBook in die Ecke. Fehlen taten nur noch die Worte “Schaem dich und komm erst wieder wenn du dir bewusst darueber bist was du getan hast.”. Da zu diesem Zeitpunkt aber auch Probleme mit der Soundkarte auftraten haette das Geraet diese wahrscheinlich eh gekonnt ueberhoert.
Einen Tag spaeter startete ich einen erneuten Versuch, meine boese Vorahnung eines drohenden Totalausfalles zu beseitigen. Die Argumente wogen schwer und meine Sorgen kreisten um die unausweichlich scheinende Feststellung, die jeder Besitzer eines Elektrogeraetes kennen wird: “Es ist kaputt.”. Ich trat ins Wohnzimmer, in die Ecke in die ich das iBook einen Abend zuvor mit Behutsamkeit abgesetzt hatte. Die Stand-By-Lampe pulsierte Beruhigend an dem Abend… und das tat sie jetzt nicht mehr. Ich dachte bei mir noch “Das sollte nicht sein, gestern war der Akku voll. Einen Tag sollte der schon noch Stand-By aushalten”. Ein sachter Druck auf die Status-Taste des Akkus gab Gewissheit: Irgendetwas stimmt nicht. Der Akku war voll… nur das Geraet war aus.
Es blieb auch aus… auch nach einem Druck auf die Power-Taste. Auch nach 2 und 3 und 4 Druck auf die Power Taste. Auch nach Reset der Power Management Unit… oder welchen namen dieses Design-Stueck auf der Obst-Platine auch immer tragen moege. Die Gewissheit schaffte sich Raum… Nach 2 Wochen kraenkelnder kleinteile bleibt das iBook nun fuer immer aus.Im Moment laufen die Vorbereitungen (insbesondere die Finanzierung betreffend) fuer die Bestellung eines IBM X60 (oder Lenovo… noch steht ja auch IBM drauf ;)). Ich hoffe damit habe ich mehr erfolg. Das folgende Bild zeigt eine Japanerin, die das Prachtstueck in die Kamera haelt. Freuen wir uns auf den neuen Begleiter und 4 Jahre Vor-Ort Service fuer solche Faelle.

Lenovo X60
Vertreterin mit dem Thinkpad X60

Der Sternensucher gruesst euch… Bis dann.

[tags]iBook G4, Apple, defekt, Notebook, Lenovo, X60, Produkt, AirPort[/tags]

“With the World watching …

Tuesday, February 7th, 2006

… its not easy to be yourself”. !WARINING! This is yet another webcam story ;) !WARNING!

Yesterday at $Company, we got new stuff. Among other things, there was a really tiny logitech webcam, nearly sweet, with a broken pin at the stand. I was curious if i could get it to work with Linux, so I took my lunchbreak (at 18:00 *g*) to try.

Logitech Mini Webcam Plus OEM

The box said “Logitech Mini Webcam Plus OEM”, the kernel said: “ID 046d:092a Logitech, Inc. QuickCam for Notebooks” (this is NOT the “Pro” model… keep that in Mind). When I plugged it in, no Kernel module loaded, so I thought, that it might be unsupported by the default kernel. Not knowing where to start my search, I googled (what else would I do in a situation like this?!) for the USB ID (found some USB ID lists), for the Model name, mentioned by lsusb (Found guides and drivers for the QuickCam for Notebooks Pro) and finally for the model name on the Box. After trying the qc-usb and the pwc drivers (and patching them to recognize my webcam) without success, I tried the last result I got, the spca5xx driver (which can be found HERE). It supports a wide range of LowCost Webcams as well as some upperclass Logitech Cams. It compiled and loaded correctly. After tweaking some settings in the “webcam” tool to the correct values (uncomment “input”, set the resolution to 352×264), I had a nice webcam for your pleasure :). Look at me whenever you like.

At work I had the pleasure to create a beatiful decoration for about hundred mice we want to sell. Heres another picture:

2 Stacks with mice

“There are objects of the class ‘Mouse’ in the stack!”

The sign in the background sais: “The mice are coming! Catch your new USB mouse here!”

Have a nice Week, your Starseeker

Rootkit Friends

Wednesday, January 25th, 2006

Hello everyone. So far, so well, i’m feeling lazy. There ist nothing to do, and I don’t know how to go on. This is not a very nice feeling.

But things even get worse: Some days ago I noticed that the apache on my rootserver wasn’t responding as expected, so I had a look into the system and the running processes. I was very shocked when I saw a bunch of warbot scripts and friends and further more some unfriendly webserver running with www-data privileges (and serving SEVERAL backdoors). I’d been hacked! I the meantime I was able to track the error down to the mambo CMS serving www.jpoetry.net. Lately I was much too lazy to update it and so it got exploited. Currently i’m newly setting up everything with even less privileges, moving Jpoetry.net to the stories.jpoetry.net CMS. Its a lot of work…

’til then. Your starseeker

Com Upgrade

Friday, January 20th, 2006

Hi there… its been a while since I wrote something on technotrends… so here we go.
Some while ago, I finally finished the Fnordlicht I bought at the congress. It works really nice but its hard to take photos from it with MY less professtional digital photo cameras ;). So just look at the pictures and feel good about it. Its really nice.
Yesterday at my Job (HEY! I’m working for my old company AGAIN ;)) i found two boxes, not very light, with stuff in them I could hardly believe. There were manuals for some devolo/elsa devices i posess… and already worked really hard on. (If you ever tried to figure out how to enable CallerID in an ELSA Microlink ISDN/TL V.34 or similar and you DO NOT have the Manual (as I did): Try setting S-Register 153 to some other value. 6 works fine for me… but i’ll explain that later on.). When i asked if i yould take them home, I got the devices matching the manuals as well :) (an Devolo Microlink ISDN i and an Devolo Microlink 56k i (industrial RS232-connected PSTN Data/Fax (for the 56k i even Voice) Equiptment with nice features an a really really great documentation).). Since I already had the predecessor of the Devolo MicroLink ISDN i (the Elsa MicroLink ISDN/TL V.34) and I cant stand this oldfashioned Serial Stuff, I took it all home. At home I read that the ISDN i (other than the ISDN/TL V.34) can not serve analog calls and is thus nearly worthless for me :(. I am still one of those old-fashioned analog telephone guys and like dialing into my network with my good old Modem :). So i had to think of a new setup… currently i have the ISDN i attached for testing purposes at the Dialup line and the 56k i connected at the VOCP Voice Info line. This might change some time ;).

Now to CallerID on the ISDN TA’s from Elsa (known to work with the Elsa Microlink ISDN/TL V.34 and the Devolo Microlink ISDN i):
To make CallerID work on that TA’s (if it has been disabled by the previous owner and written to NVRAM (on older firmware Versions AT&F won’t touch the S153 register… so it won’t reset to “enabled” state :/) ) you have to set S-Register 153 to a new appropriate Value. Since Register 153 is documented as “CONNECT/NO CARRIER message” in the manual, looking for CallerID won’t work out. Its a bit orientated Register, so we have to set the individual Bits. Its not that much trouble with the TA’s. The possible values and their meanings are shown below (defaults are bold). Set the Register 153 with ATS153.[bit]=0 or 1. You may also use ATS153=[sum of values of bity you want to set to 1]

  • Bit 0 (value 1): 0: CallerID of the remote station is NOT displayed after a CONNECT - 1: CallerID is displayed after a CONNECT.
  • Bit 1 (value 2): 0: CallerID of the remote station is NOT displayed after a RING - 1: CallerID is displayed after a RING.
  • Bit 2 (value 4): 0: NO Display of the EAZ/MSN selected by the remote station - 1: With Bit 0 and/or Bit 1 =1, the selected EAZ/MSN is displayed after the appropriate message (either after RING (for Bit 1=1) or CONNECT (for Bit 0=1) or even if both are =1 ;)). (So without bit 0 or 1 set to 1, this has no effect at all!)
  • Bit 3-5 are reserved for internal use. Effects are UNKNOWN and you should probalby leave them untouched.
  • Bit 6 (value 64): 0: NO Display of the messages ALERTING, CALL SENT and CONNECTING - 1: Display of the mentioned messages… (please do not set this until your software or dialup script knows how to deal with it. Most software might end up not connecting anymore because it expects CONNECTED, but gets ALERTING before gettingt CONNECTED. This might mess things up a bit. Even though its very helpful for debugging purposes)
  • Bit 7 (value 128): 0: Cause of an aborted connection is NOT displayed - 1: Cause of the aborted connection is displayed by S154/S155 after NO CARRIER message. (This might also be misinterpreted by the software but can help you out if you don’t know why you are not able to connect. You can still display these values using “AT S154? S155?” even if this bit is 0)

You can set the options each one by itself by specifying the bit you want to set in the AT Command… for example use ATS153.1=1 to set bit 1 to 1. Older TA’s might not support that but its not that bad. You can add up the bit values to a decimal value for the whole tegister byte. This will set _ALL_ bits. For example if you want CallerID and EAZ/MSN Display after each RING but you do NOT want it after CONNECT, and you do NOT want ALERTING, CALL SENT and CONNECTING and disconnection causes, Add up the values for bit 1 (2) and bit 2 (4) to the byte value 6 and set it to the register: ATS153=6. This will set all bits to 0 except of bit 1 and bit 2. Do not forget to save the values to NVRAM with AT*W or AT&W to prevent them from vanishing.

I took this from the manuals because some people looked for it in numerous forums and its really not that easy to find in the manuals if you are looking for CallerID. I hope it works for you. Many other TA’s or modems with CallerID Support use the AT#CID or AT%CCID Commands (or other generic AT Commands without any use of the S-registers) for controlling display of the CallerID. Some older revisions of the ISDN/TL V.34 respond to some of those commands with a OK when in Fax mode but don’t change the value in the register (or the value of the command) from 0 to something appropriate. This nearly drove me mad several times, so do NOT wonder why this is, just don’t use these commands. They will _not_ work!

The Starseeker

2 wheels and a weirdo

Monday, December 19th, 2005

Today, eimann invited me for a movie at his house, because its been a while since we had the pleasure and because tomorrow, he’s off for work in Munich. I accepted and started looking for a way to get to him quickly and without having to pay that much…
First possibility had been: “taking my parents car” … but it was unavailable, so the backup plan became a victim of my treatment… “public transport”. Public transport in this area is something you like as much as eating rotten eggs… because if you want to get somewhere, there never is a line, going that way or its canceled due to shedule changes or the driver got sick and there is no backup… or sometimes the driver simply doesn’t want to drive the sheduled line but another one. So that plan also wasn’t a real choice… the backup backup plan was my new bike. I got it some weeks ago and the odometer was only at 21 till today. Its was cold, it was scary and icy weather and the ground was frozen in large areas… but it was no use… i accepted, so I had to go. Because its a “long” (if you are a skinny nerd its damn long) way of 12.3km to go, I preferred taking the car since I had the driving license and so the last time I went to Eimann by bike dates back about 2 years. Since I really like my new bike and since my training fell behind really really badly in the last 2 years, I also looked at this was like it was a challenge against my inner temptation.
Because even I’m considering myself as a nerd, there isn’t any way to do sports without the special technical touch. So I took my GARMIN Foretrex 201 with me and mounted it on the bike to record a speed graph… watch this one (its the way to Eimann, speed plotted over time):

Way to Eimann, speed over time
20.52km/h average speed, 26,8km/h max speed, 12.33km distance, total time 36:06 minutes

So as you can easily see, I really am out of training… when I arrived at Eimann’s, I was nearly dead, out of breath, out of power, out of order, out of everything… and seariously soaked… because my clothes were dimensioned for the sibirian winter…
We watched “Robots”, laughed alot and when I wanted to go home at about 19:00, I mounted my GPS again (it had some trouble with the signal at the begin of my trip, so the graph is a bit messy) and started the trip homewards… look at this piece of unbelievable embarrassment:

Way Home, speed over time
16,52km/h average speed, 23,6km/h max speed, 11,67km distance, total time 42:23 minutes

So I am even more out of training than I thought. Its very good, that I arrived at home alive, cause I really doubted that during my way back (mind that the way to Eimann is at most parts aslope… so the way back was ascending, and I still was nearly dead from the way to Eimann… and so everything went further more out of order :P). I will train very well the next months to get into a better condition.

The (still dead) Starseeker

Unknown names

Sunday, December 18th, 2005

Hi there!

I’m sorry for being unable to write some posts in the last few days, but the blogs DNS server went offline for an unknown reason and I had to get it fixed by my great name service provider :). He fixed it really well and now we’re going to experience less DNS breakdowns, I hope.

So far on that… The Starseeker

The will to die

Friday, December 9th, 2005

Somtimes I read of accidents in the paper, that occur on stagings. Today I saw a guy who must have been mistrusting those renting companies a lot. Look at this DIY staging. Especially minthe remote control features ;). (Don’t try this at home kids).

Man on dangerous staging 001
New DIY staging sighted…


Man on dangerous staging 002
…including on stage remote control.

The Starseeker

Dreams come true…

Monday, December 5th, 2005

Hi there…

I’ve ever dreamed of a gaming console just for me… one week ago, i made that dream come true by buying a used Dreamcast and some games :) That thing is really great. Now long winterdays may come… :)

The starseeker.

Linux everywhere

Wednesday, November 9th, 2005

Well.. we all probably know the Problem, that if we diclose ourselves to have a hea of knowledge about a specific topic, everyone asks questions about it all the time, which can be very annoying once in a while. The Netherrhine and Ruhr area LUGs have announced their project “Essen Linux Days” (find it here). Please drop by! I’ll also be there and announce my new project: teilen.org.

At this point, I should explain in short, what happend the last few days. I was very busy with university stuff and planning on the linec-event and my own project. Teilen.org (teilen is the german word for “sharing”) aims to be a project, that makes it possible, to exchange precious places. If you have one, please take a look… or visit us at the linec-event.

See you there… the Starseeker

The path of wisdom…

Wednesday, November 2nd, 2005

Its not, that i’ve found an ancients treasure of navigatory wisdom of have the total clue about how to find the shortest possible way to my next target, but I have made up my mind about that.
Imagine a network of N nodes… with N greater than 2 with hardwired connections… every node is reachable… not every node is connected with every neighbour… let this be our near realistic scene of a Country with cities and roads (at the moment, all with the same quality, but different length).
Imagine you are in town A, willing to get to town B. Its your interest to get there as soon and as relaxed as possible. Because you are a lazy guy, you bought a TimTim-System (imagine that as a fictive company with proprietary map data, selling navigation systems) some while ago. You type in “City A” and then “City B”. The route you travel gets you there quick… or short… but even relaxed? The data of nearly all navigation system providers derives from sattelite positioning data and digital maps, defines crossings of a type, defines roads with a quality and length and calculates an approximation of the way, it wants you to take. That may be wht most people are looking for, but its not the best way.
My idea starts in a very simple way… Imagine every City as a root for a tree… every City you can directly (with maximum a step) go to is supplied as a data source and can be treated as a small Tree. If you want to go from city A to city B, the algo takes the small tree for city A, which … micht have city C and D as a neigbour… and attaches the subtrees of city C and D to it. City C has City A, D and E as a neighbour, city D has city A, C, and F as a neigbour. So all the subtrees are attached with only 2 rules:

  • A subtree may be attached many times in one layer of the pathtree
  • A subtree may be attached only in ONE layer. If it has to be attached in a second layer, too, the path ends at this point. (This imlies that the root tree is not attached any more, too.)

The extension of the tree ends, when there are no more leafes, that can be extended. “Thats very lazy!” you might scream now, because that only finds some possibilities from A to B, but thats all we want, hou? So lets pick one of the paths from A to B now. All Paths in the tree, that end with the leaf B can be considered as possible ways to B. I said before, that we have information about how long the ways are (this information may be replaced with an algo, that weights them in a different way). We just add the weights for every path and pick the one with the lowest weight… and voilla! Here we have our precious path!

This method has some flaws:

  • a long route to a target is preferred, if it has lesser nodes in it.
  • if there the target is unreachable, the tree might get very huge.
  • The weighing doens’t change the route completly, but only has influence on a choice of a very small number of combinations.

but also some rather impressive advantages:

  • The memory usage is kept in acceptable states, because the tree is only expanded in a senseful manner (if there are no nodes with an unusual high ammound of neighbours)
  • The algo’s weight behavour is very flexible, because nearly every meta information can be combined (to a comparable value) to be a weight.
  • There is no need to know about koordinates and streets
  • Because this algo not aims to choose the shortest way, it is not affected by the “traveling salesman problem”.

The new idea is the weighting system, I imagine. It consists of a “matrix of interests”, that produces some value, that ist used as weight. Possible Meta Information may be “Occurance of traffic jams” “Speed limits” “Beauty of the landscape” “Occurance of police controls” “Relaxedness of traveling”… and many other things that might be ignored my major commercial Companies.
This is because I thought, that if we already have the community giving the data, it might also be able to classify it and tell us ubout their experiences with it. First, to prevet others from running into the same trouble, second to share the beauty of a nice trip.

Connnected to this, i want to create a system named “Happy Sightsharing”, which should be a open portal for exchange of GPS Coordinates of beatiful scenes and/or points of major interest. Thits system might generate gpsdrive waypoints (or export the whole favorites as waypoint snippet) or even other waypoint formats. This is the most realistic option of them all, so it might be implemented first. I am not sure, if I will be able to impemennt all these nice things, but I hope, some nice people (perhaps YOU!?) might help me.

I aim to implement that algo as a web application to collect meta data, position data for nodes, ways and many other things. You can take this moment as the moment, a new “initiative” is formed, named: “Free shortest of the simplest” or short “Fresh ofS”. I want this to become a research project.

If you want to, feel free to yoin my projects in some way. I’d like to share my ideas with someone.

So far… with my strange ideas… let this all become a freaky spot for exchanging the beauty of traveling!

The Starseeker

On the Train

Tuesday, November 1st, 2005

I am now on the train to Duisburg and its about 6:15. We’ll soon arrive in Alpen, the first station after Xanten… and also has only one Platform.
The weekend was fun. Me and MaBU revived old times when we were playing GTA2 over network. Even if it was senseles, we both had a lof of fun. It reminded me of the times, long gone, when I played with the computer a lot. After that, we prepared my Studio-PC to make it run some awesome OpenSource Games. We happily stumbled upon glest, s.c.o.u.r.g.e and freedroidRPG. They mostly worked (for our readers with windows PCs: Some of the OpenSource games run on your slow on demand platform ;)) great and I really am considering becoming a gamer again O_O.
That was Alpen just now… so we’ll arrive in Millingen soon. After the first 4 or 5 ways on this train, I was able to predict all the stations. Not only by name, but also by time of arrival. I even can tell how many unbarriered train crossroads there are on the way.
I was wondering, if i was able to code an application, that can navigate me through the university (using a network of connected nodes with coordinates). I was especially wondering about the way, a tree parser could find the shortest way from ‘a’ to ‘b’. I will try to implement that in JAVA when the time has come… perhapy using the mobile engine to make it run on mobile phones.

So long, i’ll go on for a great day.