mupuf.org // we are octopimupuf.org

At mupuf.org, we write code, we hack, and we do science!

Merry Christmas and Happy New Year :)

The MùPùF.org devs wish you a merry Christmas and a happy new year!

We truly hope to deliver you more articles this year (such as how to make a stuffed toy tux or how the Linux graphic stack roughly works).

This year being the end of most of us’s master degree, we should have some more time to work personal projects like the Arduide, PPassKeeper or the reverse engineering of nVidia cards ;) We’ll keep you up to date with that!

As for the 2011 wishes, we let each dev write his own article :)

Please tell us if what you would expect from us, we highly value any comment!

Benchmarking Btrfs on Linux 2.6.37-rc3

Before reinstalling all the operating systems of my laptop, I was wondering if Btrfs would be a good fit for my unstable/development OS.

I wouldn’t have cared that much about the fs if my lappy’s hdd wasn’t slow as hell. I wondered if the built-in compression support of Btrfs could help me get a little more performance out of it. Also, as I tend to deal with loads and loads of ridiculously small files, the fact that Btrfs stores them in the extent of the directory inode should lower the seeking time.

Before reinstalling everything based on the assumption that Btrfs would actually be faster, I wanted to see some benchmarks on simple tasks like extracting, compiling a kernel and removing files. So far, I haven’t been able to find benchmarks for a recent kernel (read, at least linux 2.6.36) except the one from phoronix which doesn’t tell you how much CPU is being used and doesn’t test the compress mount option.

Let’s Talk About Music

I’ve just realised I never posted anything related to music, may it be what I listen to or what I like to play.

I know this is supposed to be a tech-blog but, really, are you able to work without music? I personally can’t.

What kind of music do I listen to?

I usually like to listen to progressive music, may it be progressive rock or progressive electronic music.

I shouldn’t talk too much about this, let’s see names. Music notes speak louder than words ;)

We Have Won the Security Challenge Initiated by the French Research Agency!

As both a student and a trainee, I have been researching on system security for about a year and a half with the LIFO research group.

My work for the LIFO has first been to develop a Mandatory Access Control system designed to control high-level interactions initiated by the system user.

I’ve written a paper on research project called “A Dynamic End-to-End Security for Coordinating Multiple Protections within a Linux Desktop” that has been published at the CTS2010 conference. I also went and presented this paper in Chicago (see My research project presented at CTS 2010).

This work has been integrated in the product we’ve presented at the SecSI(fr) security challenge launched by the French Research Agency.

Our solution, called SPAClik(fr), have just won the security challenge(fr).

I also happen to work on SELinux (“Automated SELinux policy learning” and “Memory access tracking with SELinux”), but I’ll tell you more about this in a later post.

That’s all folks!

XDS 2010 - the X.org Developer Summit 2010 in Toulouse!

From Sept 16th to Sept 18th, the X.org Developer Summit 2010 took place in Toulouse, a nice city situated in southern France.

Having started working on Nouveau/pscnv (I’ll talk about this a bit later) in June, I couldn’t dream of a better place for the XDS to happen. Indeed, It took me around 8 hours by train to get there, I also have close friends there (so I have been able to attend the conference by day and have fun with my close friends by night). My parents also happen to live just a bit southern, so I already knew Toulouse.

MùPùF.org Will Change Its Server

If you are often visiting mupuf.org, you may have noticed some down times. These are in general due to problems with one single weakness of the current dedicated server we use, the fact that / is stored on a distant hdd accessed through the network. Also, we were short of memory which lead us to some serious memory optimisation, sacrificing some services for the common good.
At the moment, we are using OVH’s RPS1(fr).

As a replacement, I had been wondering whether to use the cloud or to go for a really expensive dedicated server. Both had pitfalls and I couldn’t decide what to do.

Then, OVH launched a new kind of dedicated server, just 3€ more expensive than the RPS1 we already had. This new server is called Kimsufi 250G(fr) and we have decided to go for it!

My Research Project Presented at CTS 2010

Introduction

I’ve been working on a research project since April 2009 for the security researchers of my school. This project was about creating a “Mandatory access control for GUI-oriented software”.

The goal was to get data from the applicative layer of the OS (user programs) in order to be able to switch between different pre-existing domains. A domain is a system-wide security state which allows a certain set of actions/interaction between the user and the OS. It is enforced by the use of security components like firewalls or other mandatory access control systems.
The final result being an operating system which would always grant the user with the minimal set of rights needed for the current task the user is doing (web browsing, e-shopping, watching movies, etc…).

Implementation

This project has been implemented and is named PIGA-Systrans. It is used by PIGA-OS, the winning secure operating system presented to the SecSI(fr) contest made by the French research agency.

CTS 2010

In January 2010, I co-wrote an article on this project with the two teachers who were supervising me. This paper has been accepted, published and presented at The 2010 International Symposium on Collaborative Technologies and Systems (CTS 2010) in Chicago.
Here is the submited paper, before corrections.

How-to: Use Graphviz to Draw Graphs in a Qt Graphics Scene

Well, it’s been a long time. This post will be dedicated to explanations on how to draw graphs in Qt’s QGraphicsScene, using Graphviz. We’re not talking about rendering an SVG graph with Graphviz and then printing it in a scene, however. What we will do, instead, is:

  • represent a graph, using a C++ wrapper class for libgraph
  • tell Graphviz to compute positions for each node, and the path of each edge
  • draw our graph using QGraphicsEllipseItem and QGraphicsPathItem

The whole thing is used in a computer security research project on which I’m not allowed to give any information, so I will be vague on some parts of this tutorial, and I will not provide a whole bunch of ready-to-run code. I’m still going to give you the hints for fulfilling the three tasks above, and I will publish the class I wrote for my project (it is, of course, not generic at all, since it was designed for my particular needs).

This tutorial assumes you have a decent knowledge of how Graphviz works, and basic knowledge of the QGraphics API. Here is a preview of a possible result with this tutorial, with no tweaking:

Preview of the capabilities of Graphviz and Qt associated

MùPùF.org: An Awful Week

You may know our server is hosted by OVH and is SAN-based. This means that the / of our server is not stored on a local hard disk drive but it is instead stored in a distant SAN. We already encountered “little” uptime problems because of some OVH service down-times. Well, last week has been the most horrible week ever[fr].

We had terrible throughput down to 70KBit/s, latencies up to 2 seconds and several down time that could have been as long as 8hours in a row.