Planet Freitagsrunde

Florian

Unter OpenWRT per DHCP den NTP announcen

Wer sich wundert, warum die Rechner zu Hause den NTP-Server des eigenen Routers einfach nicht benutzen wollen, sollte mal per tcpdump nachsehen, ob die DHCP-Option 42 auch gesendet wird... Wenn nicht muss man auf dem Router in der /etc/config/dhcp das Schlüsselwort dhcp_option benutzen:
config dhcp lan
        option interface        lan
        option start            100        
        option limit            150
        option leasetime        1h
        list dhcp_option '42,10.1.1.1'
Hier wird den Clients im LAN mitgeteilt, dass man 10.1.1.1 als NTP-Server nutzen will...

by Florian (noreply@blogger.com) at Fri, 12 Mar 2010 15:29:57 +0000

Kai

Putting SSP back into Gentoo-hardened

One of the main advantages of Gentoo Linux is the availability of the hardened profile and kernel. The hardened profile enables a number of switches and features which, together with the hardened kernel (PaX and grsecurity patchset), provide a system with full address space layout randomization (ASLR) and stack-smashing protection (SSP). ASLR requires a kernel patch, called PaX, and all binaries to be built as position independent executables/code (PIE/PIC). SSP, also known as cannaries, is a pure compiler-feature.

Now the old GCC 3.4.6 series had this feature (coming from an old IBM patch called ProPolice). But the current stable compiler on Gentoo, GCC 4.3.4 doesn’t have it anymore. This means, current stable Gentoo-hardened systems are built without SSP.

How could we fix that? Using gcc 3.4.6 will most likely break a number of things, so it’s not really an option. But GCC 4.4.2 has a new SSP feature. It’s a totally new implementation of the same idea. But 4.4.2 is not on by default.

To use GCC 4.4.2 and with it SSP on Gentoo-hardened, you have to import the hardened-dev overlay (layman -a hardened-development). Then you have to unmask =sys-devel/gcc-4.4.2-r2 in /etc/portage/package.unmask and install it. It will be put into a new slot (4.4), so it doesn’t overwrite the old gcc by default. When it’s compiled, you can enable it with gcc-config.

After there were mostly positive reports on the gentoo-hardened mailinglist, I just did that on my home-box. The complete re-build of the system with the new gcc is currently running. I’m confident that nothing breaks.

So if you have a server-box with hardened, I’d suggest you do the same and switch over to the new GCC in the hardened-dev overlay. It seems to work well for most people and packages. If you have a server-box without an ASLR kernel/system, aka not Gentoo-hardened, I’d suggest you do something about it anyway. I mean even Windows has it (since XP SP2).

by admin at Fri, 12 Mar 2010 10:43:57 +0000

Kai

Back to the 90s! (where things were secure)

As you might know, my blog/cms solution is a heavily outdated Joomla/Wordpress combo. I already found an XSS attack by myself. But I guess there are at least a hundred remote code executions in the wordpress components (although not directly exposed), not to speak of the ancient Joomla software. And all that is f*cking PHP code!!!11 ;)

Now, how do you run outdated and insecure PHP code?
Put simply: You don’t!

And that’s exactly what I inteded to do. But at the same time I also was not to keen to migrate all the content to a new cms/blog platform. So what could I do? Well, I just took it offline — and moved the PHP code and the database to a local box. What you see here, is a httrack-mirror of the dynamic page, together with a tiny hack for the RSS/Atom feed. I have a small script that ftps the locally generated httrack image on my website. Ahhh, no more unprotected credentials and login forms, no more sessions, no more cookies, just plain static http.

Now I’m back in the good old 90s. But at least I don’t have to worry anymore :)

(The comment-function was used rarely anyway and I got a lot of spam to filter every day. Getting rid of the dynamic functions is not to huge a loss for me, I think.)

Now that I have this rolled out, I also think, that this is a solution for a lot of other old websites. So if you’ve got one lying around with code you don’t really want to run anymore but with content you might still want, just put it through httrack. It feels a bit like rendering a vector image into a bitmap. Having as few code on the servers as possible, definitely helps reducing your attack vectors.

by admin at Thu, 11 Mar 2010 17:01:15 +0000

Florian

IO-Durchsatz und kernel neuer 2.6.28

Kurze Notiz: Wer auch wie ich das Problem hatte, dass manche Anwendungen wie liferea das gesamte System einfrieren lassen, wenn sie ein bischen IO machen (eine sqlite-db nutzen z.B.) kann ich ein downgrade auf Kernel 2.6.28, z.B. 2.6.28-gentoo-r5, empfehlen. Seitdem ich von 2.6.33 umgestiegen bin, kann ich wieder Multitasking machen und liferea benötigt keine 20-30 Sekunden pro Artikel(!) zum Darstellen, wenn mal ein Bild enthalten ist. Auch insgesamt ist das System wesentlich responsibler geworden und damit wieder benutzbar. Das Problem als solches stellte sich durch 80-90% iowait dar - so dass ich trotz Dualcores nicht mehr arbeiten konnte, weil der IO Scheduler das System schlicht und einfach komplett lahmgelegt hat. Ich hoffe das wird mal wieder besser *seufz*

by Florian (noreply@blogger.com) at Tue, 09 Mar 2010 19:30:51 +0000

Florian

TU-Berlin: Sicherheitswettbewerb der AG-Rechnersicherheit

Die AG-Rechnersicherheit hat parallel zu ihrer Präsenz auf der CeBit einen Wettbewerb gestartet, an dem nun jeder per Internet teilnehmen kann um sein Wissen im Bereich der IT-Security zu testen... Dabei gibt es neben einfachen Fragen auch einige praktische Knobeleien zu lösen. Wer mitmachem möchte, sollte natürlich die Spielregeln lesen und das Anmeldeformular ausfüllen. Ansonsten sei jedem ein Besuch auf der CeBit am Stand B39 in Halle 9 ans Herz gelegt.

by Florian (noreply@blogger.com) at Thu, 04 Mar 2010 12:35:36 +0000

Kai

Bill Gates on climate change and how to prevent it.

As much as I don’t like the products of his former company, in this talk at TED he has a point I can agree with: To overcome the nearly inevitable, we need a “miracle” and this miracle has to come from research and economics. We have to find some technology that solves the energy crisis, is very cheap and doesn’t produce CO2. I don’t necessarily agree with his proposed technology, but the basic idea, I think, is correct. And, we need to invent this technology in the next 40 years. It worked with the Manhattan Projekt, it worked with the Apollo Program, it could work here, too. Industry won’t do it on it’s own, because an investment in such a projekt is a huge risk and will bring a lot of sunken costs uppon failure. The state is clearly needed here (as for any investment with huge fixed costs). But then just why don’t our governments spend more on education and research in this area?

by admin at Tue, 23 Feb 2010 13:07:43 +0000

New GPG Key

well, it seems my blog destroys even armored keys.
I guess you’ll find it on the servers, the fingerprint is:
1515 1500 8CC3 CE35 52CD C7BD DAE1 1BBD 410E 04AF
key-id is, ofcourse : 410E04AF

by admin at Tue, 23 Feb 2010 07:52:32 +0000

New GPG Key

Fingerprint: 1515 1500 8CC3 CE35 52CD C7BD DAE1 1BBD 410E 04AF

—–BEGIN PGP PUBLIC KEY BLOCK—–
Version: GnuPG v2.0.14 (GNU/Linux)

mQINBEtgtIABEADp57A3CMZBrCJsP+z2iQdRMIZ6rC03yht+cWz/wHKHdyLgTFIo
fMuQunIdnR5KQhsKXbhRkU18MhIxXiFmBPfNwUU9nv4MF8t6jkjEWOIFQ7lLwMM/
hXb8wdG4NnvwOX9sdCTYdwyxhvnvYKUjEiMC9L/3Aque82yefWtAtqOMFoHbeiFR
A6Q6qUE2/QaNm+vesbV7CrawjGu5pihPyqNNGK0gBeuko95izKxkExb7XTqGzx7E
93SGSRLqwS42eq+iFCfkD9mZD9xwQBtVq3Hlwf8×6eKZXHRSzu2FNdB4VKmZPfpE
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
8zFBhKTzHw==
=j/4m
—–END PGP PUBLIC KEY BLOCK—–

by admin at Tue, 23 Feb 2010 06:52:35 +0000

Daniel Käs

Reinventing Human-Computer Interaction


Many of you probably remember “Minority Report”, a mediocre science fiction film inspired by a short story of good old Philip K. Dick. The only thing I really remember well about this movie is the huge multi-touch computer used by the police force (or something). Although such sci-fi devices look great they are a total nightmare for every day use. Just imagine you have to lift your arms every time you try to switch to another tab page of your browser. That is not really a solution. But how can we use awesome looking multi-touch devices in combination with our other hardware? Here is a small video which came up with some cool and fresh ideas:

reinventing desktop human-computer interaction: 10/GUI

by Daniel at Fri, 19 Feb 2010 19:29:07 +0000

Daniel Käs

Java & Multicore


Recently I needed to run some very CPU intensive calculations in Java. In order to harvest the full power of my multicore machine I took a look at Java’s concurrent package. I never used this package before. Either I had some convenient third party library functions at my hand which successfully were able to hide all the multithreading stuff from me, sometimes I struggled with Thread, Runnable and synchronized statements or … I just used another language :P

So here are my results from a short trip into the adventurous realm of multicore programming in Java. To make things a little bit simpler in this post I will demonstrate to run several functions calculating a high Fibonacci number instead of using a more complicated real world example. The calculations will be distributed via a thread pool and all classes used in this example belong to the Java standard library, so there won’t be a need to install any extra packages.

The first thing we will need is a class implementing the java.util.concurrent.Callable interface in which fib(int n) will be a static function returning an integer:

class FibTask implements Callable<Integer> {
  private int n;
  public FibTask(int n) {
    this.n = n;
  }

  @Override
  public Integer call() throws Exception {
    return fib(this.n);
  }
}

Before we start to build our thread pool we can retrieve the amount of CPUs/cores of our system from the Java runtime:

int cpus = Runtime.getRuntime().availableProcessors();

OK, so the next step is building a thread pool. If you are looking for a pool with specific parameters and behaviour you can build one by using the ThreadPoolExecutor class. But luckily the concurrent package already offers a nice short cut to create a pool with a fixed size:

ExecutorService pool = Executors.newFixedThreadPool(cpus);

To execute functions in the pool you can either use it’s execute method or even more convenient: invokeAll. This method takes a list of tasks which have to implement the Callable interface executes them and returns a list of Future objects which hold the results of the Callable objects. The cool thing about invokeAll is it makes sure all tasks are executed before returning anything. So for all elements in the returned list Future.isDone() will be true:

List<FibTask> tasks = new ArrayList<FibTask>();
for (int i = 0; i < cpus; i++) {
  tasks.add(new FibTask(45));
}
List<Future<Integer>> results = pool.invokeAll(tasks);

The results list holds the Future values now. If the pool is no longer needed, it should be closed properly by calling it’s shutdown() method. Before we can retrieve and print out the results we need to check for any errors occurred during the calculation:

for (Future<Integer> result : results) {
  if (result.isCancelled()) {
    System.err.println("Life is a bitch");
  } else {
    try {
      System.out.println("result: " + result.get());
    } catch (ExecutionException e) {
      System.out.println(e.getCause());
    }
  }
}

And this is all you need to run your code on multiple cores. Couldn’t be easier!

by Daniel at Mon, 15 Feb 2010 21:54:47 +0000

Martin Häcker

Wo findet Innovation beim Lehren statt?

Früher mal dachte ich, dass das ja in den Universitäten sein muss. Schließlich ist da alles auf einem fleck. Forscher und Lehrer und Schüler.

Optimale Bedingungen eigentlich - nur dass dort an der Lehre überhaupt nicht geforscht wurde. Schließlich war das ja nur ein Anhängsel das Zeit kostet. Kein Forschungsgebiet.

In der Schule natürlich sowieso nicht und danach?

Im Beruf?

Ich bin natürlich mein eigenes Forschungssubjekt, weil ich weiter lerne und das beobachte. Und für mich selber ist es natürlich so dass ich ständig mit Innovationen habe, durch meine Möglichkeit das Netz zu verwenden.

Aber ab und an trifft man auf etwas großartiges. In einem  Interview von John Udell bin ich auf die  Khan Academy gestoßen.

Das ist ein Mensch der seine Erfüllung darin findet dass er kurze Videos (~10 Minuten lang) aufnimmt in denen er eine Sache - ein Konzept aus Mathematik, Physik, Chemie, Finanzen und vielen weiteren Themen.

Und die sind gut!

Ausserdem hat er  eine Software online gestellt die ein sehr spannendes Konzept verfolgt: Wissen ist dort als Graph aufgestellt - von einfachster Addition bis zu relativ komplexen Themen. (Aber viel weniger als als Video verfügbar ist).

Der Clou: Man fängt bei einfacher Addition an und kriegt die nächst-Schwierigeren Aufgaben erst wenn man 10 Aufgaben aus einem Wissensgebiet erfolgreich direkt hintereinander gelöst hat.

Dazu gibt es jeweils den ganzen Lösungsweg plus einen Link auf das dazugehörige Video wenn man es noch mal im Detail braucht.

Das führt dazu dass Kinder gerade bei Mathe ihre Lücken auffüllen können die sie irgendwo im Verständnis haben. Und das finde ich Großartig - denn das ist eines der größten Probleme von Großgruppen-Lernen. Wenn ein Thema vorbei ist, dann ist es vorbei - egal ob man es verstanden hat oder nicht.

Verdammt schade dass es noch soo lange dauern wird bis solche Konzepte auch in der "Offiziellen" Lehre angekommen sind.

by dwt at Sun, 14 Feb 2010 22:24:49 +0000

Kai

trees

trees

FED2d, 50mm, Ilford Delta 100, lab scan

by admin at Fri, 12 Feb 2010 07:08:03 +0000

Seba

xkcd, anyone?

Ich habe ein kleines Script geschrieben um von xkcd alle Comics herunterzuladen. Am Anfang war es noch ein Basheinzeiler, aber als ich noch den Title-Text drunter haben wollte, war mir das ganze dann doch etwas zu unübersichtlich. Jetzt sind es 19 Zeilen geworden. Zu finden ist es hier in der Scripte/Zeug-Section.

Das Ergebnis sieht dann ungefähr so aus:

234_escape_artist.png

Bis Comic 700 ist die Sammlung um die 70 MB groß.. Viel Spaß damit ;)

Fri, 12 Feb 2010 00:27:42 +0000

Kai

berlin winter

berlin winter

FED 2d, 50mm, Ilford Delta 100, lab scan from neg

by admin at Wed, 10 Feb 2010 08:30:47 +0000

Kai

see it

see it

FED 2d, 50mm, f/2.8, Ilford Delta 100, Lab Scan

by admin at Tue, 09 Feb 2010 05:47:06 +0000

Martin Häcker

Gletscher Rückzug

Klima-Veränderung ist ein schwer zugängliches Thema.

Aber auch Sau-Wichtig. Und daher finde ich es grandios was James Balog für eine Arbeit gemacht hat um den Gletscher-Rückzug zu dokumentieren. Mit knapp 30 Zeitraffer-Kammeras macht er über Jahre Hinweg jede Stunde ein Bild von vielen Gletschern und daraus dann einen Film.

Wow.

by dwt at Mon, 08 Feb 2010 19:58:34 +0000

Seba

It's alive!

Einige von euch mögen es gehört haben: Mein Handtuch (Thinkpad R61) war kaputt. Große Trauer.

Problem: Im laufenden Betrieb schaltete sich das Notebook mit einem "Emergency Shutdown" ab. Startete man einen Prozess ist ein Kern schnell von 30°-40° C auf 95°C gesprungen (innerhalb von 2-3 Sekunden), aber genausoschnell auch wieder abgekühlt. Ausserdem ließ Handtuch sich sich nicht rebooten, denn beim Reboot lief es zwar für ca 5 Sekunden, schaltete sich dann aber _komplett_ ab. Sogar die Anzeige für "Stecker ist eingesteckt" war aus. Erst durch entfernen aller Stromquellen für kurze Zeit ließ es sich wieder starten. Für mich sah das ganze nach einem Problem mit dem Temperatursensor aus, da ich mir so krasse Temperatursprünge nicht vorstellen konnte. Eine andere Diagnose war Mainboardschaden (welches neu ca 400 Euro kostet).

Und was war das Problem? Die Wärmeleitpaste.

Ich bin heute mit dem Laptop mal bei Helge vorbeigegangen um das ganze mal von einem Diplomingeneur angucken zu lassen.. Wir haben das Thinkpad nochmal zusammen auseinandergenommen (dafür gibt es eine sehr schöne Anleitung von Lenovo, von Reihenfolge der Module über Länge der Schrauben bis zu wie fest sie angezogen wurden in Newtonmeter) und diesmal auch den Lüfter mitsamt Heatpipe ausgebaut. Zu sehen war auf Prozessor/Grafikkarte ein Rest Wärmeleitpaste, welcher ziemlich bröckelig war - da konnte einfach keine Wärme abgeleitet werden. Was mich wundert: Ein dritter Chip, der auch noch an der Heatpipe hing, hatte ein Wärmeleitpastepad bekommen, aber Prozessor/Grafikkarte nicht. Sehr skuril. Jedenfalls hat Helge eine große Tube Wärmeleitpaste aus seinem Repertoire geholt und wir haben dieses Problem behoben. Eine Messung an der Prozessor-Heatpipe ergab vorher 32°C, nachher 44°C. Wie es aussieht hat bei einem Reboot der Prozessor (als er merkte, dass er zu heiß wird/ist) dem gesamten System einfach den Strom unterm Hintern weggezogen.

In diesem Sinne: Horray, mein Handtuch lebt wieder!

Ein Wort noch zu Garantie/Gewährleistung und Cyberport: Handtuch hat ja nur ein Jahr Garantie gehabt, aber trotzdem die zwei Jahre gesetzliche Gewährleistung. Daher bin ich auch vorher zu Cyberport in der Friedrichsstraße gestiefelt, um zu gucken, ob da noch was zu machen ist. Der Fehler wäre ja theoretisch, wenn man die Symphtomatik richtig deutet (was ja als Händler dieser Geräte durchaus möglich sein sollte), leicht zu beheben gewesen und das ganze wäre bei der perstigen Qualität der Wärmeleitpaste evtl. sogar ein Herstellerfehler. Aber der Cyberportmitarbeiter hat es sich nicht einmal angeguckt. Fragte nur nach Garantie (war abgelaufen), ob die 6 Monate der Gewährleistung schon vorrüber wären (jop) und ob ich "eindeutig beweisen könne, dass der Fehler schon beim kauf bestand". Sehr schön noch:

<ich> Also habe ich jetzt nen kaputten Laptop und muss damit Leben?
<Verkäufer> Klingt jetzt vielleicht doof, aber ja.

Kundensupport sieht anders aus. Aber vielleicht war das auch nur ein Einzelfall, who knows. Hauptsache mein Handtuch geht wieder! :)

Mon, 08 Feb 2010 18:13:37 +0000

Martin Häcker

100 mal Floss Weekly

:) Einer meiner Lieblingspodcasts hat es jetzt auf die 100. Ausgabe gebracht.

Und da muss ich doch mal gratulieren. Vor allem weil ich bei der Quiz-Show über Programmiersprachen und deren Verbreitung absolut herzhaft gelacht habe. :-)

Hörenswert! Immer wieder großartige Interviews mit Machern von Open Source Projekten.

[Hier gehts zur 100-sten Show  http://twit.tv/floss100]

by dwt at Sun, 31 Jan 2010 11:02:06 +0000

Kai

Der Ziegelblitz fällt

Adobe is not amused (via Golem). Apple hat nämlich weder im iPhone, noch im iPad Support für Flash eingebaut. Das hat bestimmt auch technische Gründe (läuft einfach nicht auf ARM). Viel wichtiger sind jedoch, glaube ich, die politisch/ökonomischen. Wenn Web-Entwickler ihren Content auch auf iPad und iPhone ausliefern wollen, dann müssen sie etwas benutzen, was nicht Flash ist. Web-Entwickler sind nun eine Horde von Leuten, die völlig unkontrolliert jedoch einer gewissen kollektiven Kultur unterliegen. Der echte Web-Entwickler mag Dinge die schön sind. Dazu gehört auch schöner HTML/CSS Code, der sich an W3C Standards hält (jeder flucht über IE). Apple Produkte sind schön, deshalb mögen Web-Entwickler oft auch Apple Produkte. Apple hat also die Web-Entwickler hinter sich und deshalb können sie sich das auch erlauben.

Was wird passieren? Millionen von Web-Entwicklern werden zu ihren Chefs gehen und sagen: Wir müssen aber auch iPad und iPhone unterstützen. Und immer wenn Chefs iPhone oder iPad hören, bekommen sie $$$-Zeichen in den Augen. Also stimmen die Chefs zu und wir kriegen Content jetzt auch W3C konform ausgeliefert.

Das wiederum wird dafür sorgen, dass Browser die W3C Standards besser unterstützen. Das wiederum wird für mehr W3C-embedded Content sorgen. Das Ganze nennt man “virtous cycle”. Das Gegenteil wäre der “vicious cycle”.

Ich glaube wir sind Flash innerhalb von zwei Jahren los.

Endlich!

by admin at Fri, 29 Jan 2010 09:36:03 +0000

Martin Häcker

Softwareentwicklung als Kooperatives Spiel

Das ist ein steinalter  Vortrag von Alistair Cockburn (gesprochen Co-Burn) in dem er darlegt wieso er findet das das eine sehr gute Sichtweise auf Softwareprojekte ist.

Der Vortrag ist schon 10 Jahre alt - und trotzdem finde ich ihn sehr Aktuell.

Lesenswert!

by dwt at Thu, 28 Jan 2010 22:35:49 +0000

Daniel Käs

Struggling with HTML or How To Use Vertical And Horizontal Alignment In CSS


HTML wasn’t invented to write interactive, application-like web pages, it just offers a convenient way to create really simple documents containing links. Maybe that’s why programming web pages nowadays feels a little bit like writing a GUI in LaTeX. But maybe I am just complaining because I am not used to it … I am a software developer, not a web designer.

Hopefully HTML5 will make everything a little bit simpler. Anyway … I just want to create a simple box containing text centred in the middle of it. This box will be used as a button on a website. So what I need is to specify vertical and horizontal alignments. The horizontal alignment attribute is called “text-align” which I guess is a relict from the good old days when people where used to browse hypertext documents. But to put the text in the centre of the box I had to shoot myself into the foot … twice!

First I needed to create a table with one row and one entry and then I was able to use misuse the table alignment options to centre the text vertically with an attribute called “vertical-align”. Why is there no “horizontal-align”? I don’t know. Why do I have to use a table? I don’t know. Don’t ask questions when writing CSS/HTML code. Never!

Here is the result:

<html><head></head><body>

<div style="background-color:grey;width:10%;height:10%;position:absolute;top:10%;left:40%">
  <table style="width:100%;height:100%">
    <tr><td style="vertical-align:middle;text-align:center">
      This is a test
    </td></tr>
  </table>
</div>

</body></html>

Hooray! Please don’t ask me how long I needed to figure this out :/
I wonder if there is a more elegant solution …

The style of the div element can be used to define the box, Mozilla’s Gecko engine supports some really cool CSS features like round edges, shadows and gradients (in the case of Firefox 3.6). But of course it won’t work with other browsers, it would be to easy if just everyone could write CSS/HTML code without studying computer science first. However, if you have Firefox just look and be amazed of my mighty text box:

This is a test

by Daniel at Thu, 28 Jan 2010 19:08:39 +0000

Kai

noch was zu apfel

Völlig anlasslos, möchte ich diesem kleinen aber treffenden Beitrag beipflichten. Auf dass sich alle Leser noch einmal überlegen ob sie Äpfel wirklich kaufen mögen.

by admin at Thu, 28 Jan 2010 17:31:50 +0000

pyaed - a python audio entropy daemon

Same game again. Not all my boxes have tv-cards to leach entropy from, so I needed some other source. The soundcard comes into mind quickly, and every box has a soundcard nowadays. The existing audio_entropyd once again wasn’t useful, because what it produced didn’t survive the FIPS-140-2 tests (aka wasn’t really random at all on my box). I then went on reimplementing the exact same algorithm it uses in python with pyaudio to take a closer look on the data. When I dumped the output of this algorithm into a file, I could even see patterns in hexdump of that file. strange. Well, there must be some randomness, so I went on implementing a different algorithm. It also records stereo audio and then looks at the upper bit (0×0001) in the samples. If this bit is different on both channels and the current two stereo samples are different from the last two, it records that as an entropy bit (you can argue about that, though - afaik randomsound uses the same mechanism). To add some more confidence in the entropy, it then XORs 64kbit of entropy into a 4kbit block. This way, it’s getting around 3kbit/s of entropy out of the soundcard.

download sourcecode

README:

Python Audio Entropy Daemon v0.0.1 (works on my machine)
(c) 2010 by Kai Dietrich

Inspired by audio_entropyd by Folker Vanheusden
http://www.vanheusden.com/aed/
and randomsound by Daniel Silverstone
http://www.digital-scurf.org/software/randomsound

This software is Licensed under the
GNU General Public License 2.0 or later.

System Requirements:
--------------------
Python 2.6
PyAudio 0.2.3
a soundcard with line or mic in
optional: rng-tools / rngd

What it does:
-------------
Pyaed records samples from an audio input device, extracts some noise/entropy
and writes it to a fifo.

Pyaed opens the default audio input device pyaudio finds and records frames
(44.1kHz, 16bit, stereo). It looks at the highes bit (0x0001) in the samples from each channel.
If these bits differ and the samples are different from the last (to ignore constant signals),
a bit of entropy is recorded. To increase the qualitiy of randomness, it then compresses 64kbit of
entropy into 4kbit by XORing the bits. It then writes the bits into a fifo.
You can then attach rngd from the rnd-tools to this fifo (rngd -f -r entropy.fifo).
rngd will test the noise with a FIPS 140-2 test for it's statistical randomness
and delivers the bits to the kernel entropy buffer.

It does not work, what can I do?
--------------------------------
a) read the code (it's not that much)
b) fix the code
c) Play around with alsamixer to get noise on the default input device,
   turn up boosts and input levels until you get levels around 50%. If you want to, you can even put
   in a stereo mic to get noise from the air and not just the electromagnetic noise from the ADC.

How can I enhance the code?
---------------------------
Just do it. If you like this tool, you can just set up a project somewhere
and start collecting improvements. For me this was just some fire-and-forget
single-task code.

by admin at Thu, 28 Jan 2010 07:27:01 +0000

Daniel Käs

What is the most popular programming language?


Well, the answer is Java … according to the TIOBE Programming Community Index. Other statistics also announce Java as the most popular one. C/C++ is following closely but is still behind Java. Surprisingly PHP is in many charts on the next place while Perl and Python are struggling for being the most popular scripting language. However Ruby seems to continue it’s rise to conquer the world, although slowing down in the last months.

Here is a chart showing the long term trend of programming languages:

from http://www.tiobe.com

OK, so Java and Perl are slowly dying out. But who is replacing these languages? On the one hand Python and Ruby finally seem to get the attention they deserve. C# is also becoming more popular and is growing in a very stable rate. I think the development of C is interesting. The rapidly growing mobile market may be one reason why this language is still that popular. In the time of web application, plugins and powerful CPUs I would expect C to lose “market share” among the programmer community, but that doesn’t seem to happen.

by Daniel at Tue, 26 Jan 2010 21:12:56 +0000

Kai

Definitions

“[…] [D]efinition of a liberal: a conservative who just got arrested. A conservative, of course, is a liberal who just got mugged.”

just stumbled on it in the book “Steel Beach” by John Varley.

by admin at Sun, 24 Jan 2010 10:21:34 +0000

Kai

Realism in UI design

A good introduction into the cognitive aspects of UI design

via /.:

http://ignorethecode.net/blog/2010/01/21/realism_in_ui_design/

by admin at Fri, 22 Jan 2010 20:08:05 +0000

Kai

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

by admin at Thu, 21 Jan 2010 06:51:26 +0000

Kai

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)

by admin at Wed, 20 Jan 2010 06:09:04 +0000

Kai

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

by admin at Tue, 19 Jan 2010 07:34:17 +0000

Martin Häcker

Python Saug Punkte contd.: x += y ist nicht x = x + y

a = b = list()
a = a + ['foo']
print b # => []
a = b = list()
a += ['foo']
print b # => ['foo']

Doh. Wie kann das sein? Kommt man von C ist das erst mal sehr verblüffend - und auch die meisten anderen Programmiersprachen die ich kenne verwenden a += b als equivalent für a = a + b.

Well, nicht so Python. Weil  da gab es offenbar mal Programmierer die fanden dass man Code der mit Matrizen rechnet lieber mit Operatoren schreiben möchte weil sich das besser ließt. Natürlich nicht mit den normalen operatoren wie */+-, weil, da kann man ja den empfänger nicht in place modifizieren, und wie jeder weiß sind Matrizen ja so groß dass die dann nicht mehr in den Ram passen.

Also haben sie die <op>= operatoren in Python so spezifiziert, dass sie ihre left-hand-variable in place modifizieren wenn diese mutable sind.

:-(

by dwt at Fri, 15 Jan 2010 14:44:19 +0000