Aug 15: Windows 7: Erste Erfahrungen
Seit gestern läuft Windows 7 (RC) auf meinem Notebook – statt XP mit OpenSolaris im Multiboot. Um meinen gelegentlichen Bedarf für eine Unix-artige Umgebung zu decken, ist Debian in einer Virtualbox installiert.
Windows Live Mail mag die coreboot Mailingliste, mit ihren OpenPGP-Mail-Schreibern immer noch nicht, aber Windows Live Writer scheint gut zu funktionieren – siehe diesen Eintrag.
Insgesamt macht das System einen sehr runden Eindruck. Wenn ich jetzt noch schaffe, eine coreboot Toolchain mit MinGW aufzubauen (SUA macht traditionell Probleme, Cygwin ist lahm, Virtualbox sollte nicht für die tägliche Arbeit notwendig sein), bleibe ich wohl bei dem System. Mal schauen, was die Lizenzen am Ende wirklich kosten.
Zum Hack des Tages: Der Nvidia-Treiber hat die unangenehme Eigenschaft, bei Aero den “Secure Desktop” vom UAC mit ~5 Sekunden Verzögerung darzustellen. Dazwischen ist das Bild schwarz und “hängt”. Das kann behoben werden, indem man die Skalierungsfunktion für das Display deaktiviert. Solange der Chipsatz selbst skaliert, ist diese Funktion eh überflüssig.
… und wenn ich mir den HTML Code so ansehe, den Live Writer hier generiert, bin ich sehr angenehm überrascht.
Feb 6: mysql, blobs und shell
Für ein Projekt muss ich eine MySQL Datenbank von der Shell aus betanken. Ich könnte natürlich den Umweg über PHP gehen, aber ich hatte eigentlich vor, PHP ausschließlich für die Webseitenelemente des Projekts zu nutzen.
Das ist ja an sich auch kein Problem, da es ein CLI Werkzeug gibt. Einzig, dass ich unstrukturierte Daten "von außen" einbauen muss, bereitete mir etwas Kopfzerbrechen.
Die Lösung war dann aber doch einfach genug:
printf "x'"; od -An -tx1 -v $1 |tr -d ' \t\n'; printf "'"
Wobei $1 der Name der Datei ist, die abgelegt werden soll.
Sep 13: Google hat keinen Überblick über ihre Benutzerdatenbank
Ich habe mal mit Google Tools rumgespielt (zB Analytics, Mail, AdSense und wie sie alle heißen). Irgendwann hab ich damit wieder aufgehört, und auch meinen Account gelöscht. Als Reaktion bekam ich eine Mail, dass es noch eine Weile dauern könnte, bis das überall umgesetzt ist, das Konto war aber bereits gesperrt.
Das hatte Google seinerzeit (vor ca. einem halben Jahr?) nicht daran gehindert, mich fleißig weiter zu iGoogle zu schicken von deren Startseite aus, wobei ich nichts mehr einstellen konnte - das Profil wurde lediglich weiter mit Suchbegriffen betankt.
Gestern bekam ich eine Mail, in der mir, als "Google Analytics-Nutzer" ein 100EUR Startguthaben bei AdWords mittels eines Gutscheincodes angeboten wird. Da dachte ich mir, versuch ich doch nochmal, mich einzuloggen, anscheinend hat die Löschung ja nicht geklappt.
Irgendwann stieß ich auf die Account-Hilfe, insbesondere "Ich bin nicht sicher, ob ich ein Google-Konto habe", von wo ich zur "Passworthilfe" weitergeschickt wurde. Die bestätigt mir, dass die Email-Adresse mit keinem Konto verknüpft ist.
Bin ich jetzt Nutzer? Oder nicht? Ist Google vom Webspammer zum Mailspammer mutiert? Fragen über Fragen.
May 25: Tolle Worte
Feb 22: GDB single stepper automatisieren
Heute musste ich relativ viel mit GDB (GNU Debugger) hantieren, der zusammen mit QEmu ein echt wertvolles Tool darstellt.
Unter anderem geht es um die Frage, an welcher Stelle GRUB2 (der Bootloader), bzw. ein Modul, an dem ich gerade arbeite hängt (und im zweiten Schritt, warum).
Also GRUB2 in QEmu geladen, der mit GDB-Hook ausgestattet wurde (-s -S flags), gdb drangehängt, kernel.elf als Symboltabelle hergenommen (0x8200 ist in meinem Fall die Ladeadresse), das Modul für die Symbole in GDB geladen (set debug=modules, insmod - die letzte genannte Adresse ist in der Regel der gesuchte Wert) und durchgesteppt. und gesteppt. und gesteppt.. So ein Singlestepper kann ganz schön langweilig sein, der geht wirklich jeden einzelnen Befehl durch und nexti (also nicht jeden Sprung mitnehmen) war nicht detailliert genug. Da QEmu hängt, sobald das Problem auftritt, muss sich das doch irgendwie automatisieren lassen.
Und ja, es geht:
set pagination off
while 1 == 1
stepi
end
"pagination off" ist sinnvoll, weil GDB sonst alle 25 Zeilen (oder wieviel auch immer eine seite sind) nachfragt, ob man sich den Kram nicht erstmal durchlesen will. Für "1 == 1" gibt es vielleicht auch noch was kürzeres, halt irgendein "true", was auch immer GDB darunter versteht ("true" könnte sogar funktionieren, hab ich nicht probiert)
Übrigens hängt mein Modul in __udivdi3 - das kommt aus libgcc und wickelt elementare Mathematik ab, nämlich die Division und scheint an einer Division durch 0 zu scheitern - wie auch immer diese zustande kommt.
Feb 13: Datenschutz und so
Die Google-Services sind hier wieder rausgeflogen, mein Google-Konto ist "gelöscht" (was auch immer die damit meinen), und auch sonst arbeite in an Datensparsamkeit.
Ask.com bietet zum Beispiel in der US-Variante eine Suchmaschine, die angeblich nichts protokolliert, wenn man sich ein Cookie ("askeraser=on") aktiviert (bequem im Webinterface). Leider sind die Suchplugins für den Firefox nicht allzu kooperativ, selbst das "ask.com US"-Plugin leitet einen auf die deutsche Seite weiter, die diese Funktion noch nicht hat.
Auf der Seite des Mycroft-Projekts habe ich daher ein neues Plugin erstellt, dass explizit die US-Variante benutzt. Stört natürlich ein wenig, wenn ich mal etwas deutschsprachiges suche, aber dann kann ich ja immer noch überlegen, welche Suchmaschine ich diesmal mit Informationen füttere.
Nächste Schritte: https für alle Services auf meinem Server, sowie radikaleres Beseitigen von Client-IPs bei Anfragen.
Dec 18: Trekstor Player Hacks
Dec 12: Audiostreams aus Flash-Playern extrahieren
- Feststellen, von welchem Host die Streams kommen
- IP-Adresse des Hosts feststellen (im Folgenden $IP)
- Host auf 127.0.0.1 umbiegen (auf dem kein httpd laufen darf)
-
while : ; do sudo nc -l -p 80 -c 'nc $IP 80 |tee `mktemp`'; doneausführen - Flashplayer benutzen, alle streams durchlaufen lassen
- MP3 Dateien (mit einigen Zeilen Text am Anfang) in /tmp/tmp.* zusammensuchen. Die Zeilenzahl wird in der Regel konstant sein. tail -n +10 schneidet zum Beispiel die ersten 10 Zeilen Text weg
- Hosts zurückbiegen
Dec 10: Wunderbare C-Welt: Zahlenspielereien
Laut C ist abs(-2147483648) == -2147483648.
Eigentlich ist abs ja so definiert:
Für x<0: abs(x)=-x, für x>=0: abs(x)=x.
Aber da macht der 32bit-Zahlenraum nicht mit: Bei Zahlen mit Vorzeichen wird 1 Bit für das Vorzeichen benötigt, bleiben 31 Bit für die Zahl selbst. Mit 31 Bit lassen sich 2147483648 Werte darstellen. Also [0, 2147483647] im positiven Bereich. Da keine "-0" benötigt wird, wird in der (üblichen) 2er-Komplement Darstellung für die negativen Zahlen [-2147483648,-1] bereitgestellt (die interne Darstellung ist dabei auch so gewählt, dass sich gut damit rechnen lässt).
Und damit wird klar, warum -2147483648 ein Problem für die abs()-Funktion in C darstellt: es gibt kein -(-2147483648).
Nov 12: Kernelmode Anticheat
- KMode-Treiber, der den pb-Treiber patched und sich gegebenenfalls wieder entlädt.
- Filesystem Filter Driver, der den pb-Treiber gepatched durchgibt. (Kann ein Filter so früh geladen werden, dass Treiber bereits davon betroffen sind?)