Fehler gibt es…

Am Wochenende einen Server im RZ installiert, planmässig die beiden Ethernetkabel am nächsten freien Portpärchen 23+24 angeschlossen. Statt grüner Dauerleuchte war aber nur Orange und statt flackerndem Netzwerktraffic an der zweiten LED nur sporadisches Blinken.

Server jedenfalls nicht erreichbar.

Hektisch Kabel getauscht, keine Verbesserung. Host neu gestartet, keine Verbesserung.

Grübel, grübel…. Irgendwo im Hinterkopf kam plötzlich der Gedanke, dass der Switch nach 4 Jahren ohne Reboot und Neuanschluss von Hardware einfach die inaktiven Ports lahmgelegt hat.

So war es auch – mit dem einen Ende einer Pinzette aus meinem Notfallwerkzeugköfferchen (vor 20 Jahren für 18 Deutschmark bei einem fliegenden Händler gekauft) den Switch neu gebootet und schon waren alle Sorgen verflogen.

Der HP ProCurve 1810G nerft mich schon seit Jahren weil sein eingebauter Webserver nach paar Wochen ohne Ansprache zuverlässig wegstirbt. Vorher hatte ich an gleicher Stelle einen Switch von Netgear dessen Webinterface ebenfalls nie da war wenn man es brauchte.

Der nächste Switch wird einfach wieder ein Billigteil ohne Management-Interface.

Dumm gelaufen

Ich wollte nur mal kurz was unter Windows 7 probieren und hab gar nicht gemerkt, dass da im Hintergrund Upates herunter geladen werden.

update

Naja, der Download war schnell – die Installation hingegen hat mich 2 Stunden lahmgelegt.

Unter Linux irgendwie besser gelöst, da werden die Updates zur Laufzeit installiert und werden mit dem nächsten Neustart des Rechners bzw. teilweise schon mit dem Neustart der Programme wirksam.

VoIP rückt immer näher….

Bei meinem Mitgesellschafter ist nun auch ISDN abgeschaltet und VoIP eingeführt worden.

Ok – konventionelles Setup dort: ISDN Telefonanlage im Keller und ein verlotterter Router für DSL.

Umstellung wurde für Ende Januar angesagt, letzten Donnerstag stand der Techniker vor der Tür (die DTAG erledigt sowas schneller als das Licht – also weit vor dem Termin).

Der hat einfach eine kleine VoIP-ISDN-Kiste vorgeschaltet und neuen Router installiert. Klappte alles prima, ich hab das Netz bei dieser Gelegenheit mal von 172.x nach 192.x umgezogen und tote Konfigurationen entfernt.

Heute wollte ich von dort aus eine Mail versenden. Denkste auch nur!

Erst dachte ich, dass mein Mailserver abgeschmiert ist. Dort eingeloggt, alles OK und es dämmerte mir, dass eventuell die Telekom Mailversand über den normalen Port 25 mittlerweile abgeklemmt hat (halte ich für legitim, denn diesen Weg nutzen die meissten infizierten Rechner auch um irgendwelchen Pillenspam zu versenden). Also das umkonfiguriert auf eine alternative Methode wo auch gleich Verschlüsselung stattfindet.

Und wtf? geht auch nicht.

Kurzer Blick in die diversen Foren: per Default ist im Telekomrouter der Mailversand auf bestimmte Mailhosts beschränkt. Also Telekom-Mailserver und dann eine Latte von Systemen die bevorzugt von denwelchen N00bs genutzt werden deren Rechner sowieso immer Virenverseucht ist.

Und diese kaputte Liste ist auch nicht änderbar – lediglich eigene Mailserver sind zufügbar. Hab ich gemacht, Mail ging raus, prima.

Deutsche Gründlichkeit halt eben: alles absichern und links noch ein riesiges Scheunentor offenhalten.

IBAN die Schreckliche (aus den Memoiren eines Programmierers)

PAIN

Der Beitrag „Meine Bank hat einfach zu viel Nullen“ meines alten Freundes Tobias Schrödel hat mich daran erinnert aufschreiben, welchen „Spass“ ich mit der SEAP-Umstellung hatte.

„Früher“ gab es „DTA-Austausch“, ein recht altertümliches Format aus der Zeit der Großrechner (feste Satzlänge, Umlaute sowieso nicht) und etlichen Einschränkungen die sich halt daraus ergeben. Sozusagen der „LADA Niva“ der Informatik: einfach, robust, unkaputtbar. Ausserdem war die Datensatzbeschreibung so gut, dass mit ihrer Hilfe ein brauchbarer Programmierer binnen eines Tages was zusammenschustern und die Testdatei (es gab ein Flag „ich bin nur ein Test“) der Bank zur Prüfung übergeben konnte.

Bei SEPA sollte alles anders werden. Moderne Datenstruktur (XML-Basierend), flexibel usw.. Also kein Lada mehr, eher ein Humvee.

Als wir Anfang 2013 mit der Planung angefangen haben war das erste Problem: wo bekommt man eine schlagkräftige Datensatzbeschreibung sowie dokumentierte Musterdateien her und wer prüft das, was ich da ausspucke. Ausser buntigen Flyern als PDF oder Powerpoint welche die Vorzüge von SEPA erklären war nämlich nichts zu haben was man brauchen könnte. Und wenn man bei den Banken genauer nachgefragt hatte kam heraus, dass man an keiner Stelle soweit war mit den Dateien irgendwas anfangen zu können – was mich verwunderte, denn ISO 20022 gibt es seit 2004 und müsste zumindest Bankintern schon seit paar Jahren eingesetzt werden.

Eher schon nach der Jahresmitte 2013 trudelten dann von mehreren Stellen zumindest schonmal Musterdatensätze ein, anhand der darin enthaltenen XML-Tags wie zum Beispiel „ReqdExctnDt“ konnte man über die Suchmaschine des geringsten Misstrauens Seiten im Netz finden, die sich damit schon näher auseinander gesetzt haben.

Je mehr wir ins Detail gingen, um so schlimmer wurde es. Manche Banken mussten gestehen, dass sie noch lange nicht so weit sind – „Payments Initiation“, abgekürzt „pain“, bekam schnell eine neue Bedeutung.

Sehr spannend war zb. die Frage, wieviel Text man denn im Belegtext unterbringen darf (es war in der Summe weniger als im alten DTA-Format) und ob man den Eintrag mit dem Belegtext beliebig oft wiederholen kann (lt. XML-Schema hätte ich jetzt die Frage mit „Ja“ beantwortet, in der Praxis darf das nur 1x per Transaktion an den Kunden/Lieferanten vorkommen). Der Belegtext ist insofern spannend, weil dort normalerweise drinsteht wer was zu welchen Konditionen bezahlt hat. Das kann im Extremfall so aussehen: D400083488 R70015547 1180,25 -2% Skto = 1156,65 (Zahlung Kunde an Lieferant, Kundennummer beim Lieferanten = 4000883488, Rechnungsnummer = 70015547, Bruttobetrag 1180,25 anzüglich 2% = 1156,65). Bei Skontozahlungen in Fremdwährung hat man unter Umständen einen noch längeren Buchungstext weil dann die Wechselkurse noch mit rein müssen. Und ich hab in ISO 20022 jede Menge Kram gefunden, aber nichts womit man den Belegtext in irgendeiner Forum strukturieren kann – selbst wenn es dafür eine Möglichkeit gibt, hab ich so meine Zweifel dass das bei jeder Bank folgerichtig implementiert wurde.

So – und nun möge der geneigte Leser sich vorstellen was passiert, wenn mit einer Überweisung 30-40 Rechnungen ausgeglichen werden. Das Feld hat ca. 130 Stellen und da passen mit viel Glück die Zahlungsinformationen für 15 Überweisungen rein, mit viel Pech nur eine einzige.

Nach vielem Telefonieren hab ich im Februar 2014 jemanden bei einer kleinen Bank gefunden der sich zumindest besser als ich mit dem Kram auskennt und der meinte „soweit wie ich das sehe müssen Sie für sowas einzelne Überweisungen machen.“ Mein Hinweis, dass seine Bank für jede Transaktion zwar kleines – aber in der Summe richtig viel Geld – haben möchte, kam erstmal nichts.

(Gibts da wirklich keine bessere Lösung?)

Was wir dann letztendlich gemacht haben: es wird bei einem drohenden Feldüberlaif wie seit 40 Jahren reingeschrieben „lt. Avis“ und dann ein Fax/E-Mail mit den detaillierten Zahlungsinformationen rausgeschickt.

Der 1. Februar 2014 (Letzter Termin für die Umstellung) rückte immer näher, wir hatten zwar schon länger alles fertig aber keiner der Banken konnte uns sagen ob alles richtig war. Die Kunden kauten nervös ihre virtuellen Fingernägel und erweiterten vorsorglich ihre Kreditlinien um im Fall der Fälle mal paar Tage länger ohne Geldeingang auszukommen.

Und es kam so, wie ich es mir schon im Januar gedacht habe: „Weil die Wirtschaft noch nicht so weit ist, gibt es eine Übergangsfrist bis zum 1. August“ (dass die Banken ebenfalls oftmals noch nicht wirklich fertig waren, hat man hier dezent verschwiegen). Leider haben paar Banken trotzdem eine Drohkulisse aufgebaut: „Wir stellen zum 1. Februar um und akzeptieren nichts mehr im DTA-Format“. Fand ich etwas ärgerlich weil es eigentlich nur die Banken waren, die vorher arg geschludert hatten und selber froh waren dass sie es rechtzeitig irgendwie hinbekommen hatten (in dieser Zeit aufgebaute Bekanntschaften in den EDV-Abteilungen dort haben mir Dinger erzählt …)

Wir habens dann im Februar gemächlich fertig gemacht und bei allen Kunden eingebaut. Testen lassen, gut wars. Bislang keine Beanstandungen, paar optische Fehler.

Was war sonst noch?
Bei der SEPA-Implementierung sind wir auf Probleme gestossen, die eigentlich schon bei der Referenzprogrammierung (sofern es eine solche gibt, vermutlich nicht) ein Stolperstein hätten sein müssen.

Um die Prüfziffer der IBAN bzw. ID zu generieren oder umgekehrt anhand der Prüfziffer zu testen ob die eingegebene IBAN gültig ist muss eine recht grosse Integerzahl durch 97 geteilt werden. Leider haben ältere Runtimes oder Umgebungen gar nicht die Möglichkeit, 123456789012345678/97 zu rechnen – flugs war ich wieder ein kleines Kind in der Klasse von Ada Olbrich und habe auf Karopapier dividiert und es dann genauso in Software gegossen. Nicht besonders Elegant – aber hinreichend schnell und vorallem funktioniert es fehlerfrei.

Nachwehen
Mein Freund Tobias hat in seinem Blogeintrag schon darauf verwiesen, dass die IBAN bei der Ausgabe alle 4 Stellen mit einem Leerzeichen versehen werden soll damit das irgendwie lesbar wird.

Leider interessiert das keine Sau, auf den üblichen Geschäftspapieren meiner Lieferanten ist die IBAN oft in einem Rutsch weggeschrieben (ADAC Überweisungsformulare zb.)

Bei der BIC (der „Bankleitzahl“) hat irgendein Vollspacken im ISO-Komitee auch Zahlen zugelassen – mit dem Ergebnis, dass HELAB1FF von HLABIFF bei den üblichen Fonts auf Geschäftspapieren kaum zu unterscheiden ist (fast alles was mit Sparkassen zu tun hat)

Die DEVK-Versicherung hat sich „nur“ in der Prüfziffer bei den Überweisungsformularen vertan. Teure Geschichte war das bestimmt 🙂

Geile Sticks

    Schmuddelecke

Stellen Sie sich vor, in irgendeiner Raucherecke liegen diese 3 USB Sticks herum (oder auf einem Tisch im Wartebereich einer Klinik, an der Bushaltestelle auf der Bank…). Wer würde da nicht zugreifen.

usbstick

Partybilder von Desirees 17ten Geburtstag vielleicht – wer weiss, was die Girlies so getrieben haben? Oder der etwas schmuddelige, alte Harkoon – wer weiss was da schmutziges drauf ist? Oder der 16GB Stick… kurz auf dem Firmenrechner nach brauchbarem durchflöhen und dann frisch formatiert für eigene Zwecke nutzen.

    USB Normal

USB (Universal Serial Bus) ist eigentlich eine tolle Sache. Statt gesonderter Stecker und Buchsen für Tastatur, Maus, Kopfhörer, externe Festplatten, DBTV oder Bluetooth-Adapter, kleine Massenspeicher usw. gibt es nur noch ein Format, den Rest erledigt die Software. Gut, riesige Datenübertragungsraten sind nicht möglich, aber mal schnell für Bilder von A nach B zu transportiern ist das vollkommen ausreichend.

Und damit es kein Durcheinander gibt, wurden in den Standards feste Regeln eingeführt wie sich bestimmte Geräteklassen zu verhalten haben sodass das Betriebssystem im Normalfall mit Software vom Typ „einmal geschrieben, funktioniert überall“ (sogenannte „generische Treiber“) ganz prima auskommt. Was mit ein Grund für den Erfolg von USB ist, denn stellen Sie sich mal vor wenn jeder popelige USB-Stick erstmal eine Treiberinstallation erfordert – der Alptraum für jeden Admin.

Von diesen Geräteklassen gibt es übrigens über den Daumen gepeilt 20 Stück. Einige Geräte müssen über Subklassen noch genauer definiert werden, gerade die Ecke „Drahtlose Übertragung“ besteht ja nicht nicht nur aus Bluetooth sondern auch „Handy-Modems“, WLAN etc.

    Firmung

Leider hat die Technik des Jahres 2015 kaum noch was mit dem alten Dampfradio zu tun wo man die Elektronen noch flitzen sehen konnte. Und auch festverdrahtete Logikbausteine gibt es kaum noch – die Arbeitspferde („Controller“) in einem USB-Stick oder einer USB-Tastatur sind eigentlich „auch nur“ kleine PCs, abgespeckt auf das Notwendigste – dafür aber mit genügend Ausrüstung und Anschlüssen um zb. Speicherbausteine oder eine Festplatte anzusprechen. Und gesteuert wird alles – wie beim „großen“ PC auch – über ganz banale Software, nur dass man es hier nicht „Betriebssystem“ sondern „Firmware“ nennt. Das „Firm“ (engl. für „Fest“) bezieht sich darauf, dass früher dieses Stück Sofware im Produktionsprozess fest eingebrannt wurde, heute kann man es nachträglich verändern oder mittlerweile komplett neu aufspielen („Firmware flashen“).

Das hat so einige Vorteile: Stellt man in der Produktion fest, dass die Hardware paar Macken hat kann man in der Software oft noch reparieren. Zb. werden defekte Speicherzellen ausgeschlossen und ein 16GB-USB Stick findet als 15GB Version verbilligt seinen Weg in den Handel.

Thorie: jeder dieser kleinen „Minicomputer“ ist anders und wenn zB 20 gleich aussehende USB-Sticks in der Hand hält ist nicht gesagt, dass diese 20 Geräte auch die gleiche Hardware und die gleiche Firmware besitzen.

Praxis: Massenfertigung rulez – irgendeine Firma in China entwickelt das Design, eine andere Firma giesst das in Hardware wärend ein unterbezahlter Kodierknecht eine passende „sitzt, passt, wackelt und hat Luft“-Firmware zusammenkloppt. Das Endprodukt wird ähnlich einem Kinofilm auf Spulen gewickelt von dem dann Roboter die Chips abziehen, aufkleben, löten und in einen Korb schmeissen. Das Design mit den geringsten Kosten und der problemlosesten Firmware setzt sich durch sodass man es über die Jahre mit vielleicht einer Handvoll verschiedener Chipsätze und entsprechend angepasster Firmware zu tun hat (im Kern ist die Software immer gleich: Daten von A nach B schaufeln).

    USB Reloaded

Wir haben also:

  1. USB Geräte, die über eine einfache Nummer mitteilen, welche Geräteklasse sie sind
  2. USB Geräte, deren Firmware man nachträglich verändern kann

Ich habe mir schon 1996 bei der Einführung von USB 1.0 überlegt, was passiert wenn sich eine USB-Festplatte als USB-Tastatur ausgibt und einfach „Notepad öffnen, Batchdatei herunterschreiben und ausführen“ heruntertippt. Denn auch Windows lässt sich – dass wissen die „Mäuseschubser“ nicht – mit der Tastatur ganz hervorragend bedienen, und seit dem die Keycodes für „Menue“ und „Windows-Taste“ Einzug gehalten haben, erst recht.

Erstaunlich für mich ist, dass man das erst 2014 mal ernsthaft ausprobiert hat (die Geheimdienste nützen das vermutlich schon lange): Ein harmlos aussehender USB-Stick wird an einen PC angeschlossen, vom Stick werden Tastaturkommandos abgespult welche der PC auch brav ausführt.

Hier mal ein simples Beispiel unter dem als „sicher“ geltendem Betriebssystem Linux:

fcl

DELAY 500 # Warte eine halbe Sekunde bis der USB-Stick erkannt wurde
ALT F2 # Öffnet unter Linux ein Eingabefeld um ein Programm zu starten und …
DELAY 200 # … einfach bisserl warten bis das Fenster offen ist
STRING gedit # Nun „gedit“ in das Eingabefeld tippen …
ENTER # … und die Eingabetaste drücken
DELAY 500 # Wieder warten, danach sollte „gedit“ gestartet sein.
STRING Ich bin ein test # Was Sinnbefreites in den Editor tippen.
ENTER

Genausogut könnte ich unter Linux mit „wget“ von einem Server speziell dafür eingelagerte Schadprogramme herunterladen starten. Windows ist noch schlimmer, die aktuelle Powershell und Windows selber bringen alles mit um den Computer mit einer kleinen Fernwartung auszustatten oder die Passwörter gleich lahmzulegen.

Das Script da oben ist übrigens für „USB Rubber Ducky“, ein USB-Stick der speziell dafür entwickelt wurde mit einer einfachen Scriptsprache zu funktionieren und nach aussen zu sagen „Ich bin eine Tastatur!“. Der Stick hat natürlich auch eine Firmware die man so hacken kann dass er sich erst als Tastatur ausgibt um danach wieder als ganz normaler USB-Massenspeicher zu erscheinen.

Wer mich also mit einem USB-Stick um irgendwelche Rechner herumschleichen sieht – obacht 🙂

PS: Ja, man kann bei Linux auch mit den bescheidenen Möglichkeiten eines normalen Users viel Schaden in der Umgebung anrichten. Debian und Gnome durchlaufen ~/.profile und andere Batches, dort kann man mit >> problemlos einen Start auf ein Script in zb. ~/.config anhängen. Mit bisserl Debian-Builtin Sachen scannt man die Netze in seiner Umgebung bis man auf ein WordPress stösst was man mal via xmlrpc.php zum DDOS anderer Server nutzt. Oder Spamversand geht auch einfach, denn auch der normale User darf :23,:25,:80,:110 etc. nach aussen kontaktieren. Und ein Server auf :8080 geht natürlich auch.

XMLRPC Attacke auf WordPress

Vor gut zwei Jahren wurde die XMLRPC Schnittstelle auf WordPress standardmässig aktiviert – vorher war das ein wahlweise zuschaltbares Feature, ab Version 3.5 kann man das nur noch mit Tricks deaktivieren.

XMLRPC ist „Remote Procedure Call via XML“, damit kann man unter anderem WordPress von seinem Smartphone aus bedienen und Track/Pingbacks erzeugen. Bei sowas jauchzen die Geeks natürlich sofort auf – bei mir als verantwortungsbewussten Programmierer gehen sofort die Alarmglocken an: denn RPCs sind (wenn sie sicher sind) nicht nutzbar und wenn sie unsicher sind auch nicht nutzbar denn sie laden geradezu zum Missbrauch ein.

Am Abend meldete sich ein Anwender, dass sein Forum und das zugehörige Blog nicht mehr erreichbar seien. Zuerst habe ich auf einen der seltenen Hänger getippt und den virtuellen Server erstmal neu gestartet. Nach paar Sekunden war die Maschine wieder da – und auch genauso schnell wieder nicht mehr erreichbar. Also mal auf den Host geschaut: die VM belegte einen Core zu 100% und sah auch sonst sehr beschäftigt aus. Das SSH-Login funktionierte, zusammen mit einem beherzten „sudo -s“ sind ca. 15min vergangen bis ich eine root-shell hatte. „htop“ brauchte nochmal 5min bis zur ersten Anzeige und dann wurde der Schuldige gefunden: Apache war bis zum Anschlag ausgelastet. Normalerweise ein Anzeichen dafür, dass irgendeine Websoftware verseucht ist und nun die Maschine damit belastet, Spam herauszuschicken.

Aber nachdem ich den Webserver mit einem beherzten „killall apache“ abgeschossen hatte, wurde das System wieder responsiv und ich konnte mal genauer in den Datenverkehr reinschauen.

Nach etwas herumprobieren kam ich auf folgendes Script:

rm -f tmpfile
echo "waiting for 500 packets (^c to see whats collected until now)"
tcpdump -vvv -n -A -c 500 'tcp port 80' > tmpfile
less tmpfile
rm tmpfile

Und siehe da: die Installation war in Ordnung, aber irgendein Idiot versucht via xmlrpc.php ein Pingback an eine andere Seite zu senden. Kleiner Input, riesen Output – so kennen wir das.

Soforthilfe schafft eine .htaccess im Hauptverzeichnis von WordPress:

<Files "xmlrpc.php">
Order Allow,Deny
deny from all
</Files>

Damit ist die Fernsteuerung von WordPress erstmal abgeknipst und die Gesamtinstallation erreichbar.

Nur noch die Netze abklemmen, die einen bewerfen. Wie immer Vollspacken von OVH und Ecatel – deren AS gehören eigentlich in jeder Debian-Installation per Default in die iptables.

Problem erkannt, Problem gebannt!

Drunter und drüber

Dass die Telekom ihre ISDN-Anschlüsse lieber gestern als morgen einstampfen würde, ist schon lange bekannt. 2018 ist dann entgültig Schluss mit dem „Integrated Services Digital Network“ und alles muss auf IP-Telefonie umgestellt sein.

Damit das zügig läuft, bombardiert die Telekom ihre Kunden mit allerlei Werbepost und Anrufen in denen das Blaue vom Himmel herunter versprochen wird. Vorallem das Argument „mehr Internetgeschwindigkeit und billiger“ zieht bei vielen Anwendern.

Letzte Woche Donnerstag, also genau vor dem „Tag der Deutschen Einheit“ ruft mich ein völlig aufgelöster Kunde an. „Nichts geht mehr – kein Internet, kein Telefon“ und rückte nebenbei heraus, dass man ein Angebot der Telekom angenommen hätte wo alles viel „schneller, besser und billiger“ sei. Auf der Fahrt zum Einsatz schwante mir schon, was da passiert ist und beim Kunden langte ein Blick in die Auftragsbestätigung dass der Kunde mit „All-IP“ beglückt wurde – völliger Unsinn bei einem Unternehmen welches noch auf etliche ISDN-Features angewiesen ist und erst in 2 Jahren migrieren wird.

Aber wie schon Adenauer sagte: „Die Situation ist da!“ und nun gilt es zu retten, was zu retten ist. Kunde gefragt, ob wenigstens ein VoIP-Router geliefert wurde. Versprochen wurde er vom Telekom-Vertrieb, die Auftragsbestätigung schwieg sich darüber aus und geliefert wurde daher auch nichts. Mit einer Fahrt zum nächsten Saturn/Media-Markt zwecks Beschaffung eines VoIP-Routers wäre zumindest in paar Stunden (Zeit die ich eigentlich gar nicht habe) wenigstens bisserl Telefonie und Internet möglich, aber als Dauerzustand für den ganzen Betrieb nicht tragbar. Also Hotline, Situation geschildert und Rückabwicklung (Zurück-umstellung auf ISDN) beauftragt. Wegen dem Feiertag ist mit der Fertigstellung nicht vor Dienstag zu rechnen, zum Glück hat der Kunde genügend Mobiltelefone mit Internet so dass die Grundversorgung gesichert ist. Noch schnell eine externe Anrufweiterschaltung der Hauptnummer auf das Mobilbiltelefon der Chefin angeleiert und gut war.

Das mit der Weiterschaltung klappte aber nicht. Nachdem ich paarmal zwischen Vertrieb und Störungsstelle pendelten durfte, kam auch der Grund heraus: Trotz Rückabwicklung muss die Telefonie intern erst auf IP umgestellt werden (das passiert erst Samstag) damit die AWS funktioniert und dann wird alles auf einen Schlag auf den alten Zustand zurückgestellt.

Tage vergingen, Mittwoch nachmittag dann die frohe Botschaft: Telefon geht wieder, aber kein Internet. Also wieder zum Kunden. DSL ist synchron, login fehlgeschlagen. Störungsstelle war auch ratlos „alles wurde auf den vorherigen Zustand zurückgesetzt, vielleicht Router kaputt?“. Na – ich musste eh nach Hanau einkaufen fahren, da langte die Zeit noch für Routerbeschaffung (unser Lager ist nämlich leer, die letzten Gewitter haben mächtig zugeschlagen).

Zurück den neuen Router ausprobiert, gleiches Ergebnis. Da kommt der Kunde mit einem Umschlag „ach, das war auch dabei“ um die Ecke. Neue Zugangsdaten mit denen dann auch das Login funktionierte (soweit zum Thema „alles auf den Ursprungszustand).

Anwender glücklich, Admin mit den Nerven runter.

Schlimmer gehts immer

Frisch eingetroffen: eine gefälschte E-Mail die mich dazu verleiten soll auf einer Webseite meine Amazon Zugangsdaten einzugeben.

Also mal kurz in den Header der Mail geschaut, das kam von einem gehackten Server in Deutschland. Da bin ich doch so nett und habe das Abuse-Desk des Providers informiert dass er seinem Kunden sagt er möge doch sein System mal auf Vordermann bringen.

Und was bekomme ich als Antwort:

We cannot send your message to abuse@server-home.net because of errors
encountered during communication.

While talking to block03.server-home.net/77.236.97.67:0
-> 554 rejected due to spam content

Was natürlich den Sinn eines Abuse-Contacts völlig hinfällig macht.

Dann darf halt 77.236.96.0/19 hier keine Mails mehr einliefern – fertig.

Wunder der Technik

Ein Kollege, den ich über ein Onlinerollenspiel kennengelernt hat, unterschreibt unsere Mailkorrespondenz mit seinem Ingame Nickname „Neonadler“ oder kurz „Neon“.

Die Hotmail Autokorrektur hat aus „Viele Grüsse Neon“ den Satz „Viele Grüsse Neonazi“ gemacht.

Wunder der Technik…

Next Generation

Ich sitze gerne mit einem bestimmten Kunden zusammen und dann klagen wir uns Gegenseitig unser Leid was die Jugend angeht.

Die meissten Beschwerden sind schon bei Sokrates 2.000 Jahre vor uns aufgetaucht (also zB der mangelnde Respekt der Jugend vor den Erwachsenen), aber er und ich sind uns einig, dass mittlerweile dem Nachwuchs das Interesse fehlt zu erkunden, wie die Dinge funktionieren.

Und irgendwie stimmt das auch. Es wird nur noch „bedient“ und nicht mehr überlegt, warum und wie es funktioniert.

In der EDV gibt es ein perfektes Beispiel dafür: Die Foren für Programmiersprachen sind voll mit Anfragen für die Validierung einer E-Mail Adresse.

Wie eine E-Mail Adresse auszusehen hat, findet sich in RFC-schiessmichtot (zu faul das herauszusuchen). Aber Grundsätzlich muss im Jahre 2014 ein „@“ und mindestens ein „.“ darin vorkommen (und noch paar andere Regularien, aber das lass ich mal weg).

Pseudocode:

if not exist „.“ in $email return false
if not exist „@“ in $email return false
[…]

Der geneigte Leser sollte mal im Einstellungsgespräch eines Programmierers fragen, wie denn der Kandidat eine E-Mail Adresse prüfen würde. Wenn er obiges Beispiel (also Abprüfung per Programmcode) nennt, sofort Einstellen.

Wenn der Kandidat folgendes fehlerfrei herunterrattern kann, dann erschiessen Sie ihn sofort:

(?:[a-z0-9!#$%&’*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&’*+/=?^_`{|}~-]+)*
| „(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \\[\x01-\x09\x0b\x0c\x0e-\x7f])*“)
@ (?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
| \[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:
(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \\[\x01-\x09\x0b\x0c\x0e-\x7f])+)
\])

Und wenn er sagt, „Dafür gibt es eine Regex im Netz“ ebenfalls.