Tag Archives: Software

JavaMail and TLS: Turn on the security switch!

While talking to Ge0rg about latest issues in Java TLS we stumbled upon the question whether the JavaMail API would have similar problems.

Naturally one would expect that Java’s SSL implementation is secure. However, this is not the case: Special care needs to be taken regarding Man-In-The-Middle attacks: While a certificate may turn out to be valid, you cannot be sure that it has the right origin!

The problem is known for a while and library maintainers are taking steps to avoid it. However, for compatibility reasons those features may need to be turned on.

For JavaMail version 1.5.2 the SSLNOTES.TXT says specifically:

— Server Identity

Check RFC 2595 specifies addition checks that must be performed on the server’s certificate to ensure that the server you connected to is the server you intended to connect to. This reduces the risk of “man in the middle” attacks. For compatibility with earlier releases of JavaMail, these additional checks are disabled by default. We strongly recommend that you enable these checks when using SSL. To enable these checks, set the “mail..ssl.checkserveridentity” property to “true”.

Here is the thing that most examples forget: You need to switch that feature on!

final Authenticator auth = ... // somewhere in your application
final Properties p = new Properties();

// add your JavaMail configuration here

// this is implied by the protocol "imaps"
p.put("mail.imap.starttls.enable", "true");

// not only check the certificate, but also make sure that we are
// connected to the right server.
p.put("mail.imap.ssl.checkserveridentity", "true");

try {
	Session session = Session.getDefaultInstance(p, auth);
	Store store = session.getStore();
	store.connect();

	// do something with the store
} catch (MessagingException e) {
	// do something meaningful(!) with the exception
}

// close the store when you are done

To use SSL at all, you need to turn it on, either by specifying “imaps” in the property mail.store.protocol or by setting mail.imap.starttls.enable to “true”. Replace imap respectively for other protocol suites (e.g. smtp).

Update 2014-08-05: Inserted the Link to Georg’s blog post about latest issues in Java TLS.

An Instant Messenger Emoticon Theme Generator

For the regular readers of this blog this post is a little different, because it’s in English instead of German as usual. The reason is, this is an announcement of a tool I put together over the last months, which I consider interesting not only for German speaking users. So I hereby announce a smiley theme generator software for different instant messenger programs, but let’s start at the beginning.

In 2007 I took the smiley graphic files from a local internet community1 to build my own emoticon theme for the Jabber client Psi. This was basically putting together a description file and installing it and I described and announced it in this blog.2 Last year I started using Perl Template Toolkit 2 for building my personal homepage and thought this would be a great tool to build this smiley stuff in a more automatic way and for more than one instant messenger. Although I barely remember, it seems I also wrote about it in this blog.3

This year now I made some new friends with different messengers and started reworking the whole thing, especially to add some more messengers and to be able to use it for more graphic themes and here it is: a possibility to put your smiley graphics in a folder, write one description file for the mapping from smiley codes in the text (like :-) or :’-( and so on) to your graphic files, run the build script and have ready to install smiley theme packages for a bunch of different instant messenger programs. Let me quote the README file:

The purpose of this software is to create installable smiley iconset files for various instant messenger programs with a templating mechanism (using Perl Template Toolkit). This means smiley theme authors only have to provide the graphics and write one simple template file with the definitions which texts are related to which graphics, e.g. ‘:-)’ to the smiling graphics file. Add a little metadata, call the build script and you’re done. With help of the templates the definition file formats of the different messengers are created and a packing script does the rest of the magic. You don’t have to worry about a dozen different formats for definition files and packing conventions.

To use this software you need Subversion to check out the sources, an operating system running Perl and the Perl Template Toolkit 2, you must be able to execute shell scripts like from Bash or Zsh and have tar, gzip and zip ready. So every Unix or Linux like OS should work, on Microsoft Windows you could try your luck with cygwin, however I didn’t test this because I run Debian/GNU Linux. ;-)

Check out the tool with your preferred subversion client from https://www.antiblau.de/svn/penguineering_tools/trunk/im_emoticons/ and see the file README inside which contains all the necessary descriptions how to use the software. It is licensed under a BSD style license so you are free to use and change it to your needs. We also have a wiki page for it in our bugtracking system. You can also view the sourcecode and create tickets there.

For demonstrating the power of the templating approach I took the very nice (and free) smileys from simplesmileys.org and let the software build smiley themes for all the already supported instant messengers. You can download pre-build theme files for Adium, Kopete, Miranda, Pidgin and Psi from tools.penguineering.com.

Of course these five messengers are not all. If you have a template file for another one, don’t hesitate to contact me. Also if you have free smiley graphics and build a description file we could integrate in the subversion repository, I would be delighted if you just send it in.

In the hope this is useful for anybody else, have fun with it! :-)

  1. WebUni []
  2. WebUni Iconset für Psi []
  3. Mit Kanonen auf Smileys []

HowTo: Syntaxhighlighting für Graphviz in Notepad++

Für die 8 Stunden am Tag, wo ich gezwungen bin, Windows zu benutzen, ist Notepad++ der Editor meiner Wahl. Eingebaut ist Syntaxhighlighting für eine ganze Reihe von Programmiersprachen, zum Teil auch recht exotische Sachen, aber natürlich nicht alles, was irgendwie möglich ist. Ein derartiger Fall ist Graphviz, die bekannte Software zur Visualisierung von Graphen. Ich benutze das hier um Zustandsmaschinen zu visualisieren. Die Dateien schreibe ich manuell, was zwar bisschen Arbeit macht, aber Änderungen sind doch deutlich schneller einzupflegen als wenn ich das beispielsweise in Inkscape zeichnen würde.

Vor ein paar Wochen hatte ich mal unmotiviert im Netz recherchiert, wie es mit Syntaxhighlighting für Graphviz in Notepad++ aussieht, kurz und gut: schlecht. Allerdings hat der Editor eine interessante Funktion, mit der man sich schnell selbst ein rudimentäres Syntaxhighlighting zusammenklicken kann. Einfach im Menü auf Ansicht und dann Benutzerdefinierte Sprache …1 klicken. Da öffnet sich ein Fenster, wo man dann erstmal auf »Neue erstellen« klickt. Für die Einstellungen, die ich jetzt für Graphviz gemacht habe, hab ich mal ein paar Screenshots angelegt:

Auf dem vierten Screenshot sieht man bereits das Endergebnis. So ganz perfekt ist es nicht. Folding funktioniert nicht und die Marker für Kommentarblöcke müssen zwingend von Leerzeichen umschlossen sein, damit der Block erkannt wird. Ansonsten bin ich ganz zufrieden, besser als völlig ohne ist es allemal.

Wer sich das nicht selbst zusammenklicken will, kann auch die Datei userDefineLang.xml von hier laden. In dieser speichert Notepad++ diese Einstellungen nämlich und zwar unter Windows XP im Pfad C:\Dokumente und Einstellungen\adahl\Anwendungsdaten\Notepad++2

Achtung: Wenn Ihr selbst schon eigene Einstellungen für andere Sprachen definiert habt, nicht einfach überschreiben, damit die alten Sachen nicht verloren geben! Aber die Datei ist XML, da sollte man sich leicht den passenden Teil rausziehen können.

  1. bzw. View und dann User Define Dialog… []
  2. Pfad natürlich an lokale Gegebenheiten anpassen! []

Opera stellt fest

Habe gerade Opera Update auf 10.10 eingespielt und bekomme gleich als erstes folgende Meldung:

Opera hat festgestellt, dass KDE läuft.

Einige von Operas Tastaturkürzel (wie Strg+F4) könnten nicht funktionieren, da KDE diese reserviert hat.

Sie können die KDE Tastenkürzel im KDE Kontrollzentrum ändern.

WTF? Ich werde doch nicht mein ganzes System umstellen, nur weil ein einziger proprietärer Browser da gern seine eigenen Tastenkürzel hätte. Zumal ich bei Opera sowieso immer das Problem habe, dass ich mit Tastenkürzeln, die ich aus anderen Programmen kenne, dort ins Leere laufe oder völlig unerwartete Sachen auslöse. Wieso schlägt Opera nicht vor, wie man seine eigenen Tastaturkürzel ändert? Frechheit! Naja, bleibt es halt weiterhin nur der billige Pornobrowser

IT-Projekte 2009

Das Jahr ist zwar schon etwas fortgeschritten, trotzdem habe ich mir vorgenommen, bis zum Ende des Jahres in meiner Freizeit ein paar IT-Projekte voranzubringen. Aus der doch recht großen Auswahl der Projekte, die mich interessieren, habe ich die folgenden herausgepickt:

  1. IMPULS: Dieses Projekt hat inzwischen doch schon ein paar Jahre hinter sich und es gab diverse Situationen, in denen ich es gebraucht hätte. Bis Ende des Jahres sollten hier ein lauffähiger Daemon (aber auf Java-Basis) und ein paar Clients sowie mindestens ein Reader stehen.
  2. Antiblau: Den Server haben wir seit Ende 2005, aber noch immer sind ein paar Funktionen nicht verfügbar und auch die vorhandene Administrations-Infrastruktur kann mal modernisiert werden.
  3. Debian: Entwickler werde ich wohl in diesem Jahr nicht, aber ein paar Pakete aus eigenen Sachen möchte ich bauen und wenigstens soweit in die Community reinschauen, dass ich sicher entscheiden kann, ob ich überhaupt Entwickler werden will.
  4. QCaff: Eine grafische (Qt-basierte) Variante von CAFF, die sowohl unter Windows als auch unter Linux laufen soll und das Management von GPG-Keys für Jedermann ermöglichen soll. Insbesondere bei der Nachbereitung von Keysigning-Parties besteht hier offenbar Softwarebedarf. Wenn alles klappt, ist das aber trotzdem ein recht überschaubares Tool. Sofern vorhanden, werde ich bestehende Lösungen weiterverwenden.

Weiterhin warten auch bei UniMentor interessante Programmieraufgaben und der FaRaFIN kann ebenfalls mit einem interessanten Projekt aufwarten. Anfang 2010 werden wir sehen, was davon ich umsetzen konnte.

Scrollbalken im Midnight Commander

Ein interessantes, wenn auch eher unwichtiges Problem kam kürzlich in einem Chat des fli4l/eisfair-Teams auf. Der Entwicklungsserver wurde umgebaut und das System neu aufgesetzt. Mit dem Upgrade auf Debian Lenny hielt auch UTF-8 Einzug und sorgte natürlich für allgemeine Verwirrung. Viele Nutzer arbeiten mit PuTTY auf der Maschine. Dort muss man nicht nur das Locale des Servers richtig einstellen, sondern auch die Line Drawing Character auf Unicode stellen und eine passende Schrift auswählen. Dass dies nicht so einfach ist, habe ich letztens erst ausführlich beschrieben.

Im konkreten Fall hatte einer der Entwickler PuTTY korrekt eingerichtet und als Schrift die Courier New ausgewählt. Das Problem: der Midnight Commander stellt alles korrekt dar, bis auf die Scrollbalken, wo nur hässliche Kästchen erscheinen. Das Problem ließ sich relativ leicht verifizieren. Auf einem Debian Lenny, sieht das mit Courier New tatsächlich so aus, bei einer Verbindung zu einem Debian Etch sieht man mit Courier New hingegen korrekt dargestellte Pfeile. Ein Umschalten auf die von mir bevorzugte DejaVu Sans Mono bewirkte in beiden Sessions eine korrekte Darstellung. Wenn man genau hinsah, zeigten sich aber subtile Unterschiede.

Ich hab dann die entsprechenden Zeichen kopiert und im Hex-Editor unter die Lupe genommen. Auf dem Rechner mit Etch gab ein `mc --version` (gekürzt) folgendes:

GNU Midnight Commander 4.6.1

Mit dem Wissen aus meinem früheren Beitrag »Wie funktioniert UTF-8?« sah meine Analyse der Zeichen dann so aus:

▲ – E296B2h – 11100010 10010110 10110010 – 00010010110110010b – 9650 – U+25B2
● – E2978Fh – 11100010 10010111 10001111 – 00010010111001111b – 9679 – U+25CF
▒ – E29692h – 11100010 10010110 10010010 – 00010010110010010b – 9618 – U+2592
▒ – E29692h – 11100010 10010110 10010010 – 00010010110010010b – 9618 – U+2592
▼ – E296BCh – 11100010 10010110 10111100 – 00010010110111100b – 9660 – U+25BC

In den letzten beiden Spalten stehen die Unicode-Nummern der Zeichen in dezimal und hexadezimal. Auf decodeunicode.org findet man raus, dass diese alle zur Gruppe »Geometric Shapes« gehören und korrekt encodiert sind. Diese Zeichen werden mit Courier New wie bereits erwähnt korrekt dargestellt. Bei Lenny gibt es eine neuere Version des Midnight Commander:

GNU Midnight Commander 4.6.2-pre1

Bei dieser Version sehen die Scrollbalken dann so aus:

▴ – E296B4h – 11100010 10010110 10110100 – 00010010110110100b – 9652 – U+25B4
◈ – E29788h – 11100010 10010111 10001000 – 00010010111001000b – 9672 – U+25C8
▒ – E29692h – 11100010 10010110 10010010 – 00010010110010010b – 9618 – U+2592
▒ – E29692h – 11100010 10010110 10010010 – 00010010110010010b – 9618 – U+2592
▾ – E296BEh – 11100010 10010110 10111110 – 00010010110111110b – 9662 – U+25BE

Auch diese Zeichen gehören zur Unicode-Untergruppe »Geometric Shapes« und sind absolut korrekt encodiert, aber sie sind leider nicht in Courier New enthalten. Davon kann man sich unter Windows XP überzeugen, indem man im Startmenü unter Zubehör und Systemprogramme die Zeichentabelle öffnet. Als Schriftart dann Courier New wählen, erweiterte Ansicht auswählen, als Zeichensatz Unicode, Gruppieren nach Unicode-Unterbereich und dort dann Block-/geometr. Elemente. Die dicken Pfeile vom mc 4.6.1 sind drin, die kleineren nicht.

Diese unscheinbare Änderung lässt sich tatsächlich auf den Midnight Commander zurückführen. Wenn man sich mal den UTF-8 Patch im Downloadbereich auf midnight-commander.org ansieht, dann findet man an entsprechender Stelle im Quellcode genau diese Zeichen.

Simple Lösung: eine andere Schrift als Courier New auswählen. Das gilt übrigens auch für den Browser, falls in obigem Beispiel anstelle der Pfeile auch nur komische Zeichen zu sehen sind. ;-)

GRUB Error 2

Manchmal findet man seltsame Sachen heraus. Wusste hier jemand, dass nicht alle Versionen von GRUB alle Versionen von ext3 lesen können? Ok, klingt erstmal logisch, dass das für ziemlich alte Versionen von GRUB und für ziemlich neue Versionen von ext3 gilt. Gut da fragt man sich erstmal, wie es denn überhaupt Versionen bei ext3 geben kann, aber egal, vielleicht fang ich die Geschichte doch besser vorn an.

Letze Woche hat sich eine meiner alten Festplatten verabschiedet, wo zu Testzwecken ein Debian Sid installiert war. Gestern bekam ich von Tux Ersatz und heut dachte ich mir, schiebst Du »mal eben kurz« wieder das System drauf. Die Installation verlief auch zügig und glatt. Den Bootloader ließ ich in den MBR von /dev/hdc schreiben und laden wollte ich das ganze wie üblich, nämlich über folgenden Eintrag im GRUB von /dev/hda (das zu nem Ubuntu gehört):

title       hdc: Debian Sid
configfile  (hd2,0)/boot/grub/menu.lst

Das funktioniert üblicherweise wunderbar. Man gelangt zunächst in das Bootmenü vom GRUB auf /dev/hda und von dort über obigen Eintrag in das Menü von /dev/hdc. So können die Systeme auf jeder der Platten ihre eigenen Bootloader eigenständig verwalten und kommen sich auch bei Kernelupdates nicht ins Gehege. Heute führte das allerdings zum Error 2. Das Handbuch von GRUB sagt dazu lapidar:

2 : Bad file or directory type
This error is returned if a file requested is not a regular file, but something like a symbolic link, directory, or FIFO.

Die Recherche nach der Lösung zu solchen Fehlern gestaltet sich natürlich schwierig. Ich hatte ein wenig Glück und fand diesen Thread im Ubuntu-Forum. Dort näherte man sich Stück für Stück einem ähnlichen Problem. Ich konnte ebenfalls mit der GRUB-Shell verifizieren, dass das GRUB aus dem MBR meiner /dev/hda nicht in der Lage war das Filesystem auf /dev/hdc1 zu lesen, obwohl letzteres ein sauberes (fsck von GRML drüberlaufenlassen) ext3 war. Mit anderen ext3 kam das bis dahin ja auch klar. Recht weit unten in dem Thread schreibt dann jemand:

Did you upgrade to Hardy from an earlier version of Ubuntu? Then you might of have older version of grub which cannot read ext3 partition with 256 inodes.

Da hab ich nicht schlecht geschaut. Das heißt einerseits wie eingangs angedeutet, dass es vorher (dieses mysteriöse »früher«) ext3 nur mit weniger inodes gab und ältere Versionen von GRUB mit so vielen nicht umgehen können. Das GRUB ist tatsächlich ein wenig älter, das Ubuntu ist ungefähr 2005 auf die Kiste gekommen, also wahrscheinlich ursprünglich als Dapper Drake oder vielleicht sogar noch Breezy Badger. Na und der aktuelle Installer von Debian Lenny scheint derart neue ext3-Formatierungen zu schreiben. Einfaches Neuschreiben des Bootloaders mit dem aktuellen GRUB von Intrepid Ibex hat dann jedenfalls im Handumdrehen das Problem behoben. Ich sag ja, seltsame Sachen gibt’s.

Keysigning auf dem ersten Magdeburger Open-Source-Tag

Das sind ja gleich zwei Themen auf einmal… nun ich fang mit dem kürzeren an. Auf dem Magdeburger Open-Source-Tag 2008 wird es ein Keysigning-Event geben, leider ist die Ankündigung sehr versteckt ganz unten im Programm. Das ganze wird von Jens Kubieziel organisiert und der gute Mann bittet um Anmeldung für den Spaß bis zum 8.10. – also bis Mittwoch. Einfach eine (signierte ;-) ) Mail mit dem eigenen Fingerprint an Jens schicken, schon ist man angemeldet. Alles weitere auf der zuvor genannten Seite.

Der Open-Source-Tag selbst findet zum ersten Mal statt und wird von Stefan Schumacher organisiert. Unterschrieben ist das mit »Entwicklung trifft Anwendung«, die Themenschwerpunkte gehen in Richtung Erziehung, Bildung, Publishing. Natürlich sind auch ein paar thematisch anders gelagerte Vorträge im Programm. Jenes liest sich übrigens sehr interessant, man kann sich kaum zwischen den vier Tracks entscheiden.

Ich persönlich werde mir wohl die Vorträge anhören, die in Richtung LaTeX gehen und ich werde natürlich selbst auch auf der Keysigningparty zugegen sein. Dort sind übrigens auch ein paar Leute anwesend, die Punkte für CAcert vergeben können und wollen. ;-)

Samsung R700 Linux Installation: Erfahrungen (2)

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

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

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

Hier aber nun die Konfigurationen im Detail:

Continue reading

Songbird: Music Player für Windows

Meine Suche nach einem Amarok-Äquivalent für Windows hat ein Ende gefunden!

Ich bin heute zufällig über einen Mozilla-basierten Music-Player für Windows gestolpert: Songbird.

Die Playlist sieht ähnlich aus wie beim Amarok (oder iTunes, das sich auf meinem Rechner aber nicht gut benimmt), ich bekomme die für mich interessanten Meta-Informationen angezeigt und es gibt – wie man es von Mozilla gewohnt ist – eine Menge addons. Zum Beispiel, um bei last.fm zu scrobbeln.

Einziges Manko: Das Programm lässt sich nicht in die Traybar minimieren – aber da finde ich sicherlich auch noch etwas.