Shooting the messenger

Aus mehrfach aktuellem Anlass – und nachdem auch die Politik aktuell wieder heult, dass im letzten Jahr wieder massiv gecybert wurde.

Liebe Unternehmen: Bekommt eure Security und vor allem euer Verhalten gegenüber Sicherheitsforschenden endlich mal in den Griff.

Nachdem es bei Golem und Heise zu lesen war und es nicht der erste Fall von „Shooting the messenger“ dieses Jahr war und mir ehrlich gesagt mittlerweile der Kamm ein wenig schwillt, mal (m)eine Meinung und Erfahrung zum Thema Sicherheitsforschung und der Umgang von Unternehmen mit der Thematik.

Der Vollständigkeit halber (und nein, das soll keine Prahlerei sein): ja, auch ich habe schon Sicherheitslücken entdeckt und gemeldet. Details sind sind an der Stelle unwichtig, zur groben Einordnung, zwei Meldungen hatten IIRC einen CVSS-Score von 7,4 und 8,6.

Was ich in der Kommunikation mehrfach beobachten konnte waren folgende Reaktionen in dieser Reihenfolge:

  • „Kann gar nicht sein“
  • „Warum glauben Sie, dass es eine Sicherheitslücke gibt?“
  • „Oh.“
  • (vermutlich hektischer Griff zum Telefonhörer, keine Reaktion – nach längerem Warten und mehreren Rückfragen)
  • „Wir haben es gefixt, bitte prüfen“

Meine Gedanken dazu: Ok, ok, es kann ja jeder daherkommen und Dinge behaupten. Aber selbst mit einer groben Beschreibung was falsch läuft, sollte jemand der/die „security“ in der Mailadresse hat entweder seine Kompetenz nutzen oder entsprechende Ressourcen im eigenen Betrieb aktivieren.

Gleiches gilt für Punkt zwei. Muss man als unbezahlte(r) dritter wirklich immer einen proof of concept darlegen? War bei mir bis jetzt immer der Fall. Leute, es eure Sicherheit. Euer Kapital, eure Verantwortung. Muss man wirklich eure (bitte entschuldigt die Ausdrucksweise aber etwas milderes fällt mir dazu nicht ein) Nase in den Kackhaufen drücken, auch wenn man von weitem schon sieht, dass der einfach nicht auf den Parkettboden gehört?

Das darauf folgende „Oh.“ gibt zwar ein wenig Genugtuung – aber: man im Zweifel Stunden oder gar Tage für etwas aufgewendet, was eigentlich in der verdammten Verantwortung des „zerforschten“ liegt. Seis drum. Man hilft ja gerne.

Selten oder eigentlich eher so gut wie gar nicht habe ich Proaktive Kommunikation von der Gegenseite bekommen. Warum auch: man hat ihr unliebsame Arbeit beschert und nervt dann auch noch damit, wann endlich die ureigensten Probleme gelöst sind.

Und ja, auch der letzte Punkt ist nicht erfunden. „Will review for code and food“. Man muss sich echt wundern, mit welcher Erwartungshaltung manche Menschen durchs Leben gehen. Natürlich werde ich an einer Blackbox bestätigen, dass das Teil jetzt sicher ist, obwohl die Sicherheitslücke im Zweifel nur einen kleinen Schritt zur Seite gemacht hat – und zum Schluss noch „Haftung“ dafür zu übernehmen. Ja ne, is klar Kollege.

Eine andere Beobachtung (allerdings schon ein paar Jahre her): Es kann durchaus schwierig sein jemanden zu erreichen, der/die sich tatsächlich überhaupt verantwortlich für Sicherheit fühlt. Auf Anfragen über Kontaktformulare oder zentrale Mailverteiler wurde nicht reagiert und es war social engineering erforderlich, um einen Kontakt aufzubauen.

Was läuft falsch?

Die für mich markantesten Punkte sind:

  • Es ist erstaunlich schwierig, einen Kommunikationskanal aufzubauen
  • Man muss mehr beweisen als eigentlich nötig wäre
  • Probleme werden heruntergespielt oder die Tragweite verkannt
  • Um die Analogie „Daten sind das Öl des 21. Jahrhunderts“ auszuschlachten: Die Gewinne sind wichtig, aber für eine Tankerhavarie gibt es weder einen Notfallplan noch eine schnelle Eingreiftruppe. Zerstöre Ökosysteme: kann man nichts machen, das bringt der Fortschritt halt mit sich
  • Obwohl man hilft, bleibt man Bittsteller oder ein Störfaktor
  • Es gilt das Schubkarrenprinzip: Es bewegt sich nur was, wenn man schiebt

Grundsätzlich kann man es wie folgt zusammenfassen: Die Erwartungshaltung der beiden Parteien divergiert.

Zugegeben: ich habe den Eindruck, dass es (auch dank DSGVO und den damit verbundenen Strafen) etwas besser geworden ist und auch die Angst vor der Veröffentlichungen etwas größer geworden sind.

Dennoch ist die noch recht junge security.txt Stand Oktober 2021 leider noch nicht so richtig etabliert.

Liebe Unternehmen, bitte beachtet:

Sicherheitsforschende…

  • …machen das ggf. in deren Freizeit
    (nicht sie binden eure die Zeit, ihr macht das mit ihrer)
  • …sind nicht die Ursache eurer Probleme
  • …haben euch gegenüber keine keine Verpflichtung oder Bringschuld
  • …haben erst einmal keine persönlichen Vorteile, euch zu helfen
  • …haben kein Interesse, euch ans Bein zu pinkeln
    (sonst würden sie die Lücke gleich woanders verkaufen)
  • …sollten euch nicht erklären müssen, wie ihr es richtig macht
  • …sollten euch nicht den Hintern hinterher tragen müssen
  • …wollen sich nicht und lassen sich nicht gerne verarschen lassen

Herangehensweise

An der Stelle sei hervorgehoben: das sind keine verbindlichen Ratschläge, dafür habe ich weder die Expertise noch eine Autorität. Ein recht interessanten Artikel zum Thema bietet z. B. Heise Online.

Aus meinen bisherigen Erfahrungen halte ich für sinnvoll:

  • Diskretion bewahren
  • Wenn es nicht viel Aufwand ist, bereits ein proof-of-concept vorbereiten – die meisten Unternehmen werden euch nicht glauben. Je schnell man das „Oh“ erreicht, desto besser
  • So früh wie möglich Entdeckungen dokumentieren, auch wie man sich durchhangelt
    • Screenrecordings sind dank OBS mittlerweile sehr einfach zu erstellen und sicher auch schönes Futter, sollte man es beim Congress auf die Bühne schaffen 😉
    • Ist etwas physisches im Spiel: Video möglichst ohne Schnitte um zu zeigen, dass es keinen doppelten Boden gibt
  • Wenn Daten Dritter im Spiel sind: So viel wie nötig, so wenig wie möglich sehen/speichern, möglichst früh anonymisieren. Metainformationen reichen bereits oft für den „Aha-Effekt“
    • Wenn man nicht/schlecht anonymisieren kann: Kryptographie für die Dokumentation verwenden.
  • Zeitlich nachvollziehbar und nicht manipulierbar dokumentieren
    • Hashes von veröffentlichbaren Dokumenationen (Daten Dritter müssen irreversibel geschützt sein) auf nicht verfälschbaren Plattformen (z. B. Twitter) veröffentlichen, dadurch hat man einen Zeitstempel
    • Verschlüsselte Daten in ein öffentliches (z. B. Git) Repo packen
  • Noch vor der ersten Kontaktaufnahme prüfen
    • Wer ist steht einem gegenüber?
      • Gibt es eine Vulnerability-Kultur (Bug bounty-Programme, CVE)
      • Würde man für sie arbeiten wollen?
      • Sind sie schon durch Behandlung von Hackern in Erscheinung getreten?
  • Die erste Kontaktaufnahme gilt zum Aushandeln eines sicheren Kommunikationsweges, keine Details („Ich habe (vermutlich) eine Sicherheitslücke gefunden, bitte senden Sie mir eine verschlüsselte Mail mit Ihren Public Keys an …“)
  • Es kann sinnvoll sein, anonym oder unter Pseudonym an Firmen heranzutreten um Angriffsfläche zu verringern
  • Mit der ersten verschlüsselten Mail die „Spielregeln“ festlegen
    • Freundlich aber bestimmt bleiben („ich will euch nichts Böses, aber ihr müsst etwas machen“)
    • Auch wenn umstritten: CVSS-Score ermitteln und kommunizieren
    • Typ des Disclosures ansagen (Responsible oder Coordinated, siehe auch den oben verlinkten Heise-Artikel)
    • Durchführbaren aber festen Zeitrahmen/Meilensteine festlegen
      • Nicht vertrösten lassen, aber Verzug mit guter Begründung gewähren lassen
    • Konsequenzen beim Verstreichen von Fristen festlegen
      • Zero-Days sind nicht die beste Option
      • Zusammenarbeit mit Plattformen, Benachrichtigung von potenziell geschädigten Partnern/Kunden (nicht im Sinne von Endverbrauchern), Medien
    • Von vorne herein proaktive Rückmeldung des Gegenüber einfordern
    • Wenn es einem wichtig ist: Belohnung aushandeln
  • „Alles was Sie sagen, kann und wird gegen Sie verwendet werden“ gilt für beide Richtungen
  • Security Advisories vor der Veröffentlichung zum Gegenlesen verlangen (eigene Erfahrung: bei einer Stand ziemlich großer Unsinn und wurde trotz deutlichem Hinweis nicht korrigiert)
  • Wenn man zu Meetings eingeladen wird: jemanden im Hintergrund nach Pressemeldungen Ausschau halten lassen
  • Soweit wie sinnvoll möglich kooperieren – es geht um die Sache, nicht um Befindlichkeiten

Chapeau, Canon! Der MG6150 bleibt stark.

Man kennt die Geräte, die man immer wieder kaufen würde, egal wie überholt sie mittlerweile sind. Meine aktuelle Knipse ist da so ein Kandidat (die ich selbst dem Nachfolger bevorzugen würde). Bei Laserdruckern wäre das ganz klar mein Brother, den ich mir zum Studium zulegte und noch nie aus eigenem Antrieb mucken machte (der Papierstau mit dem Briefumschlägen sei ihm verziehen). Allerdings hatte der in den knapp 10 Jahren auch nur einen Toner und somit unter 10000 Seiten durch.

Bei Tintenstrahldruckern und Scannern sind meine Favoriten – vermutlich auch ein wenig der Nostalgie geschuldet – der Agfa SnapScan 600 und der Canon BJC-7000. Vermutlich auch, weil es die ersten Geräte waren, auf die ich Zugriff hatte. Gefühlt ist der Scanner noch immer der schnellste – auch bei hohen Auflösungen – den ich je erlebt habe. Eine Krankheit bei dem Teil war das Nachlassen der Helligkeit der verbauten Leuchtstofflampe (vor allem, wenn man vergessen hat das Scanprogramm zu beenden). Mit LED-Beleuchtung heute kein wirkliches Problem mehr, aber Agfa zählte die glücklicherweise wohl zu den user-servicable parts: Mit einem Kugelschreiber konnte man die Glasplatte herunternehmen (und sie bei der Gelegenheit auch innen putzen), lediglich eine kleine Plastikblende verdeckte die T5-Leuchtstoffröhre, die es in jedem Elektromarkt für 8 Mark (oder Euro, Umrechnung vermutlich 1:1) gab. Weißabgleich laufen lassen und das Teil werkelte wieder für ein paar Jahre.

Der BJC-7000 hatte zwei geniale Eigenschaften: riesige Tintenpatronen und eine Fixiereinheit.

Mein Vater druckte damit Klassensätze und brauchte vielleicht vielleicht 3 oder 4 Patronen im Jahr, dank Fixiereinheit hätte man die Dokumentenauflage durch ein Wasserbecken ersetzen können. Das Papier wäre dann zwar wellig, aber der Druck blieb dank Lackschicht sauber. Die Druckqualität war für damalige Verhältnisse erstklassig – nicht nur, weil es optional auch eine 6-farbige Patrone für Halbtondruck von CMY gab.

Danach kam länger nichts und dann der Canon iP3000, mit relativ vielen Features (IIRC Duplexdruck, CD-Druck) und sehr günstig im Verhalten.

Heute habe ich allerdings einen neuen Meister gefunden – und das, obwohl ich kein Freund von Multifunktionsgeräten bin. Der Canon MG6150. Allerdings begrüßte er mich erst einmal mit einem Fehler: 5B00, Tintenrestbehälter voll. Schon länger hat er davor gewarnt, jetzt ging er final in den Streik.

Nach einem längeren Kampf, das Teil in den Servicemode zu versetzen – die Anleitung auf easyfixs.blogspot.com ist leider etwas irreführend: Man darf nicht die Powertaste beim Einstecken des Stromes halten und dann x-mal auf Stopp drücken (und danach die Powertaste loslassen), sondern muss wie folgt vorgehen (Gedächtnisprotokoll, habe das Gerät nicht hier):

  1. Unbeleuchtete Stop-Taste suchen, drücken und halten
  2. Powertaste drücken und halten
  3. Stop-Taste (noch immer unbeleuchtet) loslassen
  4. Stop-Taste n-mal (IIRC 5 oder 6x) drücken (Modellabhängig, je nachdem ob das Modell der MG6000er-Serie einen Scanner hat oder nicht), die Power- und Status-LED schalten mit jedem Druck um
  5. Power-Taste loslassen

Danach taucht der Drucker als USB-Device auf und das Service-Tool lässt sich bedienen.

EEPROM-Druck und erwartungsgemäß ist der Resttintentank bei 100,2 %, bei der nächsten Zahl muss ich stocken und frage „Vielleicht ist es ein Fehler oder ich lese es falsch, aber hat der Drucker wirklich über 27000 Seiten durch?“ – „Ja kann sein, den haben wir ja auch schon gut 10 Jahre und drucken auch regelmäßig“.

Also sollte da tatsächlich kein Bit in der Zahl gekippt sein: Respekt. Der kann was.

Meine ehrliche Empfehlung war, eine passende Wanne oder zur Not ein Backblech unter den Drucker zu legen (damit es keinen „happy little accident“ auf dem Schreibtisch gibt) und ihn so lange weiter nutzen, bis er wirklich tot ist.

Ob der stete Einsatz von Originaltinte einen Unterschied gemacht hat, kann ich nicht bewerten. Bei Tinten von Drittherstellern habe ich habe ich Erfahrungen, wobei hier natürlich auch die Frage gestellt werden muss: was ist billig und was ist günstig?

HL-340 – man bekommt, was man bezahlt

Wie günstig oder vielmehr billig kann ein USB auf RS-232-Wandler sein?

Preislich lag das Teil bei 5,69 Euro mit Versand und einen Tag nach der Bestellung auf dem Tisch:

Da das Gehäuse halbtransparent ist, sieht man auch ein bisschen, was drin ist:

Nicht viel, um ehrlich zu sein. Auf dem Bild nicht ganz so gut zu erkennen: es ist wohl ein chip on board, zumindest sieht man einen schwarzen Blob. Nicht verwerflich, auch nicht unbedingt ein Merkmal von schlechter Qualität, sondern einfach ein Zeichen für Massenfertigung im Endstadium – und solange das Teil funktioniert habe ich nichts daran auszusetzen.

Am PC meldet sich das Teil als „USB-SERIAL CH340“ (VID: 1A86, PID: 7523), FTDI Chips zu faken lohnt sich offensichtlich nicht mehr, die CH340 sind mir bisher auch nicht als besonders unzuverlässig in Erscheinung getreten, soweit auch alles ok.

Allerdings habe ich immer noch meine Zweifel, ob das Teil hält, was es verspricht – ob da tatsächlich ein RS-232-kompatibles Signal rauskommt? Das Multimeter kurz an Pin 3 rangehalten: 0 V. Nope.

Das Oszi sagt ebenfalls nein:

Im Endeffekt ist es nur ein invertierter 5 V-TTL-UART in der Hoffnung dass das Gegenstück mit den Pegeln klarkommt. Auf der anderen Seite muss man hoffen, dass der kleine CH340 auch echte RS-232-Signale (also mit +12 V/-12 V) aushält.

Bisher habe ich noch nichts beobachtet, wobei der Fokus auch eher auf TX als RX stand. Mal schauen, wie das Langzeitverhalten ist (und der nächste Anschaffung wird wohl ein paar Euro mehr kosten).

Solaranlage und Heizung: sprecht miteinander!

Wie im Artikel Energieerfassung beschrieben, haben meine Eltern eine Wärmepumpe sowie eine Solarthermieanlage als Heizung. Beide für sich betrachtet funktionieren ganz ordentlich, im Zusammenspiel gibt es allerdings ein größeres Defizit, dazu mal ein Blick auf ein Diagramm für einen typischen Vormittag:

Gegen 9:05 ging die Kollektortemperatur (blau) über den Schwellenwert zum Beladen des Puffers und die Pumpen (für Kollektor und Wärmetauscher, hier nur der Wärmetauscher dargestellt) legen los.

Dabei ist die Leistung vom Dach natürlich noch nicht so groß, allerdings rührt die Pumpe im Puffer erst einmal um. Folglich fällt die Temperatur im Puffer oben (grün) und die unten im Puffer (orange) steigt leicht. das bringt gegen 9:45 die Wärmepumpe auf den Plan „Wasser kalt, muss heizen“ – zu sehen an der Differenz der Grundwassertemperatur (GW diff) am Ein- und Ausgang der Wärmepumpe. Ansich ist das Vorgehen korrekt, allerdings hätte die Solaranlage den Puffer in der nächsten Stunde genauso aufgeheizt – nur eben deutlich günstiger.

Rechnet man mit einem „Einsatz“ des Wärmeerzeugers von etwa 25 Minuten bei einer Leistungsaufnahme von knapp 5,7 kW macht das pro Sonnentag 2,375 kWh. Angenommen, das passiert jeden vierten Tag sind das pro Jahr etwa 91 Tage, also 216 kWh im Jahr. Bei eher optimistischen 25 ct/kWh ergibt das 54 Euro – pro Jahr. Sinnlos verheizt.

Man sollte die beiden Geräte einfach miteinander sprechen lassen: Wenn die Solaranlage aktiv ist, soll die Wärmepumpe ruhe geben. Das kann eigentlich nicht allzu schwierig sein – die Wärmepumpe hat zum Umschiffen von Lastspitzen einen Freigabekontakt fürs EVU sowie einen Schalter vorne am Gerät für eine manuelle Freigabe, was im Schaltplan in etwa wie folgt aussieht:

Auf der anderen Seite ist der Solarregler von Viessmann/Resol. Einfach ein Relais parallel zur Wärmetauscher-Pumpe anzuschließen geht leider nicht, da die Pumpe mit Pulspaketsteuerung betrieben wird. Solch ein Signal auf die Freigabesteuerung zu geben wäre zumindest „interessant“, aber nein. Natürlich könnte man mit einem abfallverzögerten Relais oder mit ein bisschen basteliger mit Netzteil und nachgeschalteter Glättung arbeiten, aber das muss nicht sein: Der Solarregler ist für solche Fälle vorbereitet und unterstützt eine Funktion namens Parallel-Relais. Dabei wird bei Pumpenaktivität ein weiteres (Um-)Relais aktiviert.

Prima, damit könnte man einfach den L1 vom Schaltplan oben ersetzen und alles ist hoppi-galoppi! Meines Erachtens nicht ganz. Ich möchte die Systeme sinnvoll „isoliert“ haben. Deswegen ist bei einer kleinen Shoppingtour ein Steuer-Relais im Warenkorb gelandet, das wie folgt in Reihe geschaltet wurde:

Der Kontakt des Relais ist als Öffner ausgeführt, damit das Relais nur bei aktiver Solaranlage bestromt werden muss. Zusätzlich ist ein Schalter zur Übersteuerung des Relais eingebaut, für den Fall, dass etwas unvorhergesehenes mit der Solaranlage ist und man der Wärmepumpe auf jeden Fall eine Freigabe erteilen kann.

Der Auf- bzw. Umbau sieht entsprechend unspektakulär aus – die zweite Baugruppe von links ist neu:

Das Einzige was vom Umbau zeugt ist der Schalter und die Beschriftung, die nicht ganz zum Rest passen:

Einen Tag nach dem Umbau zeigte sich beim Monitoring folgendes Bild:

„Wie Sie sehen, sehen Sie nichts“ – obwohl man behaupten könnte, dass die Puffertemperatur oben den Einschaltpunkt des WP-Reglers nicht getroffen hat: die Kontrolllampe am Hilfsrelais leuchtet, sobald die Solaranlage loslegt und die Wärmepumpe bleibt ruhig, wie an der bei 0 bleibenden Temperaturdifferenz zu sehen ist. Nicht nur an diesem Tag, sondern auch an den darauf folgenden.

Zugegeben: Technisch ist das weder kompliziert noch besonders intelligent, aber man muss es halt einfach erkennen und machen – „why fix it if it ain’t broken?“

Universalsteckerleiste

An solche Situationen erinnert man sich Anno 2021 schon fast nicht mehr: Fremdes Land und zu viele Geräte, die Energiebedarf haben. Im Hotelzimmer: nur eine halbwegs erreichbare Steckdose. Da muss man sich schon fast den Wecker stellen, um alle Akkus über Nacht geladen zu bekommen.

Sollte man zwar eine hinreichend viele Steckdosen haben, scheitert es im nächsten Schritt: Anderes Steckersystem und nur ein Universaladapter. Man könnte Nagelknipser oder Büroklammern in Form bringen – aber ehrlich gesagt, dann kann man auch gleich einen Vilkus nehmen.

Vor meiner letzten – leider vorerst letzten – Langstrecken-Reise (bei der wir vermutlich in Haaresbreite daran vorbei geschrammt sind, eine böse Überraschung mit nach Hause zu bringen) wusste ich, dass es einiges geben wird, was gleichzeitig an die Steckdose will.

Die Überlegung war einfach wie fatal: was ist der kleinste gemeinsame Nenner? Kaltgerätestecker! Also einfach eine schwedische Dosenleiste mit einem Kaltgerätestecker (C14) verheiratet und eine passende Zuleitung mit B-Stecker für die USA besorgt.

Insgesamt wurden es dann 3 Varianten: einfache Schuko-Kupplung, 3-fach- und 6-fach-Steckerleiste:

Auch wenn man nicht genügend (oder keine) Zuleitungen mit örtlichem Stecker hat sind die Adapter nützlich: entweder man holt sich beim lokalen Elektronikmarkt was oder man bedient sich der Stromversorgung von sowieso nicht genutzten Geräten, wie dem Fernseher im Hotelzimmer.

Ob solch ein Aufbau auch nur annäherungsweise VDE-zulassungsfähig ist, konnte (und habe) ich noch nicht ergründet – ist aber auch egal, wird ja nicht hierzulande verwendet ;). Abgesehen davon: wer schon so manche E-Installation in Urlaubsländern gesehen hat: das hier dürfte vermutlich das geringste Problem darstellen.

Unter den Kollegen sorgte die Anordnung übrigens erst für irritierte Verwunderung und dann für Begeisterung – zumindest so viel, wie man einer Steckdosenleiste zusprechen kann.

AVR, ferngesteuert

Die AVRs der 0/1-Serie verwenden zum Programmieren und Debuggen UPDI, welches etwas vereinfacht gesprochen ein auf UART basierendes Protokoll ist.

Dementsprechend hat es nicht lange gedauert, bis es pyupdi entstanden ist. Mit diesem Tool bzw. Library reicht eine serielle Schnittstelle vom PC (mit TTL-Level) und ein Widerstand, um Programmcode auf den Mikrocontroller zu bekommen.

Neben den Programmierfunktionen bietet die Schnittstelle ebenfalls die Möglichkeit zu Debuggen. Zu dem Funktionsumfang gehört gleichermaßen das Auslesen und Schreiben von Registern. Warum das nicht einfach nutzen, um direkt über den PC die Ports und Peripherie-Module des Chips zu verwenden?

Das Schreiben und Lesen im Adressraum der CPU sind gut dokumentiert, der einzige Haken ist, dass eine etwaig geflashte Firmware weiterläuft und einem die Suppe versalzen kann (oder andersrum). Zum Debuggen gehört natürlich auch, die Ausführung der CPU anzuhalten, wozu ich allerdings keine Dokumentation bzw. Informationen finden konnte. Aber macht nichts, einiges vom Protokoll ist ja bekannt und ein bisschen Reverse Engineering bin ich ja nicht abgeneigt. Unterm Strich ist es anscheinend recht trivial: Es muss ein Key geschrieben werden und in ein „reserviertes“ Control-Register eine 1 zum Anhalten und eine 2 zum Ausführen schreiben.

Mehr Details und ein kurzes Demo-Video ist im updizombie-Repository zu finden.

Unc2Clipboard – f..k me on GitHub

es ist natürlich „fork“ gemeint.

Ich habe mich lange gesträubt, einen Webservice für SCM (source code management) zu verwenden. Ok, ehrlich gesagt: für private Basteleien ist die Faulheit relativ groß, ein Werkzeug wie Subversion, Git oder Zip-Dateien zu verwenden.

Aber manchmal muss man einfach ein bisschen mit der Zeit gehen.

Das erste „vollständige“ Projekt ist ein kleines und hoffentlich praktisches Werkzeug für alle, die gemeinsam auf Netzwerkfreigaben auf Netzwerkfreigaben arbeiten: Unc2Clipboard.

Problemstellung: Man hat eine Ordnerfreigabe als Netzlaufwerk gemappt und möchte einen Link darauf teilen. Windows hat im Kontextmenü des Explorer zwar die Funktion „Als Pfad kopieren“ (man muss die Umschalttaste gedrückt halten, damit der Eintrag erscheint), allerdings hierbei wird der Pfad mit Laufwerksbuchstaben kopiert. Dieser funktioniert auf PC A, aber nicht zwangsläufig auf PC B.

Um Netzwerkressourcen zu adressieren benutzt Windows die Uniform Naming Convention, die unabhängig von lokalen Mappings funktioniert.

Lösung: Mit Unc2Clipboard wird ein neuer Eintrag im Kontextmenü erzeugt, mit dem der Pfad entsprechend formatiert und in die Zwischenablage kopiert werden kann:

Der Code ist unter https://github.com/chris-heo/Unc2Clipboard zu finden, für die Mutigen gibt es auch einen v1.0 Release mit Kompilat. Auch oder gerade weil der Code mit bestem Wissen und Gewissen zusammenkopiert wurde gilt: Benutzung auf eigene Gefahr.

Über Lang(weilig)e Artikel und Zeit.

Es ist ja schon fast obligatorisch, dass hier im Blog alle paar Jahre Warteschleifenmusik gespielt wird.

„Hinter den Kulissen geht einiges vor“ wäre momentan zumindest einer Nominierung für den lame excuse award würdig. Denn: so richtig viel passiert eigentlich nicht. Wir schreiben 2021, seit bald einem Jahr ist die Mehrheit bei mir in der Arbeit im HomeofficeMobile-Work-Modus – mit allen Vor- und Nachteilen: Das Pendeln fällt weg, man muss keine Hosen tragen und obwohl ich die Ruhe und obwohl ich es durchaus schätze, in Stille und deutlich konzentrierter (im starken Kontrast zum Großraumbüro) arbeiten zu können (bzw. zu dürfen, ein Privileg, das nicht alle haben), bin ich nach rund 8 Stunden gefühlt platter als sonst.

Ein Faktor ist sicher auch, dass man die meiste Zeit auf Glasscheiben starrt und sich nicht mehr erheben muss, um in Räumen über Dinge zu sprechen. Die einzig wahren Bildschirmpausen gibt es eigentlich nur, wenn man sich etwas zum Trinken holt oder dieses wieder wegbringen muss – selbst dabei die Wege kürzer als sonst und die Kaffeeecke als Hort der Sozialisierung fällt auch weg. Immerhin: Es gab den Vorschlag einer „virtual coffee corner“, oder dass man MS Teams auch mal in der Mittagspause zum „distant socializing“ verwenden kann. Leider (oder zum Glück) können Headset und Webcam reale Team- und Sozialkontakte nicht ersetzen.

Aber um das soll es nicht gehen. Gehen… Ja, ich habe gemerkt, dass ich mich tagsüber deutlich weniger bewege, deswegen wurde die Pendelzeit durch anderweitige Bewegung ersetzt: im Sommer auf zwei Rädern, jetzt im Winter (wenn auch nicht ganz so regelmäßig) auf zwei Beinen. Nicht nur für den Körper, sondern auch für den Geist. Ohne nochmals abschweifen zu wollen: Mein Bastelzimmer ist nun auch mein Mobiles-Arbeiten-Büro, das etwas grüner, ergonomischer und (noch) vollgestopfter mit Technik ist. Trotzdem hat es ein bisschen den „Abstreif- bzw. hier-mache-ich-was-ich-will-Effekt“ verloren. Zugegeben: Das ist Klagen auf dem verdammt hohen Niveau, aber diese 15 m² werden wohl nicht die gleichen wie vor 2020 sein.

Deshalb und weil meine aktuelle Tätigkeit in und für die Arbeit mitunter anstrengend ist, bleibt – neben den anderen Dingen des Lebens – oft nicht mehr viel Zeit und Lust für Hobbys übrig.

Aber nun endgültig zurück zum eigentlichen Thema: Hinter den Kulissen geht zumindest ein bisschen etwas vor sich. Irgendwo habe ich gelesen, dass man sich zur Bewältigung von Prokrastination mit zwei Projekten beschäftigen sollte: Wenn man eines vor sich her schiebt, kann man am anderen weiterarbeiten. Zwei? Naja, eher zwanzig. Das Problem ist: viele interessante Dinge, ab einem bestimmten Punkt kommt man nicht weiter: „der nächste bitte!“ und wieder ein Projekt das man „später“ weiter/fertig machen will.

In Hinblick auf die Veröffentlichung fände ich es sehr unbefriedigend, nur halbwegs in sich geschlossene Themen zu haben. Einfach nur Schaltplan und Layout rauszuhauen kann funktionieren, aber das ist nicht mein Anspruch. Mein Ziel ist es, die Entstehung mit Designentscheidungen zu erklären, ein bisschen auf die Funktionsweise einzugehen und – was ich u. a. im Studium wahnsinnig vermisst habe: (mögliche) Probleme/Fehler finden, verstehen, beseitigen und dann evtl. sogar einer nicht in der Sache bewanderten Person erklären zu können. Ich würde sogar wagen zu behaupten, dass das eine mitunter wichtige Kompetenz für einen Entwickler ist (auch weil man durchaus in die Situation kommt, Vorgesetzten oder Kunden überzeugen zu müssen, warum man etwas teurer als unbedingt nötig machen will, warum die Entwicklung länger dauert, obwohl es schon „funktioniert“, etc…).

8 Abschnitte und noch immer nicht am Ziel? Jetzt aber: Da ich momentan einmal mehr den Artikel für den VBus-Decoder überarbeite (Verbesserungsvorschläge eines Lesers, Fehler in der Schaltung), stellt sich mir die Frage: wie kann man einen Artikel „würdevoll“ historisch wachsen lassen und gleichzeitig nur korrekte Informationen präsentieren (Schaltpläne, Teilelisten, Oszillogramme), ohne die Erkenntnisse aus Unzulänglichkeiten und Fehlern zu verlieren? Zugleich sollte die Artikellänge aber nicht abschreckender als unbedingt nötig werden (12 A4-Seiten für den VBus-Decoder-Artikel sind ordentlich), aber unnötiges Geklicke in einer Artikelserie vermieden werden.

Etwas richtig cleveres ist mir noch nicht eingefallen. „Wasch mich, mach mich aber nicht nass“ passt hier wohl am besten.

Folgende Möglichkeiten sehe ich:

  1. Vollchronologischer Aufbau: oben alt, unten neu – viel zu lesen
  2. Pro Entwicklungsphase eine Seite, ähnlich wie ein Blog
  3. TL;DR-Prinzip: Aktuellste Informationen oben, alte Versionen/Schritte wie in einem Changelog unten
  4. Eine Basisseite, mehrere Artikel/Seiten für die Varianten (beim VBus z. B.: PC-Version, Nano, Pi) mit integrierter Historie
  5. Eine Basisseite aller Varianten, Historie auf Unterseite(n)
  6. Radikalkur: nur noch den aktuellsten Stand, keine Historie

Jede Option hat Vor- und Nachteile. Die „Geschichte“ der Entwicklung möchte ich aus oben genannten Gründen eigentlich nicht ganz weglassen, eine Radikalkur wird es deshalb mit großer Wahrscheinlichkeit nicht geben.

Auch wenn Kommentare hier leider sehr selten sind: Was meint ihr? Ihr seid die Zielgruppe, also wie hättet ihr es am gerne? Einfach in die Kommentare packen oder schreibt einfach eine Mail. Ich freue mich über jeden Vorschlag!

#Kundenbindung

Bei vielen Online-Bestellungen kann man zusätzlich noch eine Bemerkung angeben. Meistens bleibt es leer, weil es einfach nichts zu sagen gibt.

Manche Firmen ignorieren es auch einfach, wie ich aktuell bei einer Bestellung bei einem sehr großen Bauteile-Distri feststellen durfte. Aber es gibt auch welche, bei denen es gelesen und auch nicht ganz ernst gemeinte Hinweise umgesetzt werden – wie bei Welectron:

War zwar nur eine Kleinigkeit, aber ich hoffe es hat dort genauso eine kleine Freude bereitet wie mir 😉

Warum man Tek/Keithley seine komplette Adresse + Telefonnummer angeben muss, um ein Firmwareupdate zu bekommen, das älter als das Herstellungsdatum des Geräts selbst ist, muss man nicht ganz verstehen. Laut Website because USA (Exportbeschränkungen).

Zumindest gab es beim Update einen Tippfehler an der richtigen Stelle:

Domo Arigato, Mr. Rebootto.

AltGr+M/Strg+Alt+M != µ

Da will man einmal in Jubeljahren ein µ (My, Mikro) eingeben und dann passiert – nichts.

Ist das Tastatur-Layout falsch? Hat ein Windows-Update was zerschossen? Google auf und los: ein Verdächtiger ist nVidias Geforce Experience. Da ich es nicht benötige, ist es auch nicht installiert.

Ein anderer Tipp auf Stackoverflow/Superuser ist, über Spy++ (einem Tool aus Visual Studio) die WM_HOTKEY-Messages zu lesen. In VS2019 Community ist das – zumindest wenn man nur den C#-Teil installiert – nicht mehr dabei, aber in einem Backup vom alten Rechner habe ich noch eine 32-Bit-Version. Dort wird aber auch nichts angezeigt. Die 64-Bit-Variante habe ich leider nicht herumliegen.

Ziel ist das zwar die WM_HOTKEY-Message, um scrollen zu ersparen, kann man aber auch gleich alle Keyboard-Events erfassen

Eher als Verzweiflungstat öffne ich einfach mal den Sysinternals Process Monitor. Da sollte man doch auch etwas sehen können.

Ich habe weder einen Screenshot noch den genauen Dateiname aber es war Macrium Reflect, das ich vor einer Weile zum Klonen einer Festplatte auf SSD verwendete. Die zwei oder drei Hintergrunddienste habe ich zwar deaktiviert, aber wohl etwas übersehen.

In den Einstellungen war auf die Schnelle nichts in Richtung Global Hotkey zu finden aber nachdem ich das Tool nicht allzu oft brauche, kann es auch einfach deinstalliert werden – und siehe da: noch während die Deinstallation funktionierte die Tastenkombination wieder 🙂

Falls jemand mal eines braucht – hier gibt es nun (je nachdem, wie es umgebrochen wird auch zwei oder nicht ganz) eine ganze Zeile voller „My“s:

µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ

Achja: Seit Windows 10 kann ich nun auch endlich meinen Nachnamen vernünftig in groß schreiben – machte man aus dem kleinen ß früher noch ein SS, kann man nun mit Strg+Alt+Shift+ß ein großes „Eszett“ erzeugen: ẞ

Wirklich gebracht habe ich es allerdings noch nicht.