kaputte DVDs

ich hätte nicht gedacht, dass man die so kaputt machen kann:

ginaz VIDEO_TS # mount
[…]
/dev/dvd1 on /mnt/dvd type udf (ro)
ginaz VIDEO_TS # ls -alh
total 65G
dr-xr-xr-x 2 4294967295 4294967295 6.6K Oct 26 02:13 .
dr-xr-xr-x 3 4294967295 4294967295 88 Oct 26 02:13 ..
-r–r–r– 1 4294967295 4294967295 54K Oct 26 02:13 VIDEO_TS.BUP
-r–r–r– 1 4294967295 4294967295 54K Oct 26 02:13 VIDEO_TS.IFO
-r–r–r– 1 4294967295 4294967295 380K Oct 26 02:13 VIDEO_TS.VOB
-r–r–r– 1 4294967295 4294967295 14K Oct 26 02:13 VTS_01_0.BUP
-r–r–r– 1 4294967295 4294967295 14K Oct 26 02:13 VTS_01_0.IFO
-r–r–r– 1 4294967295 4294967295 456K Oct 26 02:13 VTS_01_1.VOB
-r–r–r– 1 4294967295 4294967295 18K Oct 26 02:13 VTS_02_0.BUP
-r–r–r– 1 4294967295 4294967295 18K Oct 26 02:13 VTS_02_0.IFO
-r–r–r– 1 4294967295 4294967295 988K Oct 26 02:13 VTS_02_0.VOB
-r–r–r– 1 4294967295 4294967295 7.0M Oct 26 02:13 VTS_02_1.VOB
-r–r–r– 1 4294967295 4294967295 14K Oct 26 02:13 VTS_03_0.BUP
-r–r–r– 1 4294967295 4294967295 14K Oct 26 02:13 VTS_03_0.IFO
-r–r–r– 1 4294967295 4294967295 8.9M Oct 26 02:13 VTS_03_1.VOB
-r–r–r– 1 4294967295 4294967295 16K Oct 26 02:13 VTS_04_0.BUP
-r–r–r– 1 4294967295 4294967295 16K Oct 26 02:13 VTS_04_0.IFO
-r–r–r– 1 4294967295 4294967295 283M Oct 26 02:13 VTS_04_1.VOB
-r–r–r– 1 4294967295 4294967295 192K Oct 26 02:13 VTS_05_0.BUP
-r–r–r– 1 4294967295 4294967295 192K Oct 26 02:13 VTS_05_0.IFO
-r–r–r– 1 4294967295 4294967295 325M Oct 26 02:13 VTS_05_0.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_05_1.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_05_2.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_05_3.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_05_4.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_05_5.VOB
-r–r–r– 1 4294967295 4294967295 386M Oct 26 02:13 VTS_05_6.VOB
-r–r–r– 1 4294967295 4294967295 192K Oct 26 02:13 VTS_06_0.BUP
-r–r–r– 1 4294967295 4294967295 192K Oct 26 02:13 VTS_06_0.IFO
-r–r–r– 1 4294967295 4294967295 325M Oct 26 02:13 VTS_06_0.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_06_1.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_06_2.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_06_3.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_06_4.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_06_5.VOB
-r–r–r– 1 4294967295 4294967295 386M Oct 26 02:13 VTS_06_6.VOB
[… snip …]
-r–r–r– 1 4294967295 4294967295 325M Oct 26 02:13 VTS_15_0.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_15_1.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_15_2.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_15_3.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_15_4.VOB
-r–r–r– 1 4294967295 4294967295 1.0G Oct 26 02:13 VTS_15_5.VOB
-r–r–r– 1 4294967295 4294967295 386M Oct 26 02:13 VTS_15_6.VOB
-r–r–r– 1 4294967295 4294967295 30K Oct 26 02:13 VTS_16_0.BUP
-r–r–r– 1 4294967295 4294967295 30K Oct 26 02:13 VTS_16_0.IFO
-r–r–r– 1 4294967295 4294967295 56M Oct 26 02:13 VTS_16_0.VOB
-r–r–r– 1 4294967295 4294967295 46M Oct 26 02:13 VTS_16_1.VOB
-r–r–r– 1 4294967295 4294967295 16K Oct 26 02:13 VTS_17_0.BUP
-r–r–r– 1 4294967295 4294967295 16K Oct 26 02:13 VTS_17_0.IFO
-r–r–r– 1 4294967295 4294967295 246M Oct 26 02:13 VTS_17_1.VOB
-r–r–r– 1 4294967295 4294967295 32K Oct 26 02:13 VTS_18_0.BUP
-r–r–r– 1 4294967295 4294967295 32K Oct 26 02:13 VTS_18_0.IFO
-r–r–r– 1 4294967295 4294967295 899M Oct 26 02:13 VTS_18_1.VOB
-r–r–r– 1 4294967295 4294967295 12K Oct 26 02:13 VTS_19_0.BUP
-r–r–r– 1 4294967295 4294967295 12K Oct 26 02:13 VTS_19_0.IFO
-r–r–r– 1 4294967295 4294967295 172M Oct 26 02:13 VTS_19_1.VOB

ginaz VIDEO_TS # lsdvd /dev/dvd1
Disc Title: XXX
Title: 01, Length: 01:31:50.120 Chapters: 36, Cells: 136, Audio streams: 04, Subpictures: 04

Title: 02, Length: 01:31:15.480 Chapters: 36, Cells: 136, Audio streams: 04, Subpictures: 04

Title: 03, Length: 01:34:23.360 Chapters: 36, Cells: 138, Audio streams: 04, Subpictures: 04

Title: 04, Length: 01:32:25.320 Chapters: 36, Cells: 136, Audio streams: 04, Subpictures: 04

Title: 05, Length: 01:34:32.120 Chapters: 36, Cells: 138, Audio streams: 04, Subpictures: 04

Title: 06, Length: 01:33:40.280 Chapters: 36, Cells: 138, Audio streams: 04, Subpictures: 04

Title: 07, Length: 01:32:34.280 Chapters: 36, Cells: 136, Audio streams: 04, Subpictures: 04

Title: 08, Length: 01:31:04.960 Chapters: 36, Cells: 138, Audio streams: 04, Subpictures: 04

Title: 09, Length: 01:32:33.520 Chapters: 36, Cells: 138, Audio streams: 04, Subpictures: 04

[… snip …]

Title: 99, Length: 00:00:00.520 Chapters: 01, Cells: 01, Audio streams: 08, Subpictures: 12

Longest track: 20

Active Pen-Testing

Heute mal eine Idee, die schon länger in meiner Schublade steckt und die nun endlich, aus gegebenem Anlass, mal aufgeschrieben gehört:

Wie wir alle wissen gehört zu Datenschutz (die Wahrung der Informationellen Selbstbestimmungsrechte) auch Datensicherheit (Vertraulichkeit, Verfügbarkeit und Integrität von Daten). Ohne Datensicherheit kann eine Organisation keinen Datenschutz gewährleisten (vermutlich deshalb werden die beiden verschiedenen Aufgaben von den Medien auch so oft in einen Hut geworfen). Wenn Unternehmen nun zu wenig bzw. nicht genug in Datensicherheit investieren, kommt es vor, dass die Daten von vielen Benutzern in die Öffentlichkeit gelangen. Ein Vorgang der immer mal wieder vorkommt, so z.B. bei studiVZ, schülerVZ, haefft.de oder nun aktuell ruf-jugendreisen.de. Auf den ersten richtig großen Skandal bei Bundesbehörden dürfen wir noch warten (Elektronischer Personalausweis, ELSTER, Gesundheistkarte anyone?), bei Landes- oder Lokalbehörden kommt das ja hin und wieder schon mal vor. Den betroffenen Kunden der jeweiligen Unternehmen entsteht dabei ein Schaden der nicht von den Unternehmen beglichen werden muss (die Bußgelder der Datenschutzbeauftragten sind lächerlich, wenn sie überhaupt verhängt werden), obwohl Sie mit genau diesen Daten vermutlich jahrelang Gewinn gemacht haben. Dieser Vorgang, dass eine Organisation auf Kosten anderer Gewinn macht, nennt man unter Ökonomen eine Externalität. Zur Lösung des Problems ist die Internalisierung der Kosten, die bei einem Datenverlust im Moment noch bei den betroffenen Nutzern anfallen, in der Kostenrechnung des Unternehmens oder der Behörde. Dies kann auf verschiedenen Wegen geschehen. Ein Weg der im Moment schon beschritten wird, ist eine staatliche Regel: Wenn du keine ausreichenden technischen und organisatorischen Maßnahmen ergreifst um Datenschutz sicherzustellen, musst du X Bußgeld bezahlten (BDSG, §9).

Nun, Regeln sind eine eigene Sache. Sie funktionieren ungefähr so: Entdeckungswahrscheinlichkeit * Strafhöhe = Risiko (Kosten). Wenn der Gewinn aus der Handlung nun größer ist als das Risiko durch die Strafe, dann sagt die Theorie, dass man gegen die Regel vernünftigerweise verstoßen wird (wer hat z.B. noch nie mal kurz im Halteverbot gehalten). Wenn die Bußgelder der Datenschutzbeauftragten also sehr niedrig sind, ist es ökonomisch sehr sinnvoll für die Firmen gegen die Regel zu verstoßen. Ein Weg in die richtige Richtung wäre also zum einen die Bußgelder zu erhöhen. Es gibt jedoch noch einen zweiten Faktor in der Gleichung: die Entdeckungswahrscheinlichkeit. Würden wir sie erhöhen, würde der gleiche Effekt eintreten. Nun ist mir nicht bekannt, dass sich irgendjemand diesen Effekt aktiv zu Nutze macht. Kein Unternehmen und keine Behörde muss befürchten, dass der Bundesdatenschutzbeauftragte bei ihnen unangemeldet an die Tür klopft und mal fragt wie es so um die technischen und organisatorischen Maßnahmen steht. Würde er das tun können, so würde auch noch ein weiterer Effekt im Kontext von Regeln in Kraft treten: Risikoaversität. Dieses Prinzip besagt, dass Menschen beim Einschätzen von Risiken (wie dem Risiko, einen Datenskandal zu erleiden) dazu tendieren die Eintrittswahrscheinlichkeit von negativen Ereignissen zu überschätzen, gegeben Schadenshöhe und Eintrittswahrscheinlichkeit sind in einem bestimmten kritischen Bereich, denn es gibt umgekehrt auch Situationen in denen wir risikoaffin handeln (z.B. wenn wir Lotto spielen) und das Risiko unterschätzen. Die Aufgabe des Staates ist es nun, Strafmaß und Eintrittswahrscheinlichkeit in einen effizienten Bereich zu verschieben.

Und nun zur Conclusio: Warum tut er dies nicht für den Datenschutz? Zum Beispiel durch aktive Überprüfung der technischen und organisatorischen Sicherheitsmaßnahmen nach §9 BDSG. Oder noch provokativer: Warum haben wir keine aktive Pen-Testing Behörde, die:

  1. private Unternehmen überprüft
  2. staatliche Behörden überprüft

Ich fordere staatliches Pentesting gegen Behörden und Unternehmen!

(man beachte dabei das Grundrecht auf Gewährleistung der Vertraulichkeit und Integrität informationstechnischer Systeme)

What is Open Source?

Well, here is the final answer. Just created it from the texts in the OpenSource Jahrbuch 2004 to 2008. Took me some hours and some code-snippets from my diploma theses. Just a quick Porter-stemming (which doesn’t work to well with german, I know) and a manually created stopwordlist. There’s definitly room for improvement (better stemming, differential corpus analysis, say agains the gutenberg corpus) but I just need it for putting people in the right mindset.

Wordle: OpenSource Jahrbuch

wiki2beamer @ 26C3

short story: meet us there, today, lightning talk. [slides|sources]

long story:
After I feared to get no tickets, yesterday, I finally got one (after waiting patiently in the line). Now I’ll give a 4-minutes Lightning Talk at the 26. Chaos Communication Congress were I will introduce wiki2beamer and point out, that is good for collaborative working and sourcecode-centric talks.

The slides are available as PDF and with all the sources.

update: video recording is online, other formats here

Don’t be afraid of .pyc

During the last UCSB iCTF we (ENOFLAG) got (amongst other applications) a python binary which means, we only got the .pyc file and not the python source. The .pyc modules had to be reversed to find some remote code execution vulnerability. Well, I’m not the assembler-uber-geek so I had some problems reversing the code and until the host supplied the plain source I didn’t really got anything usable.

Now, a few days later, I know the exploit but I lost the source for the binary. So I just thought, let’s get it back and do what you were supposed to do. And … it’s astonishingly easy. The only thing you got to do is take some time and decompile the disassembled output line by line into source.

So here come’s a short tutorial for decompiling python 2.5/2.6 code:

Step 1: disassembling

dismybinary.py:
#!/use/bin/env python
import binarymodule
import dis

dis.dis(binarymodule)


$ ./dismybinary.py > mybinary.dis

Step 2: decompiling

$ cp mybinary.dis mybinarydis.py
$ vim mybinardis.py

An additional ipython shell on another terminal might help for inspecting the binary module during decompilation.

Now, cpython disassembler output is not to hard to read, it’s really easy in fact, when you concentrate and take your time. The documentation of dis helps and I’m pretty sure you can do it, too.

So next time, I won’t be so afraid of python binaries and I suggest anyone having to deal with, too: Don’t be afraid, it’s easy, just do it.

thanks grml

As I’m planning to set up a fresh new gentoo on my new Atom 330 system, I was looking for a suitable boot medium today. The Atom board only has SATA connectors and I don’t have a SATA CD-ROM, so I had to look for an USB bootable 64bit linux. This should not be a problem nowadays … I thought.

Well, first attempt: Ubuntu 9.10 64bit desktop. Downloaded the ISO and then looked for some tutorial. It turned out they now have a debian/ubuntu/windows custom usb-creator tool which is not available on gentoo. So I tried unetbootin, which promised to create bootable USB sticks from all kinds of distributions. It failed. For some reason the BIOS said the resulting stick was not bootable. My next try was to follow some generic tutorials for converting bootable CD images into bootable USB sticks. With this attempt I got the Ubuntu image to boot into the initramfs but it then didn’t find the live image to mount and I didn’t really care to hack into the initramfs. Frustrating. This should be easy, instead.

Well, then I took a look at GRML, as it is said to be a nice litle Linux distro for admins. And surprisingly all it takes to make a GRML ISO boot from USB Stick is dumping the ISO on the stick with dd. dd if=grml64-medium.iso of=/dev/sdX. Done. Works nicely. Thank you GRML!

Clifford Stoll on everything and the sink

here

Bye bye, trusty old one …

As some of you may know, I’ve been running a 24/7 box in my room that provides me with a unified messaging service (fetchmail/dovecot) and acts as a NAS for me. As my parents visited this weekend and needed to sleep somewhere, without the constant (yet silent) sound of a machine running, I turned the box of. It’s a good old AMD Duron 650 that was bought in 2002 (I think) and has been always on since about 2005. Thats four years of current running through the board. As you can guess, when I tried to turn it on again in the morning, it just didn’t come up (random hangs). Well, the elcos don’t look to healthy anymore, too. So, rest in peace little duron *sniff* we had a good time together (about 98% uptime).

So long, I put the RAIDed harddisks into another machine which is running my mail service now and just bought a pretty cool new board: Foxconn 45CSX, one of the few fully passive Atom 330 boards :)

Let’s see if I can get wattage down. In a year or so, the new board should pay out.

Wiki2beamer 0.8.1 is out

I just released wiki2beamer 0.8.1.

update: sping updated the ebuild for Gentoo, too

Ooops, is this KDE4?

Yes it is…

As KDE4 (4.3.1) went stable on ~amd64 in Gentoo Linux, I accidently pulled it in and compiled it during my last emerge –update world. And as I had it installed I decided to just use it and make the full switch. Although it probably will have some bugs here and there, it seems to be pretty usable and it looks really damned beautifull. That again, comes with price: it’s slow. Interaction with the GUI is a litle bit unresponsive sometimes, but I guess I will get used to that. Most important applications are there and work. Only one important thing is still missing: a fully integrated KNetworkManager for KDE4. So long I’m using the KDE3.5 KNetworkManager, which works fine but looks a bit ugly. A good thing is, that power and display management seems to be integrated more nicely, the important special-buttons worked instantly.
I’m currently working on migrating all of the application-settings to KDE4.

I can see now why the Gentoo people will drop KDE3.5 out of the tree sooner or later. It just doesn’t make alot of sense to maintain something, that upstream doesn’t maintain anymore, or atleast not much.

update: disabling Nepomuk semantic desktop in the control panel (system settings->advanced->desktop search->enable nepomuk semantic desktop, uncheck) seems to increase performance and reduce power consumption.

Besides that, I had some free time at the it-sa security fair (where I gave a talk together with Daniel about our thesis) and coded some new features for wiki2beamer:

  • selective slide compiling: mark a frame with a ! (!==== frametitle ====) to only compile the selected frame to latex. Speeds up compilation times during slide creation and also saves you battery when sitting in the train and making slides ;)
  • shortcut syntax for \vspace and \vspace*: –2em– on a single line creates a vspace of 2em, –*2em– respectively creates a \vspace*
  • shortcut syntax for \uncover and \only: +<2->{content} (uncover) and -<2->{content} (only)

As I once again hacked in the wiki2beamer code, it became clear that the code will become more or less unmaintainable. It’s just a matter of time until the complexity is too high. Wiki2beamer definitly needs a formal parser and syntax.