Interessant, was da bei Heise steht: der Softwarehersteller Symantec warnt vor der Benutzung eines seiner Produkte, weil vor sieben Jahren jemand die Sourcen gesehen kopiert hat. Es geht ausgerechnet um pcAnywhere, ein Fernwartungs- oder Fernsteuer-Tool für Windows-Rechner.

Folgendes lese ich aus dem Artikel:

  • Bekannte Quelltexte bedeuten in den Augen von Symantec ein Sicherheitsrisiko. Offenbar besteht Sicherheit in dem Fall nur theoretisch: nur weil ein Angreifer den Algorithmus kennt darf der IMHO nicht als kompromittiert gelten. Security by Obscurity funktioniert nicht.
  • Es gibt Sicherheitsprobleme (‚bekannte Schwachstellen‘), offenbar schon seit mindestens sechs Jahren.
  • Die bekannten Löcher sollen jetzt Schritt für Schritt ausgemerzt werden. Jetzt. Schritt für Schritt.

Muss ich mir jetzt Sorgen um die Sicherheit meiner Rechner machen? Immerhin ist da fast ausschliesslich Software im Einsatz bei der Hinz und Kunz die Sourcen lesen können… 8-O

Ich glaube nicht. Zumindest nicht mehr als sonst: natürlich gibt es auch bei Open Source Software immer mal wieder Sicherheitsschwankungen, teilweise sogar drastisch. Aber freie Entwickler müssen sich wirklich Gedanken um Sicherheit machen, da sie sich im klaren sein müssen dass jeder die Quellen sehen kann. Wenn man da auf solche Obscurity-Tricks setzt versaut man sich sehr schnell den Ruf.

Oh, und ich kann es mir nicht verkneifen: nicht-Windows-Betriebssysteme geben einem ausreichend Handwerkszeug um sie zu administrieren und zu benutzen. Auch remote, und wenn es sein muss sogar grafisch. Da muss man kein Geld für ein Tool wie pcAnywhere rauswerfen… :-P

Ich kann mich an Zeiten erinnern, in denen man sich wirklich überlegt hat ob man ein Bild auf dem Bildschirmhintergrund haben möchte, oder ob da vielleicht eine einfarbige Fläche reicht. Damals hat das — zumindest auf meinem damaligen Rechner — einen echten Unterschied gemacht: das Anzeigen kostet Zeit. Erst recht wenn es sich bei dem Bild nicht um ein einfaches Bitmap handelt, sondern zum Beispiel um ein JPG.

Aber die Zeiten ändern sich.

Unter Windows 7 Windows 6.1 dauert die Anmeldung offenbar eine halbe Minute länger wenn man die Ressourcenschonende einfarbige Variante wählt. Microsoft weiss das und bietet einen Patch an, oder wahlweise den guten Rat dass man sich doch auch ein einfarbiges Bitmap oder JPG malen kann, das man dann verwendet…

Was tut Windows in der Zeit? Ist das eine halbe Gedenkminute für die ungenutzten Bilder die ohnehin auf der Platte rumliegen?

Interessanterweise ist ’30 Sekunden‘ in etwa auch die Zeit die mein Notebook mit Arch Linux braucht um zu booten. Und da ist die BIOS-Wartezeit und die Anmeldung schon mit drin: nach einer halben Minute habe ich schon meinen Screen im urxvt vor mir und kann arbeiten… oder so. ;-)

Aber zugegeben: ein Hintergrundbild wird auch geladen. Einmal für den Desktop Manager (Slim) und einmal für den Window Manager (Compiz). Vielleicht würde es ohne Bild auch länger brauchen… :-D

Komische Bewertungen bei eBayIch war etwas irritiert. Der Anbieter hat 212.212 Deals gemacht, und dabei nur 36% positive Resonanz? Oder ist das nicht binär? Haben von den Kunden insgesamt 212.424.212 eine positive Bewertung abgegeben, damit man auf 100100% kommt?

Oder werden da einfach Zahlen wie 212 oder 100 doppelt dargestellt, wenn man ohne Javascript einkaufen will? Wenn ich Skripte wieder zulasse sieht’s anders aus…

Windows-UptimeGerade habe ich zufällig diesen Screenshot wiedergefunden, den ich vor gut einem Monat mal auf einem Windows-Server gesichert habe. Ab sofort muss ich mir wohl abgewöhnen, Windows als instabil zu bezeichnen… Allerdings frage ich mich, wer die Kiste vor 58.494 Jahren installiert haben mag… :-D

DOS und %ERRORLEVEL%, Teil 1Wie schon erwähnt muss ich mich bei der Arbeit mit Windows rumschlagen. Um Sehnenscheidenentzündungen vorzubeugen verschlägt es mich da bisweilen auch in die Kommandozeile. OK, das ist nicht der einzige Grund. Manchmal will man ja aus einem Skript (leider in diesem Fall kein Perl) heraus einfach mal ein system() aufrufen, und da muss man dann halt DOS-Kommandos absetzen.

Jetzt wollte ich etwas kluges basteln, das testet ob ich eine Datei (schreiben|lesen|löschen) kann. Auf anderen Systemen hätte ich dazu auf etwas in der Form

kommando; echo $?

gesetzt, die Ausgabe könnte ich parsen. Ein Kollege hat für DOS

kommando && echo ok || echo nein

vorgeschlagen, das sollte funktionieren. Prima, Exitcodes kann ich dann offenbar auswerten. Oder?

Um Vielleicht mehr Infos zu kriegen als (tut’s|tut’s nicht) versuche ich folgendes:

kommando & echo %ERRORLEVEL%

Und jetzt bin ich verwirrt (siehe Screenshot):

Das mit && funktioniert scheinbar, die Ausgabe von %ERRORLEVEL% bringt aber nicht sinnvolles? Was wird denn dann von && bzw. || ausgewertet? Und wie zur Hölle kriege ich den wirklichen Exit-Code?!?

DOS und %ERRORLEVEL%, Teil 2Nach etwas mehr Spielerei stelle ich fest, dass in einigen Konstellationen der %ERRORLEVEL% tatsächlich gesetzt wird. Leider immer ein Kommando zu spät, wie man am zweiten Screenshot erkennen kann. Komischerweise funktioniert das aber — wenn man da von ‚funktionieren‘ sprechen kann — auch nur bei Programmaufrufen.

echo > . & echo %ERRORLEVEL%

führt zwar jedes Mal zu einer Fehlermeldung, gibt aber trotzdem nur 0 aus…

Ich beschließe einfach erstmal, das nicht zu verstehen. Mein eigentliches Problem kann ich offenbar unter Windows nicht elegant lösen, also muss ich mir da was anderes ausdenken… :-(

… man kann noch so lange an einem Problem rum programmieren, einen kaputten Stecker kann man nicht wieder heil programmieren. Auch nicht wenn man da einen kompletten Samstag reinsteckt. :-(

Aber der One-Wire-Bus ist an der Stelle auch echt ein Arsch. Wer ihn nicht kennt: der Name ist etwas verwirrend. Zwei Drähte braucht man mindestens: einen für die Masse, einen für Daten. Eine Versorgungsspannung kann man wenn man möchte zusätzlich anlegen. Wenn man das nicht machen will kann man die Bausteine auf dem Bus — Temperaturfühler in meinem Fall — auch über die Datenleitung mit Saft versorgen. Eigentlich muss man dazu dann noch einen zusätzlichen FET benutzen.

Der Samstag hat mir aber gezeigt, dass es auch ohne den FET geht, wenn zum Beispiel der Pin für die Versorgungsspannung im Stecker kaputt ist. Und wenn man mehrere Sensoren auf dem Bus hat gibt es sehr merkwürdige Ergebnisse, empfehlenswert ist das also nicht. Das doofe ist: es gibt Ergebnisse. Wenn gar nichts geht kommt man schnell auf die Idee zu messen. Wenn aber der Bus die Geräte sieht, diesen aber keine Ergebnisse entlocken kann, ist das… irreführend. :-(

Naja: Gefahr erkannt, Gefahr gebannt. Heute habe ich mein aktuelles Mikrocontroller-Projekt in Betrieb genommen. Ein Gehäuse fehlt noch, dann mache ich ein paar Fotos und veröffentliche es. Vielleicht auch ohne Gehäuse, dann wird das diese Woche noch was.

Ich bin im Moment dazu verdammt, mit Windows zu arbeiten. XP am Arbeitsplatz, und unter anderem Windows 2003 Server irgendwo im RZ. Das heißt: ich versuche, damit zu arbeiten. Geht aber viel zu oft nicht, weil das ein großer Haufen Scheiße ist. Stinkend. Irgendwie.

Ich habe mir Heute Nachmittag vorgenommen, das zu schreiben. Während ein Kollege (der im Gegensatz zu mir auch sonst freiwillig mit Windows hantiert) versucht, einen Windows-Server zu rebooten. Weil der Speicher voll gelaufen ist. Oder so. Geht nicht. Muss wohl jemand den Server samt Reset-Knopf suchen gehen…

Naja, mein Problem findet aber auf einem anderen Server statt, und auch lokal auf dem XP kann ich das reproduzieren:

Ich bin mit dem Explorer in einem Verzeichnis mit etwa 20 Textdateien (plain ASCII, Quelltexte). Ich öffne eine der Dateien, suche da nach einem String, finde den auch. Ich will wissen in welchen anderen Dateien der String noch vorkommt. Also Rechtsklick auf den Ordner, ‚Suchen…‘. Auf XP öffnet sich ein neues Fenster mit einem aufwändig animierten Hund. Auf dem Server sieht das anders aus, macht aber das gleiche. Über dem Hund habe ich mehrere Eingabefelder. Über einem steht ‚Ein Wort oder ein Begriff innerhalb der Datei‘. Klingt sympathisch, nehme ich. Bringt aber nix. Der Hund wird aktiv, findet aber keine Dateien mit dem Begriff. Obwohl ich die vorher im Editor offen hatte. Noch mal rein gesehen, steht immer noch drin.

Ich versuche, zwei Kollegen zu fragen was ich falsch mache. Die haben sich aber beide nicht angesehen was ich wirklich getan habe, sondern schon bei der groben Schilderung des Problems wissend gegrinst, und Kommentare wie ‚Hab ich auch schon versucht, klappt nicht.‘ abgegeben.

Ich habe dann in einer DOS-Box mit ‚findstr‘ gesucht. Das ging. Ist dann allerdings auch ohne Hund. Und nicht rekursiv.

Liegt das an mir? An meiner Aura? Habe ich was falsch gemacht?

Ach ja, der Kollege hat den Server dann auch noch rebooten lassen können. Da musste nicht mal jemand einen Reset-Button suchen. Die Kiste ist keine Kiste sondern nur eine virtuelle Kiste. Und VMware hat quasi einen Fernsteuerungsresetbutton. Schöne neue Welt, der Serverbetrieb ist auf die Weise selbst mit Windows ganz angenehm. Zumindest die Abnutzung von Turnschuhen war hat deutlich nachgelassen…

Ich bin auf ein merkwürdiges Phänomen in C gestoßen, vielleicht kann mir das jemand erklären. Extrem eingedampft sieht das Problem so aus:

int main(int argc, char* arg[]) {
    int i = 0;
    switch (i) {
        case 0:
            int j = 7;
            break;
    }
}

Der Compiler (aufgerufen mit ‚gcc test.c‘) sagt dazu „t.c:5: error: expected expression before ‚int‘„. Mit geschweiften Klammern funktioniert der case-Block dagegen prima:

case 0: {
    int j = 7;
    break;
}

Zu meinem grössten Erstaunen klappt auch folgender Block:

case 0:
    i = 3;
    int j = 7;
    break;

Es geht halt nur nicht wenn direkt nach dem case eine Variablendeklaration kommt.

Wenn man schon innerhalb eines case eine Variable deklarieren kann… warum dann nicht ganz am Anfang? Ich meine: ich habe ja Lösungen für das Problem. Mir fehlt halt nur das ‚Problembewusstsein‘. Kann mir das jemand vermitteln?