bye bye Telefonkabine

Aktuell lasse ich im Minutentakt eine zufällige Telefonkabinen der Schweiz läuten, wer abnimmt wird überrascht.
Und das aus aktuellem Anlass, denn am 28. November 2019 wird die letzte öffentliche Telefonkabine der Swisscom abgebaut.

Danke den Mappern der OpenStreetMap, welche vorallem in Bern sehr viele Telefonkabinen mit dazugehöriger Telefonnummer online gestellt haben.

Danke der Backbone Solutions, die mir mit meinem Massenanrufen bisher noch nicht den Account gesperrt hat.

Wer Interesse hat die spontane Hackerei mit asterisk, SIP und python anzuschauen, findet auf github den code.

Und noch ein Link, falls Du die Telefonkosten der Aktion übernehmen möchtest und den Bot bis zum bitteren Ende der Kabinen telefonieren lassen willst.

bye bye Telefonkabine.

Swisscom Telefonkabine in Neuchâtel von Roland Zumbühl / cc-by-sa.

dnsSuffixSpoofingManInTheMiddleRootZoneSomething

Just for fun and because it’s looking much cooler I wanted to change the canonical domain of 5th.ch to 5th.ch. with the trailing dot of the root domain. So I wrote some .htaccess to do so. After that I noticed my let’s encrypt certificate didn’t match the domain name anymore.

So asked my awesome hoster cyon if I could have my let’s encrypt certificate with the trailing dot.
Doesn’t look like it. =(

So I did some digging, hacking and dockering.

Since a domain without trailing dot is ambiguous I was able to trick my browser to load the wrong page.
I setup a DNS suffix on my host machine and the ip of the evil DNS server. This could happen over DHCP in an untrusted network.

cat /etc/resolv.conf
search razw3hgtpmkesdh.com
nameserver 127.0.0.1

The config of the evil DNS server (my first docker experiments):

172.16.42.2 razw3hgtpmkesdh.com
172.16.42.2 razw3hgtpmkesdh.org.razw3hgtpmkesdh.com

If you open the website razw3hgtpmkesdh.org in Google chrome the first query to razw3hgtpmkesdh.org doesn’t get answered. So chrome queries the domain with the DNS suffix appended razw3hgtpmkesdh.org.razw3hgtpmkesdh.com.
You can’t see in the following screenshot that this isn’t the requested site.

An attacker could easily generate a valid SSL certificate for this bogus site razw3hgtpmkesdh.org.razw3hgtpmkesdh.com. But if the website owner of razw3hgtpmkesdh.com would use the FQDN (razw3hgtpmkesdh.com.) the DNS request would just fail or the attacker could only use a self signed SSL certificate, which wouldn’t be trusted, because he isn’t in control of the real domain.

Using the FQDN as canonical domain isn’t just cooler to look at it’s at least a tiny bit safer.
If you wan’t to try it yourself feel free.

diyiot

IoT is of some interest to me. I don’t like how this term Internet of Things gets used by marketing guys.
If those networks of things are only connected but not integrated into the internet then it’s no ‘internet’.
I few years ago I stumbled upon a very lightweight and simple protocol that fascinated me. It’s called MQTT.

my vision

My idea of an Internet of Things takes most the devices’ logic and places it somewhere else. A simple mqtt light switch can’t do much more than turn the light on, off or blindly toggle the state. To get some feedback my simple light switch publishes the new state of the light on an additional topic.
On what conditions the light gets turned on is of no interest to the light whether it be a light sensor, people clapping their hands, a motion sensor triggered by somebody walking by or a click of a button on a website.
The same goes for the temperature sensor which in my little mqtt network doesn’t turn on the heater by himself. That’s the work of some service run elsewhere which is subscribing to the temperature sensor and telling the heater to turn on only when it’s supposed to. I might go holiday and I don’t want to reconfigure all my things hidden all over the place just to turn some thermostat off or adjust the temperature. If the devices are as dumb as possible the network itself is most flexible.

my implementation

In my small Internet of Things, there are even two different network which work together but don’t have to. One broker is running on a raspberry pi in my camper the other is at home running in an virtual machine hidden away in the basement. The two are bridging with each other if they can see each other on the network. Sending all messages the other one hasn’t to each other. If the camper isn’t home the access point can’t join the home network the mqtt network in the camper works on its own. There are things (Arduino Ethernets with sensors and actors) which can be controlled automatically or by hand with a push of a button on a website. The things are in blue. The two brokers are shown in green. In yellow are the services. One is a very simple python thermostat just for the sake of illustration and the other ones are a mqtt connected websites with fancy buttons. All of those things and services are communicating via mqtt topics. Try clicking on the diagram bellow.

It isn’t the most consumer friendly concept of an IoT mostly because you have to draft the language, in which devices and services talk to each other, yourself.
But isn’t that the case for most of the open and nonproprietary networks of things which have to work together.

Following is one small example my API/language I created simple enough not only things but humans can understand and control manually.

vw/temp/1 -1.30
vw/heater toggle
vw/heater/state on
vw/temp/1 -1.20
vw/temp/1 -1.10

vw/temp/1 14.90
vw/temp/1 15.00
vw/heater off
vw/heater/state off

Here is all my mqtt related code, running somewhere, hosted.

Mail-On-Tape

In der Reihe Kuriositäten, die die Welt nicht (unbedingt) braucht, habe ich letztens einen Freund mit einem Rätsel versorgt.
Daten auf einem alten «Kassettchen» abzuspeichern, stand schon lange auf meiner ToDoList.
Mit Commodore, vor meiner Zeit, war es bereits mal üblich, Daten auf normalen Audio-Kassetten abzuspeichern.
Da ich aber meinen alten Taperecorder nicht aufschrauben wollte, um direkt an den Schreibköpfen herumzubasteln,
entschied ich mich für einen Weg, die Daten mit einem Protokoll aus dem Amateurfunk mit Tönen auf die Kassette zu schreiben.

Dieses habe ich als Challenge mit nur wenigen Hints in ein altes Stimmcouvert gepackt und ihm per Post zugeschickt.
Anfangs wollte ich es richtig schwierig machen und die paar Zeilen Text in tar und par2 kapseln, zwecks error correction.
Aber weil die Datenmengen schlussendlich zu gross wurden und die Länge des Kassettenbandes gesprengt hätten, habe ich es es beim rohen Text in 8 Minuten Gepiepse belassen. Auch Bit-Fehler entstanden mit 30 Baud keine. Einzig auf die GPG-Signatur konnte ich nicht verzichten, da das Tape in unserer Zeit der totalen Überwachung auf dem Postweg abgefangen und verändert werden könnte. =P
Den Rest des Tapes habe ich mit dem Ton von Snowden-Dokus und Musik überspielt um das Finden der Daten zu erschweren.

Zum das Ganze aufs Tape zu spielen, waren nur folgende Befehle nötig,
und die Verbindung des Computers per Kopfhörerausgang zu aux meiner Stereoanlage.
gpg --clearsign MailOnTape.txt > SignedMailOnTape.txt
cat SignedMailOnTape.txt | minimodem --tx 30

Der Empfänger brauchte keine Kabel, sondern nur ein Mikrofon am Computer.
minimodem --rx 30

Bis jetzt habe ich noch keine Reaktion auf mein Mail-On-Tape …

informatiker

«Ich werde Informatiker.», diese Aussage musste ich in meinem letzten Oberstufenjahr auf einem Plakat zum Ausdruck bringen. Gestern ist die gedruckte Version wieder in die Hände gefallen. Damals war ich der einzige, der nicht mit farbigem Papier, Schere und Leim hantierte. Ich dachte mir, Kindergärtner werde ich wohl nicht, und benutzte meinen Mac dazu. Dies ermöglicht mir es, vier Jahre später ein PDF davon online zu stellen. =D

photo informatiker plakat

was-ist-denn-das

… hier sieht nichts mehr aus wie vorher.

Um das hässliche, alte WordPress Standard theme loszuwerden, habe ich mich gestern an die Arbeit gemacht, das angefangene theme daily fertig zu schreiben. Ich habe es so weit fertiggestellt, dass es benutzbar ist. Dementsprechend sind ein paar basic styles und die grobe Idee hinter dem Design drin. Natürlich ist es noch nicht vollendet. Es fehlen noch Dinge wie das automatische Anpassen der Hintergrundfarbe passend zum lokalen Sonnenunter- und -aufgang des Betrachters. Aber es ist schon jetzt ein würdiger Ersatz für das alte theme.

Wie immer gibts den Code im Netz, github:daily. Solltet ihr also an chronischem Zeitüberfluss leiden, könnt ihr ihn anschauen, kommentieren, selbst verwenden oder verbessern (fork me).

Ach ja, curl blog.5th.ch/humans.txt ;)

kickoff-blauerHimmel

GPS fasziniert mich irgendwie. Darum findet ihr auch schon einen anderen Post zu dem Thema. Nun geht es aber ums Selbermachen.
Als ich auf die Idee kam, einen kleinen GPS Tracker selbst zu bauen, dauerte es nicht lange, und der dazu benötigte und bestellte GPS Receiver traf bei mir ein. Natürlich liess ich keine Minute verstreichen um ihn auszuprobieren. Und nach kürzester Zeit erreichten die ersten Daten aus der Erdumlaufbahn meinen Mac via Arduino.


$GPGGA,212102,,N,,E,0,00,,,M,,M,,6F
$GPRMC,212102,V,,N,,E,,,250112,,,N
5F
$GPGGA,212103,,N,,E,0,00,,,M,,M,,6E
$GPRMC,212103,V,,N,,E,,,250112,,,N
5E
...

Die oben stehenden Hieroglyphen sind die rohen Daten des Receivers. Die einzelnen Zeilen werden NEMA sentence oder auch NMEA string genannt und transportieren die Daten. NMEA ist eine standardisierte Sprache, in der sich ein GPS Gerät ausdrückt. Ihre Anfänge hatte dieser Standard in der Schifffahrt, die aus diesen sentences alle Daten wie Längen- und Breitengrade, Geschwindigkeit, Zeit usw. liest. Der detaillierte Aufbau eines solchen Datensatzes findet man im web.

Bei näherer Betrachtung meines ersten übermittelten $GPRMC string musste ich ernüchtert feststellen, dass an der Position, an der ein A stehen sollte, ein V, nämlich eine Fehlermeldung, erschien. Ein A zeigt an, dass die Daten verlässlich und in Ordnung sind.


$GPGGA,212225,4707.4282,N,00853.7112,E,1,05,02.2,00714.0,M,048.0,M,,4E
$GPRMC,212225,A,4707.4282,N,00853.7112,E,000.0,000.0,250112,,,A
72
$GPGGA,212226,4707.4283,N,00853.7112,E,1,05,02.2,00714.0,M,048.0,M,,4C
$GPRMC,212226,A,4707.4283,N,00853.7112,E,000.0,000.0,250112,,,A
70
...

Den nächsten Versuch unternahm ich outdoor. Unter den leicht irritierten Blicken meiner Nachbarn stand ich mit MacBook in eisiger Kälte im Garten. Nach einer Minute Wartezeit wurde aus dem V wirklich ein A. Und tatsächlich erschienen die genauen Daten meiner Position in dem string. Als nächstes stand nun an, die rohen Daten in eine neue Form zu bringen, in der die relevanten Informationen herausgelesen sind.
Hierbei konnte ich glücklicherweise auf die tatkräftige Hilfe meines guten Freundes @stektograph zählen. Er schloss vor kurzem seine Elektronikerlehre ab und brachte das Wissen mit, dass ich benötigte. Ab jetzt war mein Projekt das unsere. Gemeinsam brachten wir dem Arduino bei, den einzelnen NMEA string zu erkennen. In dieser Form werden die gelieferten Informationen für ihn greifbarer.

Die nächsten Schritte betreffen das Abspeichern und Übermitteln an einen Webserver. Wir planen, die Daten auf einer SD-Karte zwischenzulagern und sie dann in einem festgelegten Intervall via mobiles Internet an einen Server zu übertragen. Das dazu benötigte Modul, welches beispielsweise mit der Swisscom kommuniziert, ist bestellt und hoffentlich bereits unterwegs.

Vielleicht entsteht ja auch noch eine Webseite, die die einzelnen Positionsangaben auf Google Maps zu einem Pfad verbindet. Zu welchem Zweck will ich noch nicht verraten.

Übrigens, blauerHimmel entstand aus der Erkenntnis, dass GPS indoor gar nicht funktioniert. Und demzufolge die Nerds wohl oder übel unter blauem Himmel tüfteln müssen. Den Code findet ihr bei jedem Wetter: github:blauerHimmel

apple-inc-der-vortrag

 

Was man nach ein wenig Frühjahrsputz und Entrümpeln nicht alles findet! Ich bin auf die gedruckte Version meines Apple Vortrages aus dem Jahre 2008 gestossen und habe mir gedacht der passt wunderbar hier hin. Entstanden ist das Booklet im Rahmen eines freiwählbaren Vortrages aus meiner Sek-Zeit.

Apple Schweiz honorierte meine Mühen übrigens mit einem iTunes Gutschein!

download (PDF, 6.3MB)

wordpress-theme-daily

Hi there,

wie man sicher verstehen kann, gefällt mir dieser Blog in seiner Erscheinung noch nicht ganz so gut. Das Theme, das ich im Moment verwende, ist das standardmässig mitgelieferte Twenty Ten 1.3 Theme, entwickelt von den WordPress Developern.

Schon lange hatte ich vor, mir ein eigenes Theme zu schreiben und es auch einzusetzen. Das Konzept der neuen Erscheinung von blog.5th.ch ist meiner Meinung nach ziemlich experimentel. Der Blog soll zeitzonen- und tageslichtabhängig seine Farbe verändern. Also ganz im Sinne des Lesers, der in der Nacht einen schwarzen und tagsüber einen weissen Blog vorfindet. Jedoch stellt es sich als ziemlich schwierig heraus, die genau Länge und die Dämmerung eines Tages korrekt zu berechnen. Erste Schritte findet ihr auf github:daily.

Im gleichen Zuge möchte ich die lästigen Kategorien völlig aus dem Theme verbannen und mehr auf Tags setzen. Der Permalink zu den einzelnen Posts soll zusätzlich den Titel des Posts ersetzen. Wozu brauche ich einen Titel, wenn der Link zum Post für sich spricht?

Erste Designversuche in derselben Richtung von meinem WordPress Theme daily findet ihr auf der root Seite 5th.ch/.


Update: wie ihr seht ist es mittlerweile online..