# Wednesday, April 09, 2008

Duff's Device

Da ich momentan eher mit C beschäftige, dort allerdings noch ein paar Fragen offen waren, hatte ich heute ein Code Review mit einem "alten Hasen". Dabei gab es eine Menge zu lernen. Als ich später mit meinem PM (der auch aus der C/C++-Welt stammt) das Review besprach, zeigt er mir einen netten kleinen Codeschnippsel: Duff's Device. Ich lasse das hier einmal ohne Erklärung stehen.
n = (anzahl + 3) / 4;
 
switch(anzahl % 4) {
    case 0:        do { ziel[stelle] = quelle[stelle]; stelle++;
    case 3:             ziel[stelle] = quelle[stelle]; stelle++;
    case 2:             ziel[stelle] = quelle[stelle]; stelle++;
    case 1:             ziel[stelle] = quelle[stelle]; stelle++;
                   } while(--n > 0);
}
Für meine C#-Augen war das ja gar nichts. Fallthrough im Switch-Statement. Brrr. Wenn das der Compiler sehen würde ;) Aber C ist eben etwas ganz anderes.

Wednesday, April 09, 2008 9:29:20 PM (W. Europe Daylight Time, UTC+02:00) #    Comments [0] | Trackback
# Tuesday, April 08, 2008

String.Format mit geschweifter Klammer

Mit Hilfe der String.Format-Methode können ja bekanntlich formatierte Einsetzungen in einen String vorgenommen werden. Im Ursprungsstring werden dazu Platzhalter in der Form {0}, {1}, etc eingefügt. Sind allerdings im Formatstring, als dem String, in den die neuen Teile eingesetzt werden, geschweifte Klammern enthalten, werden diese als Formatierungszeichen betrachtet. Aufgefallen ist mir dies bei der Formatierung der Zeichenkette:
#ifndef _BLABLUB_H_
#define _BLABLUB_H_

#  ifdef __cplusplus
  extern "C" {
#  endif /* __cplusplus */
BLABLUB sollte dabei durch den entsprechenden Namen der Headerdatei ersetzt werden. Allerdings hagelte es mit folgendem FormatString bei jedem Versuch, die formatierte Ausgabe zu erzeugen, eine FormatException.
public static string HeaderExklusionStart = "#ifndef {0}"
    + Environment.NewLine
    + "#define {0}"
    + Environment.NewLine
    + Environment.NewLine
    + "#  ifdef __cplusplus"
    + Environment.NewLine
    + "  extern \"C\" {"
    + Environment.NewLine 
    + "#  endif /* __cplusplus */";
Um den Fehler zu beheben, müssen einfach geschweifte Klammern, die ausgegeben werden sollen und somit nicht als Formatierungsanweisungen zu interpretieren sind, doppelt eingefügt werden:
+ "  extern \"C\" {{"

Auf den Fehler hingewiesen hat mich der Artikel Kombinierte Formatierung im MSDN. Prädikat: Wertvoll.
Tuesday, April 08, 2008 12:14:50 PM (W. Europe Daylight Time, UTC+02:00) #    Comments [0] | Trackback

Fehlerkorrektur: String auf ASCII-Reinheit prüfen

In meinem gestrigen Post String auf ASCII-Reinheit prüfen hat sich ein Fehler eingeschlichen. Die öffentliche Eigenschaft Encoding des StreamWriters ist ReadOnly. Um das Encoding des StreamWriters festzulegen, muss dieses im Constructur übergeben werden:
sourceWriter = new System.IO.StreamWriter( sourceFS, Encoding.ASCII );

Tuesday, April 08, 2008 10:00:49 AM (W. Europe Daylight Time, UTC+02:00) #    Comments [0] | Trackback
# Monday, April 07, 2008

String auf ASCII-Reinheit prüfen

Momentan liegt mein beruflicher Schwerpunkt eher auf der Programmiersprache C im Embedded Umfeld. Da dies jedoch nicht meine präferierte Sprache ist und außerdem die Arbeit (Webserverprogrammierung, CGI-Funktionen, etc) auf Grund der Vielzahl von ähnlichen CGI-Funktionen ein bisschen nach Automatisierung riecht, habe ich begonnen, einen Codegenerator zu schreiben.
Ein paar Worte zur Erklärung. Wir haben eine Anwendung mit zentraler Pseudodatenbank, die alle Programmteile als Quelle und Senke nutzen. Ca. 80% der Datenpunkte sollen per Web-Frontend editierbar sein. Um den Programmierer des Web-Frontends nicht mit den Interna des Microcontrollers zu belasten, stellen wir die Datenpunkte über CGI-Funktionen bereit. Somit muss für jeden Datenpunkt eine ähnlichlautende Zugriffsfunktion in C erstellt werden. Lediglich der Datentyp ändert sich. Die Pflege der Datenpunkte erfolgt in einer Excel-Datei, die auch externen Firmen zur Verfügung gestellt wird.
Da es sich bei dem generierten Code um C-Code handelt und die eingesetzte Entwicklungsumgebung keine Quelltexte in Unicode verarbeiten kann, muss ASCII-Code generiert werden. C# verarbeitet jedoch 2 Byte breite Chars und schreibt liebend gern Unicode. Dies wäre an sich kein Problem, da man einem StreamWriter ja über dessen öffentliche Eigenschaft Encoding die Codierung der Daten vorgeben kann. Jedoch sind, warum auch immer, in den Bezeichnern der Datenpunkte Umlaute vorhanden. Diese können jedoch nicht einfach so in ASCII konvertiert werden, da sie dort nicht definiert sind. So kam schnell der Gedanke nach einem eigenen Konverter oder Filter auf.
Aber wie?

Möglichkeit 1 - Regular Expression Match
System.Text.RegularExpressions.Regex regex = 
     new System.Text.RegularExpressions.Regex( "[^\x00-\x7F]" );
 if ( regex.IsMatch( testString ) )
 {
     //Nicht-ASCII-Zeichen gefunden
 }
Mit dieser Regular Expression werden alle Zeichen gefunden, deren Byte-Repräsentation nicht im Bereich 00 bis 7F liegt. Man könnte nun im If-Block ein paar Methoden zur Ersetzung von beispielsweise 'ä' einsetzen. Allerdings werden dann nur diese Zeichen ersetzt, alle anderen müssen anderweitig behandelt werden. Dadurch wird der Programmablauf inkonsistent.
Alternativ könnten diese Zeichen nicht weiter beachtet werden. Dies würde dann entsprechende Lücken in der Ausgabe hinterlassen.
Wird der If-Block jedoch nicht angesprungen, ist der String garantiert frei von Nicht-ASCII-Zeichen.

Möglichkeit 2 - Regular Expression Grouping
Ändert man den regulären Ausdruck von oben ein wenig ab, kann man die gefundenen Zeichen gruppieren. Dies ermöglicht es, eine Match-Collection zu verwenden, die weitergehende Möglichkeiten bietet. Die Syntax für des regulären Ausdrucks für die Gruppierung wäre:
System.Text.RegularExpressions.Regex regex = 
    new System.Text.RegularExpressions.Regex( "(^\x00-\x7F)" );
System.Text.RegularExpressions.MatchCollection matches =
    regex.Matches( testString );
foreach ( System.Text.RegularExpressions.Match match in matches )
{
    //Nicht-ASCII-Zeichen-Gruppe gefunden
}
Dabei stellt das Objekt Match eine ganze Reihe nützlicher Funktionen bereit, so zum Beispiel die Position des Matches im Ursprungs-String oder die Länge des Matches. Es werden nämlich mit dieser Möglichkeit auch Gruppen wie im Beispiel "Hallööö Welt" die Gruppe "ööö" als ein zusammenhängender Treffer erkannt.

Möglichkeit 3 - Die Klasse Encoding
Die Klasse Encoding stellt verschiedene Möglichkeiten bereit, um mit Zeichen und Zeichenketten zu hantieren. Bei dem oben dargestellten Problem war dies mein erster Anlaufpunkt. Jedoch bin ich nach einigen Monaten C-Programmierung hier einem falschen Pferd aufgesessen :). Man beachte nachfolgende Zeile C#-Code und komme bitte nicht auf die Idee, dies irgendwo zu verwenden:
Encoding.ASCII.GetString( (byte[])testString, 0, testString.Length );
Die Methode GetString der Klasse Encoding.ASCII erwartet als ersten Parameter ein Byte-Array. Was würde man also in C machen? Richtig. Wie oben geschrieben, castet man seine Zeichenkette, eigentlich ja nur ein Char-Array in ein Byte-Array. Die Datentypen sind ja jeweils 1 Byte lang. 1 Byte? Ein Char in C#? Und da steckt der Fehler. In C# ist ein Char 2 Byte lang. Stichwort Unicode. Glücklicherweise meckert dies bereits der Compiler an.
Wie dem auch sei. Der Versuch mündete schließlich in folgendem Qullcode:
string testString = "Halööö Welt. Hähähäh!!!";
byte[] byteArray = Encoding.ASCII.GetBytes( testString );
Console.WriteLine( Encoding.ASCII.GetString( byteArray, 0, byteArray.Length ) );
Dieser Codeschnippsel spuckt dann, wie erwartet, einen ASCII-String aus: Hall??? Welt. H?H?H?!!! Wer damit leben kann...

Fazit
Glücklicher Weise übermittelte mir plötzlich ein Kollege die frohe Botschaft, dass die Bezeichner in den nächsten Tagen auf englische Bezeichner umgestellt werden. Also Umlaute ade. Das ist mir in dieser Situation gar nicht unpassend, da mir keine triviale Lösung für das Problem der Konvertierung eines Unicode-Strings in einen ASCII-String bekannt ist. Schließlich müssen einige Dinge beachtet werden, zum Beispiel die CurrentCulture, da wahrscheinlich ein ö in Deutschland einfach durch oe ersetzt werden kann. Ob das im türkischen ebenso möglich ist, weiß ich nicht.

Dieser Beitrag soll zum einen Anregungen geben, wie die Lösung eines solchen Problems angegangen werden kann. Zum anderen ist es ein Aufruf: Falls jemand dieses Problem schon einmal lösen musste, wäre ich (wahrscheinlich nicht ausschließlich) sehr dankbar, seinen Weg kennenzulernen.

Monday, April 07, 2008 9:02:49 PM (W. Europe Daylight Time, UTC+02:00) #    Comments [0] | Trackback

DreamSpark - Auffrischung

Heute kam ein Eintrag über DreamSpark vom TechNet Team Blog Austria in meinen Newsreader geflattert. Ich habe bereits am 19.02. darüber gebloggt. Aber leider hat sich seitdem nichts daran geändert, dass mehr als 90% (geschätzt, 24 Unis eingetragen, davon sind mir ca. 15 vollkommen unbekannt) aller deutschen Studenten nicht an diesem Programm teilnehmen können. Microsoft scheint dort leider auch keine Eile zu haben, etwas daran zu ändern. Hoffentlich war das nicht wieder solch eine schöne "Wir geben Software für umsonst ab"-Ankündigung, die dann direkt im Anschluss an die Veröffentlichung vergessen wird.

Monday, April 07, 2008 12:36:10 PM (W. Europe Daylight Time, UTC+02:00) #    Comments [0] | Trackback
# Thursday, April 03, 2008

"Bloggen ohne Technorati zu nutzen? - Ja, wo kommen wir denn da hin?" ... In eine vorsichtigere Welt?

Dirk schreibt einen netten kleinen Eintrag in seinem Blog, der offensichtlich von der re:publica '08 inspiriert wurde. Dazu meine Antwort:

Ich war zwar nicht/bin nicht/werde nicht sein auf der re:publica, komme mir aber durch Dirks Eintrag so modern vor... :-)
Ich twittere auch nicht... Bin in keinem Social Network vertreten... und - fast schon unglaublich - ich bin ebenfalls nicht bei Technorati registriert ;-)

Und das schöne ist: Ich bin stolz drauf.

Arbeitskreis Vorratsdatenspeicherung

Thursday, April 03, 2008 2:36:40 PM (W. Europe Daylight Time, UTC+02:00) #    Comments [0] | Trackback
# Sunday, March 30, 2008

Sender Policy Framework added for dotnetphen.com

Today I designed the SPF-record for my domain and sent it to my provider. Hopefully it is added to the dns the next days.

SPF stands for "sender policy framework" and is, simply said, a dns text-entry that specifies all mail server that are sending mail from a domain. For my domain this is for example "v=spf1 a mx ~all". This SPF record can be explained as:
  • v=spf1
    This identifies the TXT record as an SPF string.
  • a
    dotnetphen.com's IP address is 88.80.208.233 (vcvps1043.vcdns.de). That server is allowed to send mail from dotnetphen.com.
  • mx
    This wizard found 2 names for the MX servers for dotnetphen.com: mail and vcvps1043.vcdns.de (A single machine may go by more than one hostname. All of them are shown.). The servers behind those names are allowed to send mail from dotnetphen.com.
  • ~all
    SPF queries that do not match any other mechanism will return "softfail". Messages that are not sent from an approved server should still be accepted but may be subjected to greater scrutiny.

My mail server sends data with the hostname mail.dotnetphen.com, but my provider added two mx records to the dns. So we have to get rid of the one record that isn't used; we create a second spf entry that points to the active host. After that it has to look like this (in bind syntax):
dotnetphen.com. IN TXT "v=spf1 a mx ~all"
mail.dotnetphen.com. IN TXT "v=spf1 a -all"

The first entry specifies my mx-servers to be "ok", the second on specifies the host with the name mail.dotnetphen.com to be the mx record used to send mail.

To support admins during the sender policy framework setup process the SPF Project Site has a SPF Setup Wizard that is a great help to get a fast start.
Sunday, March 30, 2008 5:11:17 PM (W. Europe Daylight Time, UTC+02:00) #    Comments [0] | Trackback
# Saturday, March 29, 2008

CCC veröffentlicht Schäubles Fingerabdruck

Der Chaos Computer Club hat in der aktuellen Datenschleuder, dem CCC-eigenen Magazin, einen Fingerabdruck von Wolfgang Schäuble veröffentlich. Dabei beließ es der CCC nicht nur bei der Print-Veröffentlichung, sondern legte direkt eine Attrappe bei, mit der Aufforderung, diese möglichst oft (z.B. bei der Einreise in die USA) zu benutzen. Laut heise ist der CCC über einen Sympathisanten an den Fingerabdruck gelangt, der ein Glas, aus dem Schäuble während einer Podiumsdiskussion getrunken hatte, an den CCC weiterleitete.

Doch mit dem Bundesinnenminister gibt sich der CCC nicht zufrieden. In der Datenschleuder ist auch eine Wunschliste enthalten, auf der unter anderem Frau Bundeskanzler Merkel verzeichnet ist. Auch eine Anleitung, wie man einen Fingerabdruck sichert und dem CCC zukommen lässt, liegt der aktuellen Ausgabe der Datenschleuder bei.

Eine rechtlich eindeutige Bewertung der Aktion ist offenbar nicht möglich. Der CCC, der sich vor der Aktion beraten lies, geht nicht davon aus, dass es eine Handhabe durch die Veröffentlichung des Fingerabdrucks gäbe. Jedoch vertreten andere Anwälte (siehe hierzu den Artikel bei heise) die Auffassung, dass mit der Vervielfältigung durchaus eine Ordnungswidrigkeit oder gar eine Straftat vorliegt, Stichwort Datenschutz.

Eine sehr interessante Frage wirft heise noch auf: Darf der Staat millionenfach solche biometrischen Daten der Bürger erheben und intransparent nutzen, der einzelne Bürger jedoch nicht? Ich persönlich finde das eine hervorragende Aktion, unserem Bundesparanoiaminister zu zeigen, dass er einige Punkte seiner ausufernden Überwachungshisterie einmal überdenken sollte. Nicht überall, wo Terror draufsteht, ist auch Gefahr drin.

Saturday, March 29, 2008 4:52:00 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Friday, March 28, 2008

DasBlog Mobile support

Today I was browsing around the internet a bit with my mobile phone and just wanted to check what was going on in my logs as I recognized that dasBlog has a great support for mobile browsers. So, quite a bit puzzled at first, I afterwards asked myself how I could miss that feature. So I checked it out and it seems to be in dasBlog since version 1.9. Really darn cool feature. Again one more point for this great bloging engine.

In consideration on what is going on on the dasBlog mailing list I hope that there will be a future for dasBlog or something similar to this (dasText or whatever is it called). I hope that I then can take some time to also do some work for the new project.

Friday, March 28, 2008 7:55:29 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Friday, March 21, 2008

News about TrueCrypt vulnerability

A little late, but I hope that still in time. Recently the TrueCrypt Devs reacted on the vulnerability report. From their point of view the author of the report hasn't analyzed the source code very well. He has stated the wrong routines and furthermore TC is just not able to encrypt the system partition on Windows 2000 computers. Nevertheless they acknowledged the problem with some storage drivers.
Caused by this problems the TrueCrypt-Team is currently thinking about filing a complaint about Microsoft to publish the hibernation API.

Friday, March 21, 2008 3:23:54 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Monday, March 17, 2008

Für ein Morgen in Freiheit

Meine erste Demo als Teil des Arbeitskreises Vorratsdatenspeicherung, und meine erste bewusst besuchte Demo.

Leider hinke ich mit meinem Bericht etwas hinterher, sodass mir ein wenig die Themen ausgegangen sind. Vieles wurde bereits auf den Mailinglisten des Arbeitskreises Vorratsdatenspeicherung diskutiert, die anderen beteiligten Organisationen werden wahrscheinlich ebenso einiges thematisiert haben, sodass ich dies hier nicht noch einmal alles aufgreifen möchte. Deshalb bleibt mir eigentlich nur noch die Bekanntgabe meiner FEMIF-Galerie. Dies sind ein paar Eindrücke aus der Mitte der Demo, wie sie meines Erachtens nach bisher noch nicht häufig veröffentlicht wurden.

Eine schöne Übersicht über bisherige Reaktionen im Netz gibt es übrigens beim Volkszertreter.

Monday, March 17, 2008 10:32:05 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Thursday, March 13, 2008

JavaScript und WISO Sparbuch 2008

Da immer wieder Leute Probleme mit dem Wiso Sparbuch 2008 und deaktiviertem JavaScript haben, nehme ich mich diesem Thema einmal kurz an. Eigentlich wäre das die Aufgabe von Buhl Data, aber dort wird lieber der Kunde so lange gegängelt, bis er seine persönlichen Daten rausrückt und eines dieser Abos gekauft hat.

Also, wer JavaScript deaktiviert hat und vom Programm auf eine neue Version hingewiesen wird, kann den Installationsdialog öffnen. Am unteren Rand (eventuell muss man ein, zwei, dreimal Weiter klicken) befindet sich ein sehr kleiner Link auf die Support-Seite von Buhl Data.




Nach dessen Betätigung öffnet sich, nein, nicht der Standardbrowser. Es wird immer der Internet Explorer geöffnet. Wie dem auch sei. Ich habe mich mittlerweile mit diesem Stück Software abgefunden und meine Lektion gelernt. Also weiter im Text. Auf der Homepage gibt es einen Link "WISO Sparbuch". Diesem folgen wir.




Anschließend müssen wir die Updateseite aufrufen:



Und nun sind wir endlich auf der Update-Seite. Jetzt muss man noch das passende Programm in der Liste mit gefühlten 250 Einträgen suchen, herunterladen und, Vorsicht, sollten es mehrere sein, in der richtigen Reihenfolge installieren. Das alles ganz ohne JavaScript, ohne Abo und ohne preisgabe der persönlichen Daten. Danke an Buhl für diesen einfachen Updatemechanismus und den hervorragenden Support für die Kunden, die nicht nach ihrer Pfeife tanzen wollen.
Thursday, March 13, 2008 10:20:54 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback

Possible TrueCrypt vulnerability

In TrueCrypt 5.1 a possible vulnerability was found. A russian blog entry describes that the keys can eventually be written on the hard disk when the system goes into hibernation and the system drive is encrypted. From there they can be extracted later on. Especially Windows 2000 with a RAID controller based on Intel's Matrix Storage chips shall be vulnerable.

Until now there is feedback from neither the TrueCrypt developers nor any other security expert to confirm or disprove the suspicion.

Thursday, March 13, 2008 10:04:46 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Wednesday, March 12, 2008

TrueCrypt 5.1 released

Today I was browsing the web and found, that TrueCrypt 5.1 was released on March, 10th. Furthermore I realized that I missed the 5.0a release, that came with several bug fixes. TrueCrypt 5.1 ships with some features that I missed in the last release (and that are not part of 5.0a):
  • Support for hibernation on computers where the system partition is encrypted. (Windows Vista/XP/2008/2003)
  • Increased speed of AES encryption/decryption (depending on the hardware platform, by 30-90%). (Windows)
  • BootLoader shrinked from 42KiB to 27KiB.
  • A backup of the Boot Loader (which is now small enough) is stored in the first drive cylinder. Therefore the BIOS automatically tries to boot with the backup Boot Loader when the primary Boot Loader fails.
And again TrueCrypt got even better with the new release. I will update my notebook this evening. If there will occure some unexpected problems, I'll write about them. After that, the next step is to finish the performance tests on my home machine. After that i will update this machine to 5.1, too, and will again do some performance tests. Hopefully I will be ready with this stuff this weekend. Until then, stay tuned.

Wednesday, March 12, 2008 12:13:56 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Tuesday, March 11, 2008

Back up running

So, after a recent downtime my blog is back up and running. Hopefully this time a quite longer period. So, from now on I'm back in the blogosphere.

Tuesday, March 11, 2008 11:11:04 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Tuesday, February 19, 2008

Microsoft announces DreamSpark

Today Microsoft announced the DreamSpark program. For students from United States, the United Kingdom, China, Germany, France, Finland, Spain, Sweden, Switzerland and Belgium there is now a program to get Microsoft products without charge. In the second wave more countries are served.

The current list of products is:
  • Visual Studio 2008 Professional
  • Visual Studio 2005 Professional
  • XNA Game Studio 2.0
  • 12-month free membership in the XNA Creators Club
  • Expression Studio (Expression Web, Expression Blend, Expression Design, Expression Media)
  • Windows Server Standard Edition (2005, 2008 from next semester on)
  • SQL Server 2005 Developer Edition
  • [Update] Virtual PC 2007 [/Update]
For everyone who looks puzzled like me; here Bill Gates is talking about free software, students and technologies.

The DreamSpark Program is hosted here and the initial blog entry is from Veni, Vidi, Velcro.

Finally, I was headed towards this great announcement by heise news.

Tuesday, February 19, 2008 11:02:23 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback

CRC-Fehler beim Verschlüsseln der Systempartition mit TrueCrypt

Mein Notebooks ist secure, meine zweite Festplatte ebenfalls. Jetzt fehlt noch meine Systemplatte. Nach deren Verschlüsselung wollte ich dann einen Artikel über die Performance von TrueCrypt schreiben. Habe extra einige Messungen mit den unverschlüsselten Laufwerken gemacht.

Allerdings kommt es ja bekanntlich immer anders, als man es erwartet. Nachdem mein Notebook ohne Probleme verschlüsselt wurde, begab ich mich an meine Workstation. Dort lagern die "wichtigen Daten", das Notebook war eher der Proof of Concept. Meine Zweitplatte lies sich dort auch problemlos verschlüsseln. Als dies abgeschlossen war, sollte als letztes die Windows Parition ihr freies Dasein aufgeben. Aber Pustekuchen. Nach dem Schlüsselerstellen, CD-Brennen und Testbooten sagt mir TC nach weniger als einem Prozent Fortschritt: Ätsch, ich hör auf wegen "Is' nich'". Oder anders: CRC-Dateifehler. Leider war's das auch schon an Informationen.

Nach kurzer Recherche im Internet bin ich auf einige Informationen gestoßen. Folgende Dinge können das Problem beheben, müssen aber nicht:

  • chkdsk /f /r: CheckDisk mit voller Suche und Reparatur der gefunden Probleme. Hatte ich bereits ausgeführt, hat jedoch nicht geholfen.
  • Je nach Festplattenhersteller: Maintenance-Tool der Festplatte für Deep-Scan.
  • HDTune? Selbst noch nie benutzt.
Hier noch einige Links:
Probleme mit TrueCrypt
TrueCrypt 5.0 ist da
TrueCrypt 5: CRC-Fehler

Einige Hintergrundinformationen zum Fehler. Der CRC-Fehler wird generiert, wenn TC einen Sektor findet, der defekt ist (dessen errechnete Prüfsumme nicht mit der erwarteten Prüfsumme übereinstimmt). Soweit meine Informationen reichen, spielt es keine Rolle, ob dieser Sektor intern (innerhalb der Festplatte) als defekt markiert ist. Die Festplatte kann ja defekte Sektoren als solche markieren und durch Ersatzsektoren austauschen. So lange, bis keine Ersatzsektoren mehr vorhanden sind. Ab dann schwindet die Kapazität. Aber zurück zu TC. TC weigert sich, auf einer Festplatte zu arbeiten, die defekt ist. Und das aus gutem Grund. Ein Sektor, der seine Daten nicht "halten" kann, gefärdet die Lesbarkeit des gesamten Containers (diese Information kann ich nicht genau belegen, dafür habe ich mir den Verschlüsselungsalgorithmus noch nicht genau genug angeschaut), zumindest aber seines Blocks. Um dies und den damit einhergehenden Datenverlust zu vermeiden, bricht TC den Vorgang ab.

Wer mit den oben beschriebenen Maßnahmen keine Linderung erzielt, sollte über eine neue Platte nachdenken. Wer vertraut schon gerne seine Daten einem System an, was nachweislich instabil ist. Genau diesen Weg beschreite ich auch. Allerdings denke ich direkt darüber nach, meinen Rechner, der immerhin schon 4 Jahre auf dem Buckel hat, auszutauschen. Wer jedoch von der Verschlüsselung absieht, ohne sich finanziell belasten zu wollen, kann den "anverschlüsselten" Teil im Boot-Menü des TC.Boorloaders wieder entschlüsseln. Dauert ein paar Minuten und anschließend ist alles wieder frei und unsicher.

Und für die Verschwürungstheoretiker: TC steckt mit der CD-Industrie unter einer Decke. Bei jedem neuen Versuch, die Platte zu verschlüsseln, muss eine Rescue Disc gebrannt werden ;)

Tuesday, February 19, 2008 11:01:06 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Thursday, February 07, 2008

Datenschutz auf der anderen Seite des Atlantiks

Ich bin mir nicht sicher, warum, aber Thomas inspiriert mich in den letzten Tagen ;) Heute hat er einen Eintrag über die US-Amerikanischen Einreiseformalitäten geschrieben, welcher sich auf einen Newseintrag auf Spiegel Online bezieht. Ein Artikel zum gleichen Thema kam heute über den Heise Newsfeed hereingeflattert. Und entsprechend dazu gibt es sogar Augenzeugenberichte. Damit sollte Thomas' post scriptum auch beantwortet sein.
Man kann also sehen, dass auch in anderen Ländern die Übergriffe in die Privatsphäre von Personen zunehmen. Wie man sich dagegen wert, kann man ja im letzten Eintrag sehen.

Thursday, February 07, 2008 10:57:54 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Wednesday, February 06, 2008

TrueCrypt 5 finally got what I ever looked for

Yes, finally TrueCrypt offers you encryption of your whole hard drives. That feature I was looking for for ages. I was noticed about the new TrueCrypt-Version by Thomas from Glorf-IT, later on I read the article on heise.

I immediately downloaded the new version and started installing it. On my laptop. Not on my PC. On my laptop is only data that is stored on my pc's drives so there is no actual loss if something is messed up up afterwards.

The Installation process starts as usual, installing the new TrueCrypt on your computer. Then after starting I recognized this nice menu entry Encrypt System Partition/Drive... Well, that's is the killer feature.

Now, guess, what the first action was I did with the new version. I just clicked on it. In the following process TrueCrypt asks you for several things; do you want to encrypt only the windows system partition or the whole disk drive? Is it a single boot or multi boot-system? Next question is: What encryption algorithm do you want? If you cannot decide, you can benchmark your system and select the fastest one. After choosing one you have to specify the password. And this password should a a) safe (letters, numbers, special characters, randomly mixed) and b) unique (don't use a password you used anywhere else).
After that you find yourself inside the matrix. TrueCrypt pops up a dialog that tracks your mouse movement above this dialogue. The generated data are used for encryption. So, the longer and the more randomly you move, the better the encryption will be.

After this, the actual keys are calculated. The next step convinced me that everything I'm doing is well planned and even for common users no big deal at all. TrueCrypt wants me to save a TrueCrypt Rescue Disc.
What is a True Crypt Rescue Disc? Quite simple. It is a disk with three parts that will help regain your data if anything goes wrong during the encryption process or later on using your encrypted drive. With the TRD four things can be done. These are:
  • Information is stored to restore your TrueCrypt boot loader, your master key, or other critical data.
  • The TRD itself is bootable and loads afterwards the system that is stored inside your encrypted volume.
  • If your system gets damaged, the TRD can decrypt the volume for external access.
  • The TRD contains a backup of the first drive cylinder. That cylinder usually contains the system boot loader., so the original statecan be restored.
After saving this ISO-file, you have to burn it. TrueCrypt stops working until it has verified the data on the CD. That means, you are forced to burn the CD. Well, from my point of view this is a very smart way to prevent data loss. And TrueCrypt also provides you two tools for burning it. What a service. Kudos to the TrueCrypt-Team. This is just a amazing piece of software with many detailed thoughts went into.

So, next step. When the CD is verified, you can choose if and how often your hard drive shall be wiped before the actual encrypted data is stored. Because of the time consumption and the data I have on my laptop, I decided not to wipe my drive. While nearing completion TrueCrypt now does a testboot with the boot loader installed and where you have to enter your password. If this test boot is ok, you can press the red button and start encrypting your drive.

In résumé there is just to say that TrueCrypt 5 is a leap forward in free cryptography and personal securirty. And this whole thing is presented in an easy to use way. Everyone out there who never thought about personally securing his data, just give it a try. And wish me luck. 49 minutes remianing until my drive is finished :)

Wednesday, February 06, 2008 10:54:37 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Tuesday, January 22, 2008

WISO Sparbuch 2008

So, und dann kommt auch direkt der erste deutsche Eintrag. Zwecks Steuererklärung habe ich mir das oftmals in den Medien gelobte WISO Sparbuch 2008 gekauft. Heute ist es angekommen und ich habe mich direkt an die Installation begeben. Schon während der Installation wollte sich das Programm zwecks Aktivierung mit dem Server verbinden. Allerdings habe ich kein JavaScript aktiviert. JavaScript? In einem Installationsprogramm? Ganz besonders gefiel mir der Hinweis, dass die Installation ohne Aktivierung nicht abgeschlossen werden kann. Und tatsächlich konnte ich das Installationsfenster nicht erreichen. Also habe ich das Fenster einfach per rotem X geschlossen, denn einen Schließen-Button gab es nicht, und siehe da, da war das Installationsfenster. Wenn da nicht jemand einen modalen Dialog mit einem Aktivierungszwang verwechselt hat? Allerdings weiß ich noch nicht, in welcher Anwendung JavaScript deaktiviert ist.

Nach der Installation starte ich das Programm, und der erste Dialog fragt mich nach meinen persönlichen Daten. Da es sich ja um die Steuererklärung handelt, gebe ich alles bereitwillig ein, bemerke aber vor dem Betätigen von OK, dass es da einen Hinweis gibt. Dieser besagt, dass nur Name und Vorname Pflichtfelder sind. Das nächste Stirnrunzeln. Pflichtfelder? Ich dachte, Adresse wäre in einer Steuererklärung auch ein Pflichtfeld. Also, einfach mal weiterlesen: "Diese Daten können in das Steuerformular übernommen werden". Können? Warum gebe ich sie denn hier ein, wenn ich es nicht muss. Und warum soll ich sie überhaupt eingeben? Also alle Felder bis auf Name und Vorname löschen und OK klicken. Und siehe da, das Programm verbindet sich mit dem Internet, um Updates herunterzuladen. Braucht man dazu die Adresse? Ich dachte, das läuft heutzutage per IP-Adresse und nicht per Postadresse. Aber das wundersame hat auch bald ein Ende. Denn der bekannte JavaScript-Dialog erscheint wieder.

Diesen Dialog habe ich mir dann auch einmal genauer angeschaut. Dort steht "Weitere Informationen zu JavaScript und wie Sie JavaScript aktivieren finden Sie hier.". Dieser Satz steht dort genau so, wie er auch in diesem Blogeintrag steht. Ohne Link. Wo also ist das "hier"? Um es nicht zu philosophisch werden zu lassen, folge ich einfach dem winzigen Verweis in der Statusleiste des Dialogs auf die Supportseiten.

Und schon passiert das nächste Unding. Es öffnet sich ein Internet Explorer, obwohl Firefox als Standardbrowser eingetragen ist. Allerdings dämmert mir nun langsam, in welchen Programm JavaScript verboten ist. Spaßeshalber gebe ich dann jedoch "JavaScript" im Supportbereich für WISO SP2008 ein und erhalte "Zu Ihrer Suchanfrage JavaScript wurden keine FAQs gefunden.". Nun gut, mit einer Antwort anstatt einer oft gestellten Frage hätte ich mich auch zufrieden gegeben, aber selbst das scheint Buhl Data ja schon zuviel zu sein.

Fazit: Ohne das Programm bisher betrieben zu haben, muss ich den vielen Bekannten recht geben, die Buhl Data als eines der schlechtesten Softwarehäuse bezeichnen. Und das auch von Personen, die bereits dort gearbeitet, dann allerdings aus Angst vor Imageverlust oder einfach wegen des schlechten Betriebsklimas den Arbeitgeber gewechselt haben. Für mich persönlich ist es das erste und letzte Programm, welches ich von dieser Firma erwerbe.

Außerdem wird so wieder einmal mehr deutlich, dass das Installationsprogramm das erste ist, was ein Benutzer von einer Software sieht. Wenn die Installation schon schief geht, weil sie schlecht programmiert, unlogisch aufgebaut und außerdem noch persönliche Daten nach Hause telefonieren möchte, dann ist es mit der Beliebtheit der ganzen Software gar nicht gut bestellt. Vielleicht nimmt sich das ja einmal jemand bei Buhl Data zu Herzen.

Tuesday, January 22, 2008 10:52:19 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback

Blog about .NET Compact Framework

Today my attention was invited by Robert to Christan Helle's blog. He is deep into the .NET Compact framework and seems to have some very interesting blog posts over there I hope to get through this weekend. I immediately added his blog to my favourite newsreader and also to the blogroll. So, if you are interested in mobile or embedded development, have a look at his site.

Tuesday, January 22, 2008 10:47:22 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Thursday, December 20, 2007

IE8 starts smiling

Yesterday the InternetExplorer-Team announced on the IEBlog, that Internet Explorer 8 passed the Acid2 test, one year after Firefox and even longer after Opera, Safari and Konquerer.

It has not so much to do with .NET, but it shows the direction Microsoft is going. Not only to provide their own standards (which, by the way, are not the worst) but also try to fulfill standards created by other organsations. Again one more thing that makes MS one of the better IT-companies.

Thursday, December 20, 2007 9:06:47 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback

Liquid XML Studio

I recently found a very nice XML Schema Editor. I was looking for something more comfortable than then one in VS. I didn't want to start the studio and create a new project just to make a XSD. A very small article in (I think it was) the dotnetpro pointed me on the free Liquid XML Studio. After a short period of time I am very satisifed with this editor. It has really some nice functionality i won't miss anymore.

Thursday, December 20, 2007 12:28:44 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Monday, December 17, 2007

.Net Micro Framework

Wow, how great Amazon is. Yesterday I ordered a book and today it is delivered. That is service at it's best. So, my new book is "Embedded programming with the Microsoft .Net Micro Framework" by Donald Thompson  (Director of Engineering for Microsoft Research) and Rob S. Miles (Microsoft MVP for Device Application Development). As far as Goole is showing a nice picture of a prisoner (at least the german Google) when I search for Donald, I think he is fairly unkown for now. This book also seems to be the first for Rob, but he has already a new up in the pipe.
After the book arrived, the next step is to get the Microsoft .Net Micro Framework SDK to get started. And after that I will start looking for some hardware. But I fear that it will be very hard for me as a private person to buy an evaluation board or something like that. If anyone knows how to achive some hardware für the Micro Framework, I would appreciate someone leaving me a hint.

Monday, December 17, 2007 8:09:40 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback
# Thursday, December 13, 2007

.NET Developer Essentials Installer

Norbert Eder has released a small programm called .NET Developer Exxentials Installer. This nice little program has a list of tools stored any .NET-Developer cannot be without. It comes in a small 250k zip file, runs, as expected, without installation and targets .NET Framework 3.0.
After starting, a nice UI pops up that is fully self explaining. You can install tools from the standard list, can update the list, delete items, add your own favourites, store the list and load lists. So its a nice tool for e.g. making a set of tools  every .NET-Dev at your company should own. If anything changes, simply update the list and notify the devs by mail. All done. No link messing, always only on version in use...
From my point of view a very outstanding piece of code. Actually I'm wondering why this hasn't already been implemented.


Thursday, December 13, 2007 8:44:23 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback