Resistorbator.

Egal ob Ingenieur oder Bastler, jeder kennt das Problem: Man braucht einen krummen Widerstandswert, den es entweder nicht gibt, das entsprechende Fach im Sortierkasten leer, das Bauteil in der Library nicht vorhanden oder er schlichtweg mit der Menge 1 auf der Teileliste erscheinen würde.

Alternativen und Inspiration

Bisweilen habe ich dafür entweder Zabex‘ Widerstandssuche oder „Widerstand ist zwecklos“ von Sascha Müller zum Hagen verwendet. Beide Tools funktionieren, können oder machen aber nicht immer das, was ich will.

Mit dem Tool zum Berechnen von Komparatoren wuchs die Idee oder vielmehr Wunsch, einen Werkzeug zu schreiben, das das Jonglieren von Widerständen übernimmt.

Die Geburt

Angefangen, liegengelassen, weiter programmiert und frustriert über die Performance zum erzeugen der Widerstandskombinationen wurde der Code immer wieder angefasst und in die virtuelle Ecke gepfeffert. Auch bleib er einfach mal ein Jahr liegen. Bis mich die Wut wieder gepackt hat und einem Kollegen das Problem beschrieben habe – und er prompt eine Lösung fand die flitzte.

Die Entwicklung erfolgt nach dem Standard „das wird später schön gemacht“. Sprich: das Frontend ist funktional unästhetisch und nicht sehr intuitiv. Die Code-Qualität lässt vermutlich selbst hartgesottene Javascript-Entwickler erschaudern.

Aktuell (Stand 30.01.2023) kann die Anwendung Ersatzwiderstände und Spannungsteiler ermitteln, die Flexibilität und Aufarbeitung insbesondere bei der letzteren Funktion ist noch im Entstehen.

Ausprobieren

Angeschnallt? Sitz in aufrechter Position und Tisch nach oben geklappt und verriegelt?

https://hobbyelektronik.org/resistorbator/

Der Schnellstart:

  1. Im Tab Konfiguration eine Voreinstellung (z. B. „Reichelt Yageo 0603 [E6]“) auswählen und Übernehmen oder eine Widerstandsreihe generieren lassen
  2. In einen anderen Tab wechseln und spielen

Gibt man beim Ersatzwiderstand zusätzlich einen Constraint (Spannung oder Strom) an, kann man die Auswahl der generierten Kombinationen auf die tatsächliche Verwendung einschränken. Purzeln beim ersten Versuch keine Werte heraus, einfach mal mit den Kombinationen spielen.

Beim Spannungsteiler ist es ähnlich, hier sollte man sich je nach Länge der Widerstandsliste bei den Kombinationen bescheiden halten, da die Anzahl der möglichen Kombinationen mit jedem Abgriff „explodieren“.

Der Name

Kurz, prägnant und vielleicht ein bisschen provokant (oder zumindest pubertär) könnte man den Namen bezeichnen. Aber auch ChatGPT kann sich ohne große Umschweife „vorstellen“, was gemeint ist:

Ich habe ein Programm namens „Resistorbator“ geschrieben. Was könnte dessen Funktion sein?

Es ist schwer zu sagen, ohne weitere Informationen. Basierend auf dem Namen könnte „Resistorbator“ ein Programm sein, das mit Widerständen und anderen elektronischen Bauteilen arbeitet. Es könnte Berechnungen durchführen, Schaltungen simulieren oder Daten sammeln und analysieren.

chatGPT

Ok, man könnte genauso zu Wahrsagern gehen, da dürfte ähnliches rauskommen. Auf die Frage hin, ob der Name kindisch sein oder als anstößig interpretiert werden könnte, sagt die Software:

Der Name „Resistorbator“ könnte als kindisch oder unprofessionell empfunden werden. Es hängt jedoch davon ab, in welchem Kontext das Programm verwendet wird und wer die Zielgruppe ist. Möglicherweise wäre es besser, einen neutraleren oder beschreibenderen Namen zu wählen, um Missverständnisse zu vermeiden.

chatGPT

Ziel erreicht.

Pläne & Ideen

Es gibt noch einige Ideen, die umgesetzt werden sollen. Hier eine Auswahl ohne bestimmte Reiohenfolge:

  • Speichern von eigenen Widerstandlisten (per localStorage)
  • Filtern von Widerstandslisten (inkl. E-Reihen)
  • Spannungsteiler: Definieren möglichen der Kombinationen pro Abgriff
  • Spannungsteiler: visuelle Aufarbeitung und mehr Details
  • Berechnen von Widerständen für Spannungsregler
  • Berechnung von Komparatorschaltungen
  • Berechnungen von einfachen RC-Filtern
  • später: Projekte. Angabe von mehreren Ersatzwiderständen/Spannungsteilern/… und Optimierung dieser auf eine möglichst kleine BOM

Der Partyfinanzausgleich

Eine Feier und jede(r) bringt etwas mit. Später sollen die Kosten geteilt werden und schon geht die Rechnerei los: Betrag x von a an b, Betrag y von b an c, Betrag z von c nach a. Allerdings sind a zwei Personen, haben für ebenso viele Personen gegessen und es wäre sinnlos, zweimal Geld zu überweisen.

Klar, kann man das einfach und klassisch mit Bleistift und Papier machen, aber warum nicht einfach den großen Taschenrechner arbeiten lassen? Also kurz ein Javascript zusammengetippt, das die Aufgabe übernimmt:

var teilnehmer = [
    {"name" : "Mila/Adam", "ausgaben" : 30, "esser" : 2},
    {"name" : "Emilia/Noah", "ausgaben" : 20, "esser" : 2},
    {"name" : "Leni/Felix", "ausgaben" : 35, "esser" : 2},
    {"name" : "Mira/Leon/Sophia", "ausgaben" : 10, "esser" : 3},
    {"name" : "Emil", "ausgaben" : 5, "esser" : 1 },
]

var transfer = [];
teilnehmer = teilnehmer.sort((a, b) => a.ausgaben - b.ausgaben);
var ausgaben = teilnehmer.reduce((prev, curr) => prev += curr.ausgaben, 0);
var ausgabenpp = ausgaben / teilnehmer.reduce((prev, curr) => prev += curr.esser, 0);

console.log("Ausgaben Insgesamt:", ausgaben, "Euro, pro Esser:", ausgabenpp)
teilnehmer.forEach(p => p.ausgaben -= ausgabenpp * p.esser)
teilnehmer.forEach(p1 => {
    if(p1.ausgaben < 0)
    {
        var p2 = teilnehmer.find(a => a.ausgaben > 0);
        if(p2 != undefined)
        {
            transfer.push(Math.round(-p1.ausgaben * 100) / 100 + " Euro von " + p1.name + " an " + p2.name);
            p2.ausgaben += p1.ausgaben;
            p1.ausgaben = 0;
        }
    }
});

console.log("Überweisungen:", transfer);
console.log("Betrag nicht ausgeglichen für:", teilnehmer.filter(p => p.ausgaben != 0));

Oben kommen die Teilnehmer, Ausgaben und die „esser“ rein, es purzeln die Beträge, die Transaktionen und was übrig geblieben ist (was bis bis auf Rundungsfehler leer bleiben sollte) heraus:

Ausgaben Insgesamt: 100 Euro, pro Esser: 10
Überweisungen: [
  '5 Euro von Emil an Mila/Adam',
  '20 Euro von Mira/Leon/Sophia an Mila/Adam',
  '15 Euro von Mila/Adam an Leni/Felix'
]
Betrag nicht ausgeglichen für: []

Kann man sicher eleganter lösen, aber: ?‍♂️

Ist der Vogel abgehoben?

Werbekunden haben keinen Bock auf den Heckmeck? An den digitalen Pranger! Der blaue Haken? 20$? 8$? Kostenloses Insulin für die Amis! Oh nein, das war nur ein Parodie-Account. Der Börsenkurs Parodie-Opfers? Mehrere Milliarden USD Verlust. Redefreiheit? Redefreiheit! Außer für die, die einen Parodie-Tesla- oder -Musk-Account erstellen. Die werden gebannt.

Puh, was hat Twitter als Plattform und deren (noch?-)Mitarbeiter für einen Ritt. Erst einmal die Hälfte entlassen, dann doch wieder welche zurückholen um dann auf „hardcore“-Arbeit einzustimmen und ein stay-or-go-Commitment einzufordern.

Das Ganze in nur wenigen Tagen.

Manchmal frage ich mich, ob es nicht besser wäre, wenn Elon Musk jemanden an seiner Seite hätte, der/die für ihn die Schnittstelle für die restliche Welt spielen könnte. Oder irgendwas mit einem abgelegenen Kloster, ohne (Starlink-)Internet um mal etwas zur Ruhe zu kommen und nicht mit jedem spontanen Ideen Firmen ins Chaos zu treiben. Täte wahrscheinlich ihm und seiner Umgebug gut.

Aber das war nicht der eigentliche Gedanke hinter diesem Blogpost. Dieser ist eigentlich sehr kurz: Ich lehne mich mal so weit aus dem Fenster und gebe dem Laden noch ein halbes Jahr.

Entweder, weil die letzten das Firmengebäude verlassen haben, weil es kein Kapital mehr für den „Streckbetrieb“ mehr gibt (weder durch Werbetreibende, Investoren – keine Ahnung wer aktuell so verrückt ist – oder durch den neuen Boss), durch die nun stagnierende Softwarequalität die Plattform kaputtgehackt wird, es durch den Anstieg Hass, Hetze und Fehlinformationen mehr nationale Sperren geben wird oder die Plattform schlicht durch Abwanderung z. B. nach Mastodon sterben wird. Oder eine Mischung aus alledem.

TODO: Review Mitte Mai 2023.

UART-Logging mit Linux

Eine einfache aber blöde Problematik: Plasterouter stürzen ab und man kann nicht schnell hingehen.

In unseren Flüchtlingsunterkünften stehen Accesspoints mit Freifunk-Firmware herum, genauer gesagt handelt es sich um Xiaomi Mi Router 4A Gigabit Edition.

Gute Preis/Leistung, für um die 25 Euro (zumindest im Frühsommer 2022) bekommt man bei ffmuc zumindest theoretisch um die 90 Mbit/s durch. (Theoretisch, weil ich den Messwert hier via WLAN nicht bestätigen konnte).

Abgesehen von der etwas umständlichen Installation von zuerst OpenWrt (und dem etwas umständlichen jailbreak via OpenWRTInvasion, dem durchklickern durch ein chinesisches WebUI im Router und der Gefahr, dass man eine Version mit inkompatiblem SPI-Flash erwischt oder einer zu neuen Firmware erwischt oder sich das Teil beim Downgrade erst einmal brickt) und dann der Freifunk-Firmware, bei der dann erst einmal kein WiFi funktionierte und man die experimental-Version des images verwenden muss (Vielen Dank für die schnelle und tolle Unterstützung an die ffmuc-Community!) funktioniert das Teil recht gut, bis auf…

…tja, bis auf der Tatsache, dass die Plastikboxen ab und zu abschmieren. Mit crontab lässt sich ein Autoreboot in der Nacht einrichten, in anderen Situationen konnte ich mich über die anderen Knoten zu den teilabgeschmierten durchhangeln und rebooten. Manchmal – und dann natürlich vermehrt an den Standorten an denen sie hinter verschlossenen Türen stehen – knallen die Dinger aber so weg, dass man hinfahren und den Stecker ziehen muss. Noch blöder, wenn es beide machen.

Was macht man in diesem Fall? Natürlich herausfinden warum. Problem: Man kommt über Netzwerk nicht an die Konsole, weil tot. Also muss was externes ran.

Auf das Gehäuse und UART suchen – den es natürlich gibt. 4 Pins, beschriftet, fein:

Die Wege fürs Logging sind vielfältig, der Einfachheit halber wollte ich schon einen OpenLog bestellen – da muss man aber auch wieder fahren um die Daten zu holen und wenn’s dumm läuft ist etwas schief gegangen.

Auf der anderen Seite liegen mehr als genügend Raspberry Pis herum, die den Job übernehmen können.

Schritt 1 für sinnvolles Logging: Heartbeats. Auf dem Knoten kommt eine zusätzliche Zeile in crontab, die jede Minute die aktuelle Systemzeit ausgibt:

* * * * * echo "::Systime:: $(date)" > /dev/kmsg

Auf der Raspi-Seite ist es schon ein bisschen schwieriger – denke ich zumindest. Das Problem sollte eigentlich vorhanden und gelöst sein. Unter Windows kann das Putty super easy, aber es soll Linux und ohne Klickibunti sein. Ein Python-Script dafür zu schreiben ist mir zu blöd. Miniterm? Hm, scheint es nicht zu können. Nach längerer Suche stolpere ich (wieder) über screen – dem Schweizer Taschenmesser, wenn man zu blöd für services ist.

Und es hat auch hier eine Lösung parat, die man sich zusammenbasteln kann. Interaktiv wächst ein Befehl, der erst einmal überhaupt nicht funktioniert, bis die Erkenntnis kommt, dass zuerst die Parameter zur Konfiguration der Session und dann der Pfad zum TTY erfolgen muss. Mit der Zeit und nach einigen Tabs im Browser später ist folgender Kommandozeilenbefehl entstanden:

screen -S mimon -L -Logfile /home/pi/mimon/mimon_%Y.%m.%d_%c.log /dev/ttyUSB0 115200

Dieser startet eine Session namens mimon, aktiviert das Logging in die Logfile nur echt im py home directory mit aktuellem Datum und Uhrzeit für ttyUSB0 mit 115200 Baud.

Flutscht. Nur soll für jeden Tag eine neue Log entstehen. Bei dem Test inkl. Uhrzeit funktioniert das natürlich nicht, weil der String nur beim Start geparst wird.

Ein wenig Superuser-Browsing später ist die Erkenntnis erlangt, dass man die Session-Parameter auch zur Laufzeit ändern kann.

screen -XS mimon logfile /home/pi/mimon/mimon_%Y.%m.%d_%c.log

funktioniert auf der Konsole, als cronjob aber nicht. Zumindest nicht ganz – Datum und Uhrzeit fehlen. Eine Escaping-Runde später funktioniert auch das. Jetzt muss nur noch screen beim Reboot starten. der Befehl von oben – natürlich ebenfalls mit Escaping geht nicht, was vermutlich damit zusammenhängt, dass die Session direkt aufgeht und interaktiv wird. Wieder mit der Hilfe von Stackoverflow (wie entwickelt man heute eigentlich noch offline und wie hat man das früher geschafft?) landet folgende Zeile in crontab:

@reboot screen -dmS mimon -L -Logfile /home/pi/mimon/mimon_\%Y.\%m.\%d_\%c.log /dev/ttyUSB0 115200

…die natürlich wieder nicht funktioniert. Keine Typos, ohne das Escaping funktioniert interaktiv alles. Die erste Idee: Zeit. Keine Ahnung, wann im Bootprozess @reboot loslegt und für die Anwendung auch weniger relevant. Die Lösung: 30 Sekunden warten – das gibt dem System auch Gelegenheit, den NTP zu fragen, welche Stunde geschlagen hat.

Bereit für die finalen Crontab-Zeilen? Let’s go:

@reboot sleep 30 && screen -dmS mimon -L -Logfile /home/pi/mimon/mimon_\%Y.\%m.\%d_\%c.log /dev/ttyUSB0 115200
0 * * * * screen -XS mimon logfile /home/pi/mimon/mimon_\%Y.\%m.\%d_\%c.log

So wird jede Stunde eine neue Logdatei angelegt, wodurch man – auch dank des Graphana-Dashboards – die Crashes recht schnell eingrenzen können sollte.

Mal sehen, wann es wieder soweit ist und was die Logs sagen.

Allerdings könnte es sich erübrigt haben – da vor ein paar Tagen eine neue Firmware ausgerollt wurde.

Man redet nicht über Geld. Lasst uns über Investments reden!

Nein, hier geht es definitiv nicht um Investments selbst, dementsprechend gibt es hier keine Empfehlung für oder gegen ein Produkt – zumindest in finanzieller Hinsicht.

Worum es mir geht, ist der technische oder vielmehr sicherheitstechnische Aspekt – zumindest in dem Umfang, wie ich es mit gefährlichem Halbwissen in Sachen Security bewerten kann.

Die E-Mail

Seit einer Weile habe ich Investmentsparen bei meiner lokalen Bank bzw. vielmehr bei UnionInvestment. Bis vor kurzem war das Teil auch recht ruhig, bis folgende Mail eintrudelte:

Kopf macht „bee-doo bee-doo“:

Mails werden bei mir grundsätzlich als Nur-Text angezeigt, was mehr als nützlich ist, um Spam/Scam/Phishing zu erkennen, also mal ein Blick auf alles klickbare:

  • Absendername passt nicht zur Absender-Mailadresse
  • Domain der eingebetteten Bilder passen nicht zur Absender-Domain
  • Hyperlinks passen nicht zur Absender-Domain
  • Rückfragen-Mailadresse passt nicht zur Absender-Mailadresse
  • Die Mail kommt an meine öffentlich einsehbare Adresse. Mach ich bei wichtigeren Dingen eigentlich nicht (mehr dazu später)

Zum Inhalt:

  • Subject ist reißerisch und unspezifisch, schreit „Klick mich! Klick mich!“ – das machen Spammer/Scammer/Phisher
  • Keine persönliche Anrede. Der Absender kennt mich offenbar nicht – das machen Spammer/Scammer/Phisher (und selbst die schaffen das mittlerweile)
  • Es wartet ein unspezifisches wichtiges Dokument auf mich und ich soll einen Link klicken. – das machen Spammer/Scammer/Phisher

Immerhin sind keine Tippfehler drin. Ich habe keine Zeit und lass die Mail ein paar Tage im Postfach liegen um später nochmal in Ruhe draufzuschauen. Einen Link klicke ich natürlich nicht, dafür hat die Mail einfach zu viele rote Flaggen, finde aber in der Browser History die Domain, auf der ich vor einiger Zeit einen Account angelegt habe.

Nach dem Login gibt es dann doch ein wichtiges Dokument, das allerdings nicht ganz so wichtig ist.

Meine zweckspezifischen Mailadressen

Wie vorhin angedeutet, verwende ich für wichtige Dinge spezifische Mailadressen, die den Absender eindeutig markieren. In etwa wie die Plus-Adressierung, wie sie Google Mail oder Outlook unterstützen, nur dass das bei meinem Hoster nicht geht. Also habe ich Mailforwardings mit sehr spezifischen Namen eingerichtet. Um ein fiktives Beispiel zu nennen: Wäre in Kunde bei der „Fischers Fritze“-Bank, würde ich eine Weiterleitung „von_bank_fischersfritze@“ einrichten. Bei Plusadressierung wäre die Variante „chris+fischersfritze@“, ihr versteht den Punkt.

Nach dem Motto: Was nicht passt wird passend gemacht. Also erst einmal das Telefon geholt, per TOTP-2FA (Zwinkersmiley, siehe später) im Hoster-Backend eingeloggt und eine neue Mailweiterleitung angelegt.

Bei MeinInvest in die persönlichen Daten navigiert, Ernüchterung stellt sich ein:

  • Meine vollständigen Kontaktdaten, Geburtsdatum, Steuer-ID, Geburtsort, Staartsangehörigkeit, Bankverbindung und noch dazu Mailadresse sind sichtbar – ok, letztere habe ich auch beim Login eingegeben, also soweit nicht schlimm. Aber der Rest: SPINNT IHR? DAS IST EIN FESTMAHL FÜR IDENTITÄTSDIEBE!
  • meine vollständige Mobilnummer für 2FA ist sichtbar – ok. ruhig bleiben. WAS ZUM? Jemand, der eine Session geklaut hat, weiß damit, WAS MEIN VERDAMMTER ZWEITER FAKTOR IST und kann IHN DURCH ANKLINGELN AUCH NOCH BEQUEM STEHLEN – ODER EINFACH ANRUFEN „Hallo hier ist $IhreBank, wir müssen Ihr Konto verifizieren und haben einen Code geschickt, sag mal“! HAT MAN EUCH ALS KINDER DIE MILCH GEGEN LACK AUSGETAUSCHT?

Durchatmen. Es wird hoffentlich nicht schlimmer.

Ich klicke also bei der Mailadresse auf Bearbeiten und tippe meine frisch erstellte Weiterleitungsadresse ein. Ding, schon ist die SMS da:

Die 2FA-SMS

Keine Ahnung, ob da im Template vergessen wurde „IhreBank“ durch den Namen meiner Bank oder zumindest UnionInvestment zu ersetzen (zum Verständnis: Dienst-SMS können mit einem Nummernüberdeckenden Namen gesendet werden, ich hab diesbezüglich nix im Telefonbuch), IMHO etwas ungeschickt ist, dass die TAN so ziemlich als erstes in der SMS steht. Manche Telefone zeigen zumindest einen Anriss von Nachrichten im Lockscreen an – würde die Nachricht gefüllt werden à la „Servus, an Ihrem Account wurde eine Änderung der E-Mail-Adresse vorgenommen, wenn Sie dies durchgeführt und beabsichtigt haben, bestätigen Sie dies bitte mit der folgenden mTAN: 123456“, wäre der Bestätigungscode zumindest bei manchen Telefonen hinter die Entsperrmauer verbannt.

Zugegeben an dieser Stelle: Mein Fehler. Solche Nachrichten sollte man im Sperrbildschirm deaktivieren. Dazu kommt, dass mTAN mittlerweile überholt und durch MultiSIM-Attacken mittlerweile ein leichtes Ziel für Identitätsdiebe ist. Wie wäre es mit modernen Verfahren wie TOTP, was komplett vom User getrieben ist und nicht auf ein verbundenes (und damit angreifbares Gerät) beschränkt ist.

Zähneknirschend gebe ich die mTAN ein und das könnte es gewesen sein.

Die (ausbleibende) Benachrichtigung

Ist es aber nicht.

Kurz darauf trudelt eine E-Mail zur Bestätigung der neuen Mailadresse ein. … auf der neuen Mailadresse. AUF DER NEUEN MAILADRESSE.

An die Alte ging nichts. In Sachen Schadensbegrenzung bei einem Accountdiebstahl ist das – diplomatisch ausgedrückt – nicht sehr vorteilhaft. Man bekommt nicht mit, dass etwas passiert ist. Wohlbemerkt bei einer Geldanlage die tendenziell davon lebt, dass man nicht jede Woche reinschaut.

Also im Zweifel: Account weg, Geld weg und vielleicht noch ein bisschen mehr.

Kontaktaufnahme

Eine security.txt ist bei meininvest.de zwar (nur mit https-Protokoll, HTTP-Status 200) erreichbar, hat aber eine Länge von 0 Byte. So war das nicht gedacht, Leute. Ok, mit www. vor der Domain kommt ein 404. Für eine Bank eher weniger cool. Bei union-investment.de schaut man genauso in die Röhre. Muss ich überhaupt noch erwähnen, dass es auf der Website meiner lokalen Bank ebenfalls keine gibt?

Also manuelle Kontaktsuche. Bei meiner Bankniederlassung gibt es unter Kontakt erst einmal nur ein popeliges Formular. In den Untiefen der Seiten finde ich dann doch noch eine Mailadresse zu einem Ansprechpartner für Kundendialog.

Aufschrieb hin (nicht im Umfang wie hier) und ab dafür. Die Eingangsbestätigung mit Hinweis auf eine Weiterleitung an UI kommt einen Tag später, eine Rückmeldung eine weitere Woche später.

Im Groben war die Antwort: mTAN ist zulässig und sicher, die Sicherheit wird regelmäßig bla-bla-bla. An 2FA wird gearbeitet und es wird geplant noch 2022 einzuführen.

Zur nicht idealen Benachrichtigung per Mail: kein Kommentar, gleiches bzgl. security.txt.
Der Vollständigkeit halber: Das anzeigen der vollständigen Mailadresse und Handynummer habe ich in meiner ersten Mail nicht erwähnt.

Vonseiten der lokalen Bank kam zur security.txt die Anmerkung, dass das aktuell nicht geht, aber es ja ein Impressum und eine Beschwerdeseite gibt. Ideal ist anders, insbesondere weil unnötige Hürden bleiben (z. B. für automatisierte Meldungen oder nicht-deutschsprachigen Forschenden).

Ein kleiner Kommentar in der Antwort hat mich allerdings auf Ideen gebracht: Meine Überweisungen vom Giro auf das Sparbuch hat wohl für Erheiterung gesorgt. Es war vermutlich ein Verwendungszweck wie:

Muss jemand das tatsächlich lesen?Ok,hier etwas für den Wortschatz: Als Gummikavalier wurde in den 1930er Jahren ein Schwimmring bezeichnet

Die nächsten drei Überweisungen sahen dann wie folgt aus:

1/3 Ueberweisungen haben eine Gemeinsamkeit mit dem Internet: Einmal drin, bekommt man Informationen ganz schlecht wieder raus.

2/3 In dem Sinne: Union Investmentlegt bei MeinInvest eher weniger Wert auf Schutz vor Onlinekontodiebstahl. Man bekommt keine Nachricht

3/3 auf die vorherige Mailadresse,dass sie geaendert wurde.Ein entsprechender Hinweis wurde von UI ignoriert. Nachbarschaftliche Gruesse 🙂

Eigentlich hätte ich noch mit dem Einwerfen des Wortes „Sextape“ die manuelle Prüfung triggern sollen. Auch nach etwa 3 Wochen (Zeitpunkt der Erstellung dieses Posts) hat zumindest noch kein Telefon geklingelt.

Wo stehen wir nun?

Nach knapp zwei Monaten (Stand 11.09.2022) sieht’s noch wie oben geschildert aus. (Änderung der Mailadresse habe ich allerdings nicht noch einmal getestet)

Nach der erhaltenen Rückmeldung (26.07.2022) könnte sich eigentlich niemand mehr über eine Veröffentlichung beschweren – auch sind die gefundenen Fehler nicht besonders kritisch, bieten aber unnötige Angriffsfläche für Accountdiebstahl und weiteren Missbrauch von verifizierten Daten.

Da sich dieser Aufschrieb jedoch von der ursprünglichen Meldung unterscheidet, habe ich mich für Responsible Disclosure entschieden, also vor der Veröffentlichung eine Möglichkeit zur Reaktion anzubieten.

Eine entsprechende Mail ging am 11.09.2022 mit einer Frist zum 19.09.2022 und dem Angebot einer einmaligen Verzögerung raus. Ja, das ist kurz, mit dem Vorlauf der ursprünglichen Inkenntnissetzung IMHO aber lang genug. Kurz nach dem Versand kam eine OOO-Benachrichtigung mit Rückkehr zum 12.09., bedeutet: Die Mail ist angekommen, und einer rechtzeitigen Reaktion meines Ansprechpartners stand nichts im Wege.

Nachdem auch am 20.09.2022 keine Rückmeldung erfolgte, wurde der Artikel mit leichten Modifikationen (dieser Abschnitt, hinzugefügter Angriffsvektor für 2FA) veröffentlicht.

Mal sehen, ob das Telefon doch noch klingelt.

Kommt ein Oszilloskop von Saleae?

Wer mich kennt weiß, dass ich ein großer Fan von Saleae Logic Analyzern bin. Auch wenn in der Logic 2 Software IMHO noch einige wichtige Features, gerade hinsichtlich der Dokumentation, fehlen, wächst und gedeiht die Software ganz ordentlich.

Eher durch Zufall habe ich nun entdeckt, dass die neue Version endlich wieder Automatisierung unterstützt, lediglich beim Blick in die Dokumentation gab es ein kurzes Stutzen – bei einem Screenshot zu „Finding the Serial Number of a Device“ ist das Menü zur Auswahl der Demo-Geräte zu sehen, darunter ein Eintrag „[Demo] Mso“:

Auszug aus der offiziellen Automation Documentation, abgerufen am 29.07.2022

Huch? Jeder, der in Sachen Elektronik bzw. Messtechnik bewandert ist, kennt diese Abkürzung: Mixed Signal Oscilloscope.

Auch wenn die Logics (oder Pods, wie sie vom Hersteller genannt werden) Analog sampeln können, gibt/gab es bis dato keinen Scope-View. Zum einen Schade, zum anderen aber auch verständlich: mit der -3 dB-Bandbreite von lediglich 5 MHz kann man erstaunlich wenig reißen – besser als die meisten Hosentaschen-Oszis wäre es allgemein. Aber irgendwo kann ich den Ansatz auch entstehen: Es ist eher ein schneller Logger als ein langsames Oszi, zudem muss man beachten, wo die Software her kommt.

Nichts desto weniger wäre der Schritt in Richtung Oszilloskop gar nicht so abwegig, auf Seiten des digitalen Pfad ist Know-How vorhanden, in Sachen Software auch – durch die Analog-Funktionalität der aktuellen Generationen ist auf jeden Fall schon mal ein Schuh in der Tür.

Müsste ich einen Tipp abgeben, würde ich auf einen auf einen Angriff in Richtung 3000er-Serie von Pico Technology tippen, also 2-4 Kanäle, 100 MHz, 1 GS/s und um 10 bit tippen. Aber das ist natürlich reine Spekulation.

Mal schauen, ob und wenn ja was da kommt.

Nachschlag vom 30.08.2022:

Ein Vögelchen kam mit folgendem Bild aus den Anwendungsressourcen aus einer aktuellen Logic-Installation (2.3.58) zugeflogen:

Also schon einmal vier Kanäle und eine Farbgebung und -reihung der Kanäle, die mich an die der großen Hersteller erinnert.

Offener Treffpunkt. Mit verschlossener Tür. #vshbleibt

Eher durch Zufall habe ich diese Woche gelesen, dass das Verschwörhaus in Ulm ein Problem hat.

Wer es nicht kennt: Das Verschwörhaus ist bietet Raum und Räumlichkeiten für Hacker, Maker, Breaker, und natürlich alle anderen – eben für Menschen wie du und ich. Der Name ist eine Anspielung auf das Schwörhaus, eines der Wahrzeichen in Ulm – und nur einen Steinwurf – oder vielmehr einen Hop im WLAN – entfernt.

Was wohl schon länger gebrodelt hat, ist nun wohl leider final eskaliert. Der SWR, Netzpolitik.org und der Tagesspiegel (hinter Paywall, daher nicht verlinkt) berichteten. donau3fm hat ebenfalls eine (Stand heute) in meinen Augen eine „gute“ Zusammenfassung.

Die Kurzfassung: Die Stadt hat vieles über die Köpfe des Vereins hinweg entschieden, das Image ohne Beteiligung (aus)genutzt und hat auch den Namen als Marke zur Anmeldung gebracht – ohne das Wissen der Vereinsmitglieder. Nachdem nun das zweite Mal – scheinbar ohne Ankündigung – die Schlösser des Hauses getauscht wurden, ist es nun wohl Schluss. Wenn man den Berichten Glauben schenken darf, ist das Verhalten der Stadt gegenüber den ehrenamtlichen, die nicht nur den Verein aufgebaut, sondern auch Leben – nicht nur ins Haus, sondern auch die (städtische) Digitalisierung – gebracht haben gelinde gesagt mehr als enttäuschend.

Als Außenstehender steht mir natürlich nicht zu, über Beteiligte zu urteilen. Fingerpointing oder Shitstorms bringt niemanden weiter. Das Kind ist im Brunnen und das Vertrauen mutmaßlich unwiederbringlich verloren. Ob und wie es mit oder gar in der Stadt Ulm weitergeht – ich bin gespannt.

Was bleibt ist Unterstützung – mit der Zeichnung des Offenen Briefes vorerst zumindest moralisch, für alles weitere werde ich meine Augen und Ohren offen halten.

Falls das hier jemand von den „Verschwörern“ liest: Lasst euch nicht von dem entstandenen Ärger und Frust einbremsen oder aufhalten. Ich bin mir sicher, dass der Neuanfang gelingt, ihr die Traktion aus den bisherigen Erfolgen mitnehmt, die negativen Erfahrungen in etwas Positives umwandeln könnt und das „Verschwörhaus 2.0“ ein gutes Upgrade wird 🙂

Auch LCDs können einbrennen.

Nachdem in letzter Zeit einmal mehr das Thema hochgekommen ist, dass LCDs/TFTs nicht einbrennen können, habe ich mich nun doch genötigt gefühlt nach den uralten Fotos auf dem Rechner zu suchen. Zugegeben, es ist wirklich aus grauer Vorzeit und es hat sich einiges getan, aber hier der Beweis:

Das Panel war schon einige Monate (wenn nicht sogar Jahre) aus der Anwendung raus und hier an einen einfachen LCD-Treiber angeschlossen, der es zum Leben erweckte. Nahm man dem Controller den Strom weg, die Hintergrundbeleuchtung aber weiter an, entspannten sich die Flüssigkristalle und sie gingen in den bevorzugten Zustand, der dem lange Zeit angezeigten Inhalt entspricht. Links oben sieht man sehr deutlich „Controller Interface“, links oben kann man das Wort „Agit“ erkennen.

Aus einer Serienaufnahme habe ich nochmal einen kurzen Clip gebastelt – man achte darauf, wie rechts oben eine Buttonleiste erscheint – „Config“, „Cal“ (?), „Gauge“, „Trend“, „Case“, „Sterile“, „Alarms“:

Mit den Angaben schwanke ich irgendwo zwischen Industriesteuerung und Medizinequipment. Unter dem vollständigen Fenstertitel „NBS Local Controller Interface“ konnte ich online leider nichts finden.

Code-Templates für AVR-Register

Warum sollte man sich für Dinge abmühen, die der Computer viel besser kann als man selbst?

Dieser Gedanke rückt viel zu oft in den Hintergrund. Auch wenn ich mich selbst immer wieder dabei erwische, Dinge manuell zu machen (weil man es halt doch nicht so oft braucht), poppt immer wieder folgender Gedanke hoch:

Wenn man einmal 2 Stunden für die Automatisierung einer 10-minütigen Aufgabe investiert, hat es sich nach 12-maliger Benutzung schon gelohnt. Mal ganz zu Schweigen von Flüchtigkeitsfehlern, Wiederholbarkeit, etc.

Mir war schon länger bekannt, dass Microchip Studio Definitionsdateien für Register mitbringt, das erste Mal aktiv genutzt habe ich sie beim updizombi (den ich im Nachhinein lieber updipuppeteer genannt hätte, weniger apokalyptisch), auf dessen Hilfsscript ein Tool entstand, das viel Fleißarbeit abnimmt:

Für die bessere Lesbar- und Wartbarkeit beim Schreiben von Registern habe ich mir angewöhnt, die Namensdefinitionen der Bits zu nutzen. Dafür liegt dann mindestens die Register Summary des Chips auf dem zweiten Bildschirm:

Das Abtippen ist reine (nervige, aber sinnvolle) Fleißarbeit. Nach einigen Jahren hat dann doch die Faulheit – oder Motivation? – gesiegt und es ist ein zusammengehacktes Script entstanden, das die beim Microchip Studio mitgelieferten Definitionsdateien in Codetemplates umwandelt.

Die Ausgabe sieht dann wahlweise so

...
/// Module USART - USART
/// Register group USART0 - USART
/// Register UDR0 - USART I/O Data Register 0
UDR0 = ;
/// Register UCSR0A - USART Control and Status Register A
UCSR0A = (0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
/// Register UCSR0B - USART Control and Status Register B
...

oder so

...
/// Module USART - USART
/// Register group USART0 - USART
/// Register UDR0 - USART I/O Data Register 0
UDR0 = 
/// Register UCSR0A - USART Control and Status Register A
UCSR0A = 
      (0<<RXC0) // USART Receive Complete
    | (0<<TXC0) // USART Transmitt Complete
    | (0<<UDRE0) // USART Data Register Empty
    | (0<<FE0) // Framing Error
    | (0<<DOR0) // Data overRun
    | (0<<UPE0) // Parity Error
    | (0<<U2X0) // Double the USART transmission speed
    | (0<<MPCM0); // Multi-processor Communication Mode
...

aus.

Den Code und Details zur Benutzung gibt es im Git-Repository. Mal sehen, welche Tülchen in dem Dunstkreis sonst noch entstehen.