Love Locks at Pont des Arts

Blog

NetCologne VoIP einrichten

Seit Februar 2019 bin ich nicht mehr Kunde von NetCologne. Ich lasse den Artikel als Referenz hier stehen, weise aber darauf hin, dass er nicht mehr aktualisiert wird.

Vorab: Wenn möglich, sollte bei einer FritzBox bei den Internet-Zugangsdaten als Internetanbieter "weiterer Internetanbieter" – "NetCologne / NetAachen" ausgewählt werden. Die FritzBox holt sich dann alle Konfigurationsdaten vollautomatisch, inklusive der Konfiguration für die Telefonie. Falls euer Router diese Option nicht anbietet, findet ihr im folgenden Text vielleicht Hilfe.

Seit heute habe ich endlich VDSL, der ADSL-Anschluss mit Splitter und paralleler ISDN-Telefonie gehört damit endgültig der Vergangenheit an.

Leider war die Einrichtung von NetCologne-SIP auf meiner eigenen FritzBox alles andere als einfach, da ich nirgendwo im Internet brauchbare Informationen fand. Nach einigem Experimentieren hat es aber doch geklappt.

Auf der NetCologne-Einstellungsseite kann man sich ein SIP-Passwort generieren lassen und auch gleich die Login-Daten abholen. Das Generieren des Passworts dauert einen Augenblick, also Geduld. Wenn man mehrmals klickt, kann es sein, dass das angezeigte Passwort nicht das Richtige ist. Wenn man mehrere Rufnummern hat, braucht man für jede ein eigenes Passwort.

Für die fiktive Telefonnummer 0221-123456 erzeugt man dann auf der FritzBox eine neue Rufnummer mit folgenden Parametern:

Telefonie-Anbieter:Anderer Anbieter
Rufnummer für die Anmeldung:123456← Die Rufnummer ohne Vorwahl
Interne Rufnummer:123456← Ebenfalls nur die Rufnummer ohne Vorwahl
Benutzername:221123456← SIP-Username wie auf der Einstellungsseite
Kennwort:●●●●●●●●← Das SIP-Passwort von der Einstellungsseite
Registrar:sip.netcologne.de← SIP-Server von der Einstellungsseite
Proxy-Server:sip.netcologne.de← SIP-Server von der Einstellungsseite
STUN-Server:← Leer lassen

Die anderen Parameter lässt man am besten einfach, wie sie sind. Bei mir waren sie nach der automatischen Konfiguration wie folgt:

DTMF-ÜbertragungRTP oder Inband
Rufnummerunterdrückung:CLIR über *31
Rufnummerübermittlung:Deaktiviert← Rufnummer wird trotzdem übermittelt
Rufnummer für die Anmeldung verwenden:← kein Häkchen
Anbieter unterstützt Rückruf bei Besetzt:← kein Häkchen
Paketgröße in Millisekunden:20
Anmeldung immer über eine Internetverbindung:← kein Häkchen
Der Anbieter unterstützt MWI:← kein Häkchen
Der Anbieter unterstützt kein REGISTER-fetch:← Häkchen gesetzt
Anbieter kontaktieren über:nur via IPv4

Bei dem VDSL-Bitstream-Anschluss muss außerdem die VLAN-ID für Internettelefonie auf 7 eingestellt werden. Bei einem VDSL-Anschluss (ohne Bitstream) ist die VLAN-ID für Telefonie offenbar 10 (das kann ich bei mir aber nicht ausprobieren). Welche Anschlussart man hat, steht im Schreiben, das man von NetCologne bekommen hat.

Bei mir hat das so funktioniert. Aber die Werte wurden experimentell ermittelt. Im Zweifelsfall sollte man die NetCologne-Hotline anrufen (wie auch immer man das mit einem nicht funktionierenden Telefonanschluss schaffen möchte).


Nachtrag, 22.08.2017: Für den SIP-Server sollte sip.netcologne.de (oder was bei dir auf der Netcologne-Einstellungsseite steht) verwendet werden. Vorher stand hier im Artikel eine feste IP-Adresse, die aber anscheinend nicht mehr aktuell ist. Danke an Ralph für den Stuppser in die richtige Richtung.


Nachtrag, 12.11.2018: Durch eine Neukonfiguration meiner FritzBox wurden die Telefoniedaten automatisch von NetCologne bezogen. Ich habe die Angaben entsprechend zu dem geändert, was ich danach in meiner FritzBox vorfand.

Miniatur-Wunderland

If you visit Hamburg and have a few hours to spare, make sure to visit the Miniatur Wunderland in the Speicherstadt. It is the world’s largest model railway, covering an area of more than 1,300 m².

The construction easily degrades your home model railway to a few chipboards with rails attached. Besides model trains, also cars and even planes move there. For example, a fire breaks out in a model palace, and the fire trucks are immediately rushing to the place with blaring sirens. The perfection and the love even for tiniest details is just breathtaking.

The next pictures show just a small extract. There is much more to discover. You could easily spend hours, and wouldn’t have seen everything yet. Make sure to reserve your tickets online, to avoid waiting in a long line.

But enough... It’s picture time!

Continue reading...
PHP 5.3.7, eine Analyse

Das PHP-Entwicklerteam veröffentlichte vor wenigen Tagen die Version 5.3.7, nur um schon wenige Tage später vor deren Verwendung zu warnen. Der Grund dafür war ein Fehler in der Funktion crypt(), welche bei bestimmten Hash-Verfahren lediglich das Salt zurückliefert. Das kann dazu führen, dass nach einem Update auf PHP 5.3.7 keine Benutzer sich mehr auf einem Webauftritt einloggen können oder sich bei einer Passwortänderung nach einem Update auf eine spätere PHP-Version nicht mehr einloggen können. In PHP 5.3.8 wurde der Fehler wieder behoben.

Dieser Artikel ist der Versuch einer Analyse, wie es zu dem Fehler kam und warum er erst nach der Release bemerkt wurde.

Die PHP-Funktion crypt() ist in der Datei php_crypt_r.c implementiert. Folgender Codeausschnitt baut dort den Passwort-Hash zusammen:

memcpy(passwd, MD5_MAGIC, MD5_MAGIC_LEN);
strlcpy(passwd + MD5_MAGIC_LEN, sp, sl + 1);
strcat(passwd, "$");

strcat() fügt eine Zeichenkette an das Ende eines Puffers. Die Funktion gilt als unsicher, da sie nicht prüft, ob der Zielpuffer genügend Speicherplatz zur Verfügung stellt. Wird die Zeichenkette zu lang, wird der nachfolgende Speicherbereich beschädigt – ein typisches Problem bei C-Sprachen.

Aus dem Grund wurde der Aufruf durch eine sicherere Funktion ersetzt. Leider ist aber gut gemeint das Gegenteil von gut gemacht.

memcpy(passwd, MD5_MAGIC, MD5_MAGIC_LEN);
strlcpy(passwd + MD5_MAGIC_LEN, sp, sl + 1);
strlcat(passwd, "$", 1);

strlcat() stellt sicher, dass der Puffer nicht über sein Ende hinaus beschrieben wird. Dazu wird dessen Größe übergeben. Und genau hier lag das Problem, denn statt der Größe von passwd wurde anscheinend die Größe des zu kopierenden Textes übergeben, nämlich 1. Da passwd zu dem Zeitpunkt bereits deutlich mehr als ein Zeichen enthält, tut strlcat() genau das, was es tun soll, nämlich gar nichts. Das “$”-Zeichen wird nicht angehängt, das tatsächliche Ergebnis weicht damit von dem gewünschten Ergebnis ab.

Solch ein Fehler ist eigentlich ein Lehrbuchbeispiel für Unit-Tests, und der Kommentar zum Bugfix (Revision 315218) deutet auch an, dass ein solcher existiert:

Unbreak crypt() (fix bug #55439)
# If you want to remove static analyser messages, be my guest,
# but please run unit tests after

Tatsächlich gibt es einen Test, der die crypt()-Funktion mit bestimmten Werten aufruft und das Ergebnis mit einem erwarteten Ergebnis vergleicht. Dieser Test schlägt Alarm, wenn er ausgeführt wird.

Dass PHP 5.3.7 dennoch veröffentlicht wurde, lässt eigentlich nur einen Schluss zu: Der Unit-Test wurde nicht ausgeführt oder der Alarm wurde schlichtweg ignoriert. Spätestens beim Bau der finalen Version unmitelbar vor der Veröffentlichung hätte dies aber stattfinden müssen. Alles andere wäre grob fahrlässig.

Zusammengefasst hatte der Fehler also folgende Ursachen:

  • die für C-Sprachen üblichen Probleme bei der sicheren Verarbeitung von Zeichenketten
  • eine missverständliche oder nicht verstandene Dokumentation der Funktion strlcat()
  • keine verbindlich vorgeschriebene fehlerfreie Ausführung der Unit-Tests vor der Freigabe einer Release

Insbesondere der letzte Punkt wiegt schwer und wirft ein schlechtes Licht auf die verantwortlichen PHP-Entwickler.

Die CSU und die Sperrklausel des Grauens

Der Artikel ist von 2010 und bezieht sich auf die Bundestagswahl von 2009. Die grundsätzliche Problematik gilt natürlich generell, auch wenn die konkreten Zahlen von der jeweiligen Wahlbeteiligung abhängen. Interessant ist übrigens, dass der Artikel eine Partei rechts von der Union bereits damals vorhergesagt hat.

Wie funktioniert das eigentlich mit der CDU und CSU? Wie kann es sein, dass eine der beiden Parteien nicht auf dem Stimmzettel zu finden ist, sie dann aber doch gemeinsam im Koalitionsboot sitzen? Auch wenn man nicht immer diesen Eindruck hat: Es handelt sich tatsächlich um zwei eigenständige Parteien. Die CDU kann man allerdings nicht in Bayern wählen, die CSU nicht außerhalb. Beide Parteien müssen (wie jede andere Partei in Deutschland auch) bei einer Bundestagswahl jeweils die fünf-Prozent-Hürde knacken, um in den Bundestag einziehen zu dürfen. Für die CSU haben dafür bisher alleine die Stimmen aus Bayern ausgereicht, um die Partei deutschlandweit komfortabel über die 5% zu heben.

Aber wie komfortabel ist diese Stimmenzahl wirklich, oder anders gefragt: Wie schlecht müsste die CSU in Bayern abschneiden, um gerade noch in den Bundestag einziehen zu können? Wagen wir also ein Gedankenexperiment und fragen uns, wie viele gültige Wählerstimmen bei der Bundestagswahl 2009 in Bayern mindestens notwendig gewesen wären.

Erst einmal die Fakten. In dem offiziellen Wahlergebnis heißt es, bundesweit entfielen auf die CSU 2.830.238 Zweitstimmen. Bei 6.720.532 gültigen Wählerstimmen in Bayern kam die CSU damit auf komfortable 42,5%. Bei einer Bundestagswahl müssen die Zahlen allerdings deutschlandweit betrachtet werden. Bei 43.371.190 gültigen Wählerstimmen in ganz Deutschland entfielen damit tatsächlich nur 6,5% der Stimmen auf die CSU.

Um bei 43.371.190 gültigen Wählerstimmen die fünf-Prozent-Hürde zu nehmen, benötigt eine Partei mindestens 2.168.560 Stimmen. Die CSU muss diese alleine in Bayern aufbringen. Bei den dortigen 6.720.532 gültigen Wählerstimmen sind das mindestens 32,3%, die die CSU im eigenen Land mindestens erreichen musste, um in den Bundestag ziehen zu können. Natürlich ist das keine statische Grenze. Sie hängt von der Zahl der gültigen Wählerstimmen bundesweit und in Bayern ab, und damit auch direkt von der Wahlbeteiligung.

Je mehr Wähler bundesweit überhaupt eine gültige Stimme abgeben, desto mehr Wähler muss die CSU im eigenen Land aufbringen, um es über diese Hürde zu schaffen.

Mit diesen Zahlen im Hinterkopf ist es gut zu verstehen, warum bei der CSU im August 2010 die Nerven blank lagen, nachdem eine unveröffentlichte Umfrage ergab, dass sie derzeit nur noch auf rund 38% der Stimmen käme. Wenn sich dieser Abwärtstrend fortsetzt, wird die nächste Bundestagswahl erstmalig eine Zitterpartie für die Christsozialen. Und damit auch für die CDU, denn scheitert die CSU an der fünf-Prozent-Hürde, fehlen der gesamten Union schlagartig ebendiese Prozentpunkte.

Die Schuld sieht die CSU in der mieserablen Koalitionsarbeit und darin, dass die große Schwester den rechten Flügel zu stark vernachlässige. Sollte die Stimmenerosion so weitergehen, könnte es die CSU zu einem drastischen Schritt zwingen, um sich zu retten: das Aufkündigen der Union und die Umorganisation in eine eigenständige, stärker rechtsorientierte und bundesweit wählbare Partei. Sie würde das Vakuum rechts der Union füllen und dürfte der CDU einige Stimmen kosten. Stehen wir also vor einer weiteren Zersplitterung einer ehemaligen Volkspartei, so wie es die SPD mit den Linken erfuhr?