mecker. mecker. mecker.

Linkschleuder #14

20.01.2012, 10:43
  • Cryp­to­gra­phic Key Length Re­com­men­da­ti­on – im Seminar auf­ge­schnapp­t; empfohlene Schlüs­sel­län­gen einiger Behörden.
  • wea­ve­cli­ent-chromium-continued – nicht getestet, aber wäre cool, wenn das funk­tio­niert.
  • puppet – au­to­ma­ti­sier­tes Einrichten eines *nix-Systems mit einer Ruby-DSL.

    „Puppet, an automated ad­mi­nis­tra­ti­ve engine for your *nix systems, performs ad­mi­nis­tra­ti­ve tasks (such as adding users, installing packages, and updating server con­fi­gu­ra­ti­ons) based on a cen­tra­li­zed spe­ci­fi­ca­ti­on.“
  • start-stop-daemon – ein Debian/Ubuntu-Tool, um das Schreiben von eigenen Dämonen deutlich zu erleichten (Beispiel).
  • Watch – A tiny C program used to pe­ri­o­di­cal­ly execute a command. (via The Changelog)
  • dcrypt.itDLC Ent­schlüs­se­lung mit ein paar mehr Input-Methoden als mein Angebot.
  • Polipo – a small and fast caching web proxy. Sowas wie squid, aber eher für Single-User/Home-Betrieb gedacht. Werd’ ich mir mal näher anschauen.
  • ettercap – eine Suite für Man-in-the-Middle Angriffe im LAN.

WhatsApp kennt sicherlich jeder Smartphone-Nutzer. Hat über zwei Millionen aktive Nutzer zu jeder Stunde und ist für jede mobile Plattform verfügbar, leider nur nicht für den Desktop. Das lässt sich ja vielleicht ändern, dachte ich mir und schmiss WireShark an:

WA............Android-2.7.431.........~.......Z*.....8..........~._......Xbm9uY2
U9IjE4ODAwNzM1MDU3OS IscW9wPSJhdXRoIixjaGFyc2V0PXV0Zi04LGFsZ29yaXRobT1tZDUtc2Vzc
w==.........cmVhbG09InMud2hhdHNhcHAubmV0IixyZXNwb25zZT0yZTY4M2U0YjlhNTA2ODdhMmN
mODA3NDQ1MTMxODM3Yyxub25jZT0iMTg4MDA3MzUwNTc5IixkaWdlc3QtdXJpP SJ4bXBwL3Mud2hhdH
NhcHAubmV0Iixjbm9uY2U9IjFtOWRzdGM2NzY1ZHQiLHFvcD1hdXRoLHVzZXJuYW1lPSI0OTE2MzYzMT
A2MTMiLG5jPTAwMDAwMDAx.#.......Rj#.13050253130. 1620558113....t8..+......t..a..
Ich....HC..:....{.M....Ua$....HC..2.:..........,..H8...491896312624.C../..../...
404......J......H8.C..2.........s<C..APA91bHEmfHjKPpBwu3MJLCOtK4hFMwe0ZWHdXimFDr1
pxIa18rznmbZ6FLB-7pFMVwX0GJiVPcUWCaAvnwTR0O_LVfEENMr--GtpzSy2FbWtq1IKSOG9_Z0N6Kz
LlIit9JaKaui47VY....t......491521283131..!..HC..3.:....491521283131.....{.L.)..H8
...491721883139.C..3......{.L...16990....t.....4914682512635.."..HC..4.:...
4914682512635.....{.L.+..H8..4915152523662.C..4......{.L...128494....t......t8..
.491896312624.

Sieht ziemlich un­le­ser­lich aus. Die ersten zwei Bytes beginnen wohl das interne XMPP-Protokoll, WhatsApp-Version und dann… äh ja. Dann sind da meine Te­le­fon­num­mer, Name, Ziel-Nummer (+ deren Zweit­num­mer und Ge­burts­da­tum) der Ge­sprächs­part­ne­rin.

  • Version: Android-2.7.431
  • meine Nummer: 491896312624
  • Zielnummer: 4914682512635
  • Zweit-Nummer: 4915152523662
  • Ge­burts­da­tum: 16990

Wohl­ge­merkt ist das ein Dump, wenn ich die App einfach öffne. Wenn Text kommt, dann ist da etwas weniger (Nachricht: Ich doch nicht xD).

.F..]....4914682512635...C..316008602-1......O..........Ich doch nicht xD.@..]8
...4914682512635.C..316008602-1........O....C..316008602-1...

Ich war etwas erstaunt. WhatsApp ver­schlüs­selt – aber nur das eigene Protokoll, was mit den Nut­zer­da­ten passiert, ist ihnen egal. Ich kann mir keine Erklärung dafür geben. Re­chen­leis­tung geht ja eh schon drauf, indem das Protokoll ver­schlüs­selt wird, warum also nicht gleich noch den Rest ver­schlüs­seln? Hauptsache keiner entwickelt einen Desktop-Clienten außerhalb ihres Ein­fluss­be­rei­ches!11

Im öf­fent­li­chen Hotspot sind die Daten für jedermann lesbar, für ver­schlüs­sel­tes WLAN kann wei­ter­le­sen.

Linkschleuder #13

12.01.2012, 13:27

Linkschleuder #12

09.01.2012, 14:56

Es wird leider auch nicht weniger:

  • Nokias Google Maps Fork – ohne Flash, sondern in WebGL. Sehr performant und echt be­ein­dru­cken­de Qualität.
  • Wireless Android Management – ein sehr hübsches Web­in­ter­face auf Knopfdruck. So lassen sich bsw. SMS im Browser schreiben.
  • Tor bridges in the Amazon cloud – vor­ge­fer­tig­te Tor-Images für Amazons EC2, ab 3$/Monat für gut 15 GB Traffic ersten 15 GB Traffic sind kostenfrei, bei maximal 40 GiB kann das bis zu 3$/Monat kosten.
  • Pandoc – a universal document converter.
  • Lita – SQLite Ad­mi­nis­tra­ti­on Tool (mittels Adobe Air) ohne Error-Handling. Aber hübsch.
  • SQL Tutorial using SQLite und Syntax-Diagramme haben mir bei der Ent­wick­lung von weave-minimal sehr geholfen!
  • Sublime Text 2 – auch wenn ich’s schon erwähnt hatte. Der Texteditor ist derzeit das non­plus­ul­tra. Es macht so viel Spaß damit zu arbeiten.
  • GitHub Issue – ein CLI Programm für GitHub’s Issues (wer hätte das gedacht) in Node.js.

nginx

07.01.2012, 22:03

Seit heute rennt das Blog unter nginx. Der Grund ist einfach: lighttpd ist behindert zu kon­fi­gu­rie­ren, hat keine aktuellen/coolen Features und ist zudem noch langsamer als nginx. Ich hoffte seit knapp einem Jahr, dass sich in der Ent­wick­lung was tut, aber außer einer Beta-Version mit in­te­grier­tem lua-Support (um überhaupt ein if-else statt if-else-if kon­fi­gu­rie­ren zu können) und zahl­rei­chen Won’t fixes für 1.4.x hat sich leider rein gar nichts getan.

Warum nginx? Ja, das weiß ich auch nicht, aber die Al­ter­na­ti­ven zu non-Apache mit geringem Memory-Footprint, vielen Features und opensource sehen schlecht aus. thttpd hat kein mod_proxy, Cherokee bringt gleich ein Web-GUI zur Ad­mi­nis­tra­ti­on mit und LiteSpeed Web Server ist nicht quell-offen. Also, was sind die Features von nginx?

  • schnell und leicht­ge­wich­tig
  • logische Kon­fi­gu­ra­ti­on (was ich schon für behinderte Logik-Krämpfe mit lighttpd hatte…)
  • mod_proxy, mo­d_­fast­cgi, expires, PCRE

Moving from lighttpd to nginx

Die Umstellung von lighttpd nach nginx ist nicht ganz ohne. Prin­zi­pi­ell ist alles anders und nginx hat keine Un­ter­stüt­zung für CGI und rewrite-Regeln auf Query-Parametern. Außerdem spawnt nginx nicht au­to­ma­tisch einen wei­ter­le­sen.

Linkschleuder #11

02.01.2012, 19:11

Diesmal stark apfel-lastig; zwei zu Twitter, Rest zu OS X.

As a result of my last per­for­mance im­prove­ments to acrylamid I was not able anymore to measure the memory used via Activity Monitor. I can measure cpu time in many different ways using time or python’s neat -m cProfile -s cumulative argument in front of my real program call, but I don’t know any way to measure memory of fast ending ap­pli­ca­tions.

Memory Profiling

The first fact I found is that python has no ca­pa­bil­i­ties of profiling and BSD’s version of time had no memory statistics support (seems, linux version can do this). But there’s an App… erm tool for that: valgrind. Using it with OS X’ default python produces a lot of output and will slow down code execution, therefore you have to call valgrind with a specific supression file using Massif: a heap profiler (or re-compile --without-pymalloc):

$> valgrind --tool=massif --suppressions=Misc/valgrind-python.supp \
   python ../acrylamid/bin/acrylamid gen
$> ms_print massif.out.1928 > out.txt

The latter produces a heap profile written to out.txt. KDE/Linux seems to have a visualizer, KCacheGrind, weit­er­lesen.

TextMate

18.12.2011, 18:02

Bevor ich so langsam zum Sublime Text Editor wechseln werde (es sei denn, Version 2 bringt es), noch einmal kurz meine Lieblings-Bundles, sprich Macros, Themes und Snippets.

Bundles

In­stal­liert wird das alles nach ~/Library/Application Support/TextMate/.

The first time I tried to get a custom Firefox Sync server running, I used server-full and even though I know python (the server is written in python), the con­fig­u­ra­tion was highly difficult. There’s no click & install. You have to choose between Redis, MySQL, PostgreSQL and Sqlite3. For most people, sqlite3 is quite fine. Sqlite and sync-server config files have summed up almost 80 LoC. And you still don’t know how to au­then­ti­cate unless you have already a LDAP server running.

There are some al­ter­na­tives: ffpyweave, django sync server and formerly weave-minimal too, written in PHP but not supported anymore. But I’ve forked the official server-full (well I completely rewrote) to a more easier in­stal­la­tion without multiple backends but completely relying on a simple sqlite database.

Re­quire­ments

  • a web server with proxy or FastCGI/WSGI support
  • python runtime (>= 2.5)
  • shell access

In­stal­la­tion

$ easy_install -U werkzeug
 
$ wget https://github.com/posativ/weave-minimal/tarball/master -O weave-minimal.tar.gz
$ tar xfz weave-minimal.tar.gz
$ cd posativ-weave-minimal

Usage

Currently, Firefox does not you create a user account on your own server. I filed a bug weit­er­lesen.

Linkschleuder #10

16.12.2011, 19:31
  • da­e­mon­tools – nein nicht die Daemon Tools, um äh Si­cher­heits­ko­pi­en zu mounten, sondern einen Prozess-Supervisor wie init.d und kann im userspace laufen (via).
  • runwhen – eine Art besseres cron. Un­ter­stützt z.B. direktes Ausführen eines Tasks und kann se­kun­den­ge­nau Arbeiten (via).
  • Tracks – eine nette Todoliste mit Ruby on Rails, die gerade mal lä­cher­li­che 100 MB RAM idle verbrät. Un­ter­stützt Mobil-Geräte.
  • Piwigo – your own photo gallery (in PHP und MySQL), gibt’s direkt im Repository von Debian und Ubuntu. Ganz hübsch, aber ein leichter Overkill für einen Ein­zel­nut­zer.
  • MacfusionSSH & FTP Filesystem im Userspace aka FUSE. Mit GUI!1
  • github:mac – gibt’s in Version 1.1 und un­ter­stützt unter anderem partielles Hinzufügen aka git add --patch (wenn auch sehr um­ständ­lich).
  • Lua Scripting im lighty 1.5 – könnte Grack+Redmine unnötig machen, würde es denn irgendwann Version 1.5 geben.
  • HTML nach Text kon­ver­tie­ren wei­ter­le­sen.

Vor gut zwei Wochen habe ich fest­ge­stellt, dass es irgendwie unmöglich ist, einen eigenen Server für Firefox Sync zu nehmen. Aber so unmöglich ist es dann gar nicht. Wenn man weiß, wie behindert das Setup ist, dann ist das kin­der­leicht.

Was nicht geht: ein neues Konto auf dem eigenen Server anlegen. Warum? Weil Mozilla diese Service-URL auth.services.mozilla.com fest in den Firefox kodiert hat. Die API, um sich zu re­gis­trie­ren, hängt aber an obiger URL + /user, genauer gesagt PUT /user/1.0/mein_username. Da sich die URL für den Re­gis­trie­rungs­ser­ver (der Server ist in zwei Teil­pro­jek­te unterteilt, server-reg und server-full) nicht einmal in der about:config einstellen lässt, wird dieser Workaround genutzt. Wir wissen ja, 89 people have this problem. I have this problem, too!

Workaround in Firefox

Anstatt sich ein neues Nut­zer­kon­to zu klicken, wählt man statt­des­sen aus, dass man bereits ein Konto hat. Dafür wird allerdings wirklich ein Konto benötigt, was zu einem unschönen Weg in die Kom­man­do­zei­le führt (oder ins Web­in­ter­face, sofern der Server derartiges anbietet). Nachdem man sich auf seinem Server einen Nutzer re­gis­triert hat, geht’s weiter. Anstatt das Gerät mit dem drei-stelligen Code zu aktivieren wei­ter­le­sen.

So habe ich heute Firefox Weave Sync ken­nen­ge­lernt. Ich dacht mir, hey ich hab’ ‘nen Server, oh und hey, der Sync-Server ist in Python ge­schrie­ben, das wird bestimmt kin­der­leicht!1 Aber die Community Policy, die Mozilla da seit geraumer Zeit fährt, macht jegliche Offenheit des Source Codes sinnlos, weil es einfach nicht für den kleinen Mann do­ku­men­tiert ist. Das ist so miserabel do­ku­men­tiert, dass ich ohne Studieren des Source Codes nicht weiß, ob der server-full überhaupt dafür konzipiert ist, ge­schlos­sen für einen, oder maximal auch zwei Nutzer zu laufen. Denn ganz sicher werde ich für einen Single-User-Betrieb keine LDAP-Au­then­ti­fi­zie­rung aufsetzen.

Früher™ gab es ja mal diesen diesem Minimal Server. Der scheint aufgrund von API-Änderungen nicht mehr ganz zu funk­tio­nie­ren bzw. ist sowieso deprecated (ist ja logisch, warum sowas kleines wei­ter­füh­ren, wenn man mit LDAP gleich die ganze Welt verwalten kann). Von einem Server in PHP hab’ auch ich gehört. Ein (älteres) single-file CGI-Skript in python gibt’s ebenfalls. Ob das funk­tio­niert, weiß ich nicht. Einen Django-Klon gibt’s auch, das ist aber die erste genannte Variante mit denselben Zielen, Millionen von Nutzern zu verwalten, nur mit Django. Nicht wei­ter­le­sen.

ältere Beiträge →

written by posativ | Impressum

by-nc-sa