╔═════════════════════════════════════════════════════════════════════╗
║ neues curl in altem kernel                                          ║
║ Donnerstag, 17. Oktober 2019, 01:16                   errorpriester ║
╚═════════════════════════════════════════════════════════════════════╝
Ich hab hier ein Gerät (ARMv5) in meinem LAN daß aus Gründen™ ein antikes Arch-Linux mit Kernel 2.6.35 (2010) fährt.
Der Rest der Software ist daran angepasst und so frisch es damals ging. (glibc 2.16 von 2012 und openssl 1.0.0 von 2014).
Dieses Gerät muss mit einem aktuell gehalten Server über https kommunizieren.
Auf dem Server habe ich gerade ein paar antike Cypher deaktiviert, weswegen diese Kommunikation nun fehlschlägt.

Mein naheliegender erster Gedanke war curl+openssl zu aktualisieren und aktuelle Verschlüsselung zu benutzen.
Das ist die saubere Lösung und natürlich die lästigste.
Variante zwei wäre, einen der alten Cypher wieder zu reaktivieren. Nun bin ich kein Security-experte, aber es wird schon seinen Grund haben, daß da normalerweise von abgeraten wird.
Variante drei wäre, Klartext zu reden - immerhin ist die Kommunikation komplett lokal und inhaltlich unkritisch. Dennoch fühlt sich das falsch an, bei einem update zu downgraden.

Also versuchen wir die erste Variante und aktualisieren zuerst OpenSSL. Klar, über die Paketverwaltung.
wget ...
pacman -U ...

und schon geht alles kaputt.
ssh, wget, curl, wpa_supplicant, pacman,... alles. OK, das kam nicht soo überraschend, aber wie bekomme ich denn jetzt die alte lib wieder zurück aufs Gerät um handlungsfähig zu bleiben?

Ah, ich weiß! Klartext reden! Einfach per netcat, ist ja für den Moment egal. Und ich mag netcat.

Also auf 'nem anderen PC das backup-image von vorher einhängen (Jap, hab 'n Backup, bin lernfähig):
tar c * | nc -l -p 42024

und auf dem Gerät:
nc 192.168.42.23 42024 | tar x

Pustekuchen, kein netcat installiert. Mist. Ich war schon kurz davor irgend 'ne Krücke in 10 Zeilen python hinzurotzen, aber zum Glück geht es weit eleganter, denn netcat ist auch nur ein fancy Frontend für etwas, was der Kernel auch selbst kann:
tar x </dev/tcp/192.168.42.23/42024


Whoa, praktisch! Also fix wieder zurück auf den alten Stand und OpenSSL 1.1.1 aus den Quellen kompilieren.
Auf besagtem Device, (ein Freescale i.MX233 454MHz mit 64MB RAM) dauert das, aber was solls, es lief immerhin sauber durch.

Gut, openssl ist also in Version 1.0.0 und 1.1.1 vorhanden, das müsste passen, kann ich ja nun curl updaten.
Am besten auch aus den Quellen. Aber irgendwie kommt der beim Kompilieren durcheinander.
Configure sagt mir, daß die korrekte OpenSSL-Version benutzt wird, aber make wirft einen Fehler, der auf die falsche (1.0.0) API hindeutet.

Nach zahllosen, zeitfressenden und ergebnislosen Versuchen habe ich aufgegeben.
Ich bin auch einfach nicht so drin in der C-Welt und muss bei den meisten Flags und Schalten raten. Zum Glück kann curl auch diverse andere SSL-Bibliotheken verwenden, daher ist der nächste Versuch WolfSSL (die Entscheidung fiel relativ wahllos, hauptsache keine weiteren Abhängigkeiten).

Für WolfSSL genügte es, die Quellen zu laden und
./configure
make
make install


Anschließend konnte ich mit den richtigen Parametern (auch das erforderte einige Versuche) sowohl configure als auch make von curl sauber durchführen. Und zwar so:
LDFLAGS="-Wl,-rpath,/lib" LD_LIBRARY_PATH=/usr/local/lib \
./configure --with-wolfssl=/usr/local/lib --without-ssl \
  --disable-ldap     --disable-ldaps    --disable-rtsp     --disable-proxy    \
  --disable-dict     --disable-telnet   --disable-tftp     --disable-pop3     \
  --disable-imap     --disable-smb      --disable-smtp     --disable-gopher   \
  --disable-manual   --disable-pthreads --disable-threaded-resolver

Und siehe! Curl ist im Jahr 2019 angekommen und ich brauche keinen schmutzigen Workaround für meinen https-zugriff auf den Server. Sehr gut.
Warum das jetzt mit genau dieser Kombination ging weiß ich zwar nicht, insbesondere ist mir nicht ganz klar, warum ich threading abschalten musste, aber die ganze Odysee dauert nun schon fünf Tage und ich habe keine Lust mehr, dem auf den Grund zu gehen. Es läuft. Das genügt.

Ich bin gespannt was das wird, wenn mir dann in 2-3 Jahren SSH um die Ohren fliegt...
╔═════════════════════════════════════════════════════════════════════╗
║ SolveMedia                                                          ║
║ Donnerstag, 28. März 2019, 23:03                      errorpriester ║
╚═════════════════════════════════════════════════════════════════════╝
Ich habe gerade gemerkt, wie ich unbewusst Fehlerrouting betreibe. Kennst du die Captchas von SolveMedia? (is eig. egal)
Die Ladefunktion timed manchmal out und dann gibts n fallback-captcha, was immer "adventure awaits" ist.
Immer wenn ich nun so ein Captcha habe, daß nicht instant läd, tippe ich schonmal los... wieder ne Sekunde gespart.
Das passiert übrigens immer, wenn es ein "sponsored captcha" ist. Da is dann normalerweise ein Markenlabel zum abzutippen, aber mein Adblocker verhindert das.
Ich vermute mit dieser Information kann man ResolveMedia-Captchas knacken, aber ohne jetzt weiter recherchieren zu wollen vermute ich mal, daß die eh schon geknackt sind.
╔═════════════════════════════════════════════════════════════════════╗
║ Crosscompiling                                                      ║
║ Mittwoch, 30. Januar 2019, 22:58                             inkeso ║
╚═════════════════════════════════════════════════════════════════════╝
Aargh, Crosscoding ist Mist. Ich hacke auf Arbeit R. Im Moment (wegen Redesign dieser Seite) privat aber PHP/JS/CSS/HTML. In der akuten Situation JS.

Bevor Fragen kommen: Diese Seite benötigt kein JS und funktioniert ohne dieses auch identisch (außer Teile vom Museum vielleicht). Die Skripte machen nur das Menu dynamischer, die Bilder Klickbar, ein bisschen Deko für den sonst leeren Seitenbereich und Syntaxhighlighting.

Nun schrob ich gerade im JS ein paar Funktionsdefinitionen runter, zuweisend, also in der Form

var tuwat = function(s) {
    ...
}


in R mache ich das genauso, aber per Konvention ist der Zuweisungsoperator nicht = sondern <-.

tuwat <- function(s) {
    ...
}


Gerade habe ich locker ne halbe Stunde gebraucht um herrauszufinden, was diese bescheuerte Fehlermeldung soll und warum mein Script nich läuft. *seufz* *facepalm* #dankegehirn
╔═════════════════════════════════════════════════════════════════════╗
║ Dateierweiterungsberichtigungsaufruf                                ║
║ Dienstag,  7. August 2018, 14:03                      errorpriester ║
╚═════════════════════════════════════════════════════════════════════╝
Es passiert mir in letzter Zeit sehr oft, daß ich Excel-Dateien bekomme. Ich glaube, daß ich Excel-dateien bekomme. Was ich bekomme sind Textdateien mit der Endung .xls. Und das ist eine furchtbare Unsitte. Ich habe nichts gegen Excel, als Viewer für kleine bis mittelgroße Tabellen kann man das schon nehmen. Ernsthaft arbeiten kann bzw. will ich damit nicht, aber darum geht es gar nicht.

Natürlich müssen Onlinetools wie ID-Konverter tabellarische Daten einlesen wie ausgeben. Über den Krampf das für die jeweilige Seite korrekte Eingabeformat hinzubekommen dreht sich dieser Rant auch nicht, das bin ich gewöhnt und solange dasteht, was sie haben wollen (nein, das ist leider nicht immer der Fall) bekomme ich das auch hin.

Und dann kommt die Ausgabe. Schlimmstenfalls als HTML-Tabelle über meherere Seiten, also völlig wertlos bzgl. Weiterverarbeitung. Bestenfalls als Datei. Das Format ist mir da egal, ob XML, JSON, CSV, BED, GFF, VCF oder eins der hundert anderen Standardformate. Krieg ich schon eingelesen, kein Ding. Meinetwegen auch XLS, XLSX, ODS oder DBase III. Aber verdammt nocheins, bezeichnet die Datei korrekt.

Ja, Excel öffnet Tab-separated Text ohne Kommentar, wenn die Datei .xls hinten heißt. Aber mein Excel-Parser für R haut mir das dann (zu recht!) um die Ohren. Und auch bei Excel kommt es zu Problemen, sobald mal der Dezimaltrenner ein anderer ist oder ein String aussieht wie ein Datum. Also immer.

Ich glaube, die meisten Dienste bieten "Results as Excel-file" an, weil sie Angst haben, daß die armen Nutzer mit einer .csv-Datei überfordert sind. Obwohl Excel auch die problemlos öffnet und man dann sogar noch Importoptionen anpassen kann.

Das ist doch völliger Stuss! Lasst das alle mal sein. Nennt es .txt wenn es Text ist. Oder .csv oder von mir aus auch .tsv wenn es nicht comma- sondern tab-delimited ist.

Ja, ich höre die Schlauberger schon unken, »Hurr Durr, eine Datei an der Endung zu erkennen ist naiv«. Stimmt. Und es ist nun keine unlösbare Aufgabe daraus geworden, aber es ist einfach falsch.

Auch etwas in der Art habe ich schon in freier Wildbahn gesehen und es schmerzt. Sehr.

$ file /tmp/foo.png
/tmp/foo.png: JPEG image data, JFIF standard 1.01


TL;DR: Online-dienste, benennt eure Dateien korrekt, verdammt.
╔═════════════════════════════════════════════════════════════════════╗
║ CUPS – Das Pendel schlägt zurück                                    ║
║ Montag, 18. September 2017, 15:05                     errorpriester ║
╚═════════════════════════════════════════════════════════════════════╝
Ich kann mich noch ziemlich gut an meine ersten Erfahrungen mit CUPS erinnern. Erst fand ich es verwirrend. Dann hab ich es so einigermaßen kapiert und darauf hin fand ich es immer recht solide und gut benutzbar. Bei einigen Druckern (gerade alte schwarzweiß Laser) musste man ein wenig fummeln, bis die Grauwerte gut hinkamen, aber so Sachen wie problemlose Netzwerktransparenz gingen schon immer. Jedenfalls fast. Oder in der Theorie. Vor >10 Jahren ging printer-sharing über Samba gefühlt besser als über CUPS. Das ist schon lange nicht mehr der Fall, zum Glück.

Heute gibt es Diensterkennung (avahi / m-DNS / DNS-SD / Bonjour / Zeroconf) und das ist bestimmt für ein unbetreutes Heimnetzwerk 'ne feine Sache. (ich brauche sowas nicht, ich weiß von jedem Gerät was es kann und welche IP es hat). In einem Firmenetzwerk hat der Kram meiner Meinung nach auch nichts verlohren, aber da das ja vom Client ausgeht, kann man da auch nicht viel machen.

Gerade habe ich auf Arbeit einen alten Rechner wieder in Betrieb genommen. Es soll eine einfache Surfmaschine werden, aber man soll auch drucken können und zwar auf exakt 2 definierten Druckern. Ich entschied mich für Linux Mint. Das ist schnell installiert, die wichtigsten Sachen sind mit bei und nach ner Stunde lief die Kiste auch zufriedenstellend. Fast.

Denn es waren automagisch so rund 15 Drucker vorhanden. Die beiden, die ich wollte, waren nicht dabei, aber die mit einzubinden war kein Problem. Anfangs dachte ich mir nichts dabei und hab die 15 restlichen Drucker einfach gelöscht. Das hielt dann exakt einen reboot. Dann hat CUPS wieder fröhlich Netzwerkdrucker gesucht und ungefragt zu meiner lokalen Druckerliste hinzugefügt. Dieses Verhalten ist nicht akzeptabel. Ich finds ja cool, daß die Netzwerkdrucker gefunden werden. Aber bitte lass sie mich trotzdem von Hand hinzufügen und mach nicht so einen Scheiß.

Als ich das realisiert hab ging natürlich die Jagd los. cupsd.conf?

[...]
Browsing On
BrowseLocalProtocols dnssd
[...]


sieht doch vielversprechend aus, ändern wir das mal in "Off" und "none". Drucker löschen, reboot, Argh. OK, das bezieht sich wohl auf das Rumposaunen lokaler Drucker. Ich habe dann ein bisschen halbherzig im Internet geguckt und finde es erstaunlich, wie wenig man in der richtigen Richtung findet. Nahezu alle Treffer behandelten "Hilfe mein Komputer findet meinen Drucker nicht". Bei den paar "richtigen" Treffen waren auch nur obskure Tipps dabei. Einer schlug sogar vor, die entsprechenden Ports zu blockieren. Die richtige Lösung ist natürlich so einfach wie rigoros. Diesen neumodischen Schnickschnack braucht ja doch keiner:

systemctl disable avahi.service
systemctl disable cups-browsed.service


So. 2 Drucker. Fein. Und jetzt gehe ich den User 10.10.x.252 suchen und erzähl ihm mal, wie er seinen Rechner zu konfigurieren hat.
╔═════════════════════════════════════════════════════════════════════╗
║ PCI != PCI                                                          ║
║ Donnerstag, 16. Februar 2017, 17:09                   errorpriester ║
╚═════════════════════════════════════════════════════════════════════╝
Gestern habe ich einen leicht betagten Rechner für die Verwendung als Low-cost-Freizeit-DJ-Rechner hergerichtet. Nichts dickes, ein alter AMD 5050e, 4 GB RAM, Gehäuse mit Griff (!). Natürlich benötigt man fürs DJing bestenfalls 'n anständigen Controller+Sounddevice mit mehr als einem Ausgabekanal in Stereo. Oder (low-cost) mind. 2 Soundkarten, wovon eine schon qualitativ was taugen sollte, damit man nicht so viele Störgeräusche hat. In besagten Rechner stecke ich also zusätzlich zur onBoard-Soundkarte noch eine Creative Labs® SoundBlaster™ PCI128 aus der Bastelkiste. Unter Windows >XP hat man keine Chance mehr diese Karte zu benutzen. Unter Linux: Kein Problem (Erfahrung!).
Also ein minimales System installiert (Archlinux mit X-Server und Mixxx, mehr brauchts nicht) und... nanu, es hängt und es tönt nicht. Und los geht die wilde Fehlersuche. Schnell wird klar: die SB-PCI128 macht Probleme. „Device got stuck“ und „Buffer underrun“. Kein Puls, kein Ton. Aber sauber erkannt wurde die Karte, alle Kernelmodule wurden korrekt geladen und in dem anderen Rechner mit fast dem gleichen System lief es doch letztens noch wunderbar. WTF?!

Nach einigem Gesuche und Rumproben war ich schon wieder frustriert und verzweifelt genug, den Rechner in ein Pentagram aus Kerzen zu stellen, meine Robe anzuziehen und... aber eins noch vorher (ohne Aussicht auf Erfolg, einfach um es gemacht zu haben): Ich stecke mal die Soundkarte in den anderen PCI-Slot.
...

... ähm ...!

Echt jetzt? Zwei Stunden am Abgrund der geistigen Zurechnungsfähigkeit und dann liegt es am Slot? Wohl irgend ein DMA-Konflikt oder sowas, ich hätte nicht gedacht, daß das bei PCI auch noch auftreten kann. Immerhin geht's jetzt und sobald ich die Festplatte gegen eine mit etwas besseren SMART-Werten getauscht hab kann die Party steigen...


Nachtrag: Daß ich auch immer aufhöre rumzuspielen, wenn alles geht...
Natürlich ist es so absurd, wie es mir von vornherein vorgekommen ist. Nicht die logische Seite vom PCI-Steckplatz ist das Problem gewesen sondern irgend etwas Physikalisches (verschmutzte/korrodierte Kontakte oder so), denn nach dem Transport des Rechners wurde die Soundkarte gar nicht mehr erkannt. Aus purer Verzweiflung steckte ich sie also noch einmal zurück auf den 1. Port und siehe: Geht. Mit Ton und Allem. Nach dem Zuschrauben des Gehäuses nicht mehr (das Gehäuse ist so ein altes IBM-Thinkcentre-Gehäuse, bei dem recht wenig geschraubt wird. Auch die Steckkarten können nicht verschraubt werden, sondern werden von einem Bügel gehalten, der wiederum von der Seitwand auf die Slotsblenden gedrückt wird. An sich keine üble Idee. Aber gerade PCI(e)-Karten schraube ich doch schon lieber. Wir wissen nun, warum).
Aber mit ein bisschen Rein-raus-spiel (auch mal zwischendurch den Slot wechseln) gings dann doch wie geplant. Ich werde das mal im Auge behalten.
╔═════════════════════════════════════════════════════════════════════╗
║ Festplattenspaß                                                     ║
║ Donnerstag, 16. Februar 2017, 16:55                   errorpriester ║
╚═════════════════════════════════════════════════════════════════════╝
Ich hatte da also diesen Rechner am Wickel. Nichts besonderes, ein preiswerter Bürorechner (genaue Hardware hab' ich nicht im Kopf), selbstzusammengesteckt von einem Bekannten, der normalerweise weiß was er tut. Testweise war Windows 10 installiert, was problemlos lief aber mangels Lizenz nichtmehr allzu lange. Ich wollte dann irgend ein DAU-freundliches GNU/Linux installieren. Soweit so trivial. Aber dann begegnete mir ein Fehler, den ich noch nicht kannte: Keiner der Live-Pinguine erkannte die Festplatte. Im UEFI wurde sie angezeigt. Windows war darauf installiert und lief. Linux so: „Festplatte? Welche Festplatte?“

Ob ich nun UEFI-Boot oder Legacy-Boot verwende machte auch keinen Unterschied. Ebensowenig der Wechsel zwischen IDE- und AHCI-Modus. Es blieb dabei: Keins der getesteten Betriebssysteme (SystemRescueCD, Mint, CentOS, eLive, Arch) zeigte mir ein /dev/sda oder sonstiges Blockdevice abgesehen vom USB-Stick, von dem das System gestartet wurde. Große Verwirrung, großes Gegrübel.

Inzwischen läuft auf dem Rechner ein Mint daß sogar auf die Festplatte installiert wurde problemlos. Was also war die Ursache? Overclocking! Ich hab dem Anfangs keine Beachtung geschenkt, aber im UEFI war der FSB leicht erhöht. Die CPU und der RAM hatten damit keine Schwierigkeiten, nichts lief instabil, alles Prima. Eben bis auf die Tatsache daß unter Linux dann keine SATA-Platte erkannt wird. WTF?! Ich bin da auch nur drauf gekommen, weil ich aus blanker Frustration irgendwann alle Einstellungen im UEFI zurückgesetzt hab („Load factory defaults“ oder so). Ich habe noch nicht geprüft, ob das bei anderen Mainboards auch so ist, aber mein Fazit bleibt dennoch: Overclocking lohnt sich nicht. Niemals. Für niemanden. Ohne Ausnahme. Gibt nur Ärger. Und wenn man 'n schnelleren Rechner haben will, kauft man bessere Hardware.
╔═════════════════════════════════════════════════════════════════════╗
║ Heute mal was Positives                                             ║
║ Donnerstag, 31. Juli 2014, 23:43                      errorpriester ║
╚═════════════════════════════════════════════════════════════════════╝
Gerade lade ich eine größere Datei auf einen dieser neumodischen Wolkenspeicher (MS OneDrive, aber das tut nichts zur Sache). Ich habe da bei einigen Anbietern Testaccounts, weitestgehend leer, aber für so Unsinn wie 'ne 10GB-Videodatei zeitversetzt zu transferieren kann man das ja mal nehmen, dazu isses ja da. Natürlich kann ich's auch auf meinen Heimserver packen, aber das bandbreitentechnische Nachteile für das Empfangerum.

Ich habe hier 2 Internetleitungen (Kabel'schland (oder wie auch immer die im Moment heißen) mit so um die 16Mbit/s ↓, 1Mbit/s ↑ und Telekom 50 Mbit/s ↓, 10 Mbit/s ↑), zwischen denen ich hier am Rechner umschalten kann, bei Bedarf wird einfach das Gateway geändert (via NetworkManager, aber auch das sollte kaum eine Rolle spielen). Standardmäßig nehme ich die langsamere Leitung, weil sie zum Brausen reicht und an der anderen besagter Server hängt.

Bei >10GB-Upload allerdings stellte sich relativ schnell herraus, daß sich der Upload bei einer effektiven Datenrate von ~90kB/s doch etwas ziehen könnte (ca. 34 Stunden). Das Naheliegendste war natürlich, die andere Leitung zu nehmen, also hab' ich das einfach getan (2 Klicks im NetworkManager-applet) und erwartet, daß der Download abbricht und der laufende Radiostream zumindest einmal schluckauft. Nichts von beidem ist passiert! Wie geil ist das denn? Der Upload (via Webinterface) lief einfach mit grob 9-facher Geschwindigkeit weiter und der Stream lief sauber durch.

Nicht, daß es tragisch wäre, wenn es nicht geklappt hätte, aber es ist schon ziemlich cool, daß laufende Transaktionen in dieser Form trotz wechselnder IP weiterlaufen. Und ein bisschen spooky ist es auch, weil das auch gleich wieder ein Weg ist, sowas zu misbrauchen. Aber für wichtige Sachen nimmt man ja ohnehin lieber keinen kommerziellen Wolkenspeicheranbieter.


Nachtrag:

Natürlich gibt es dann doch noch einen Haken um dem Blogthema gerecht zu werden:

File must be less than 2 GB in size to be uploaded to OneDrive


*seufz* *murmel* knapp 10 Stunden Video, machen wir sicherheitshalber 1-Stunden-chunks:

for i in `seq 0 9` ; do
    ffmpeg -i Caliplex_test.mkv -ss $i:00:00 -t 1:00:00 \
           -vcodec copy -acodec copy Caliplex_test$i.mkv
done


Was tut man nicht alles... ;-)
╔═════════════════════════════════════════════════════════════════════╗
║ Ein klarer Fall von Kopf→Tisch. Auf RTL-Niveau                      ║
║ Mittwoch, 22. Januar 2014, 11:09                      errorpriester ║
╚═════════════════════════════════════════════════════════════════════╝
Ich weiß, es ist arrogant und unerträglich, sich über die Unwissenheit anderer lustig zu machen. Aber ich sage seit Jahren, daß dieser ganze Komputerkram relativ komplex ist und eine komplexe Technologie nunmal erfordert, sich etwas mit ihr zu beschäftigen. Ein großer Teil der aktuell verfügbaren Sicherheitsprobleme kommt daher, daß jeder sich unreflektiert in die Arme komplexer Technologie begeben kann, ohne auch nur zu ahnen, was im Hintergrund passiert.

Natürlich ist auch nicht wünschenswert bestimmte Sachen nur einer Elite oder Minderheit zu überlassen, vor allem wenn es sich um sowas nützliches wie das Internet handelt, aber wenn ich Auto fahren will, mache ich vorher ja auch 'n Führerschein, nicht nur damit ich die Technologie beherrsche, sondern auch für die Sicherheit aller Verkehrsteilnehmer.

Bevor es nun aber zu grundsätzlich wird: Hier ist das Bild, was mir gerade körperliche Schmerzen bereitet hat.

forcing all its children wrapped in a block
╔═════════════════════════════════════════════════════════════════════╗
║ Frytag Abend                                                        ║
║ Samstag, 19. Oktober 2013, 02:08                               eloi ║
╚═════════════════════════════════════════════════════════════════════╝
Und zum Denken Dasselflupp, währen Hahn de-Groet vernarrt.
Sieghen na ein Graus gehievt, nurpen stets die Entge hart.

(Alte Kimbajansche Grauheit. Weißheiten hatten sie nicht)

Monstereuse 4000