Categories
Hardware Technology

Cours Arduino

Si tu veux aussi apprendre à faire des bidouilles sympas avec Arduino voici un site intéressant. Il y a pas mal de tutoriels bien expliqués et on peut commander le matériel requis si nécessaire.

Categories
Python

pyAggr3g470r va utiliser Mako

Je suis et ai toujours été mauvais en développement Web, même si en ce moment j’utilise plutôt beaucoup Flask et CherryPy pour pyAggr3g470r. Résultat, je développe un peu un mode quick and dirty. Je fais donc du Dirty Web Development, d’autres font du Dirty Operationg System vous me direz. J’ai pensé à usiter Tkinter, c’est pour dire.

Après presque trois années de développement j’ai enfin décidé de remédier à ce problème en utilisant Mako, un moteur de template écrit en Python. En gros, ça va me permettre de séparer le code Python du HTML grâce à des templates. Je veux faire ça car pyAggr3g470r à trois ans (plus de 500 commits) et fonctionne plutôt bien pour mes besoins.

Je pense que le code va grandement gagner en lisibilité (un exemple) mais aussi que cette branche sera l’occasion d’améliorer certaines choses qui devraient l’être depuis longtemps. La prochaine fois, je commencerai à utiliser un framework de ce type au début du projet.

Categories
Machine Learning

Algorithme des k-moyennes avec pyAggr3g470r

Ou comment trier ses flux de manière intelligente et automatique.

Ces derniers temps je m’amuse avec de petits algorithmes de machine learning. J’apprends beaucoup de choses intéressantes grâce à ce beau livre.

Quel est donc le rapport avec pyAggr3g470r? La réponse est simplement que j’ai dépassé les 40.000 articles stockés en base de donnée par pyAggr3g470r (42.105 articles pour être exact). Ce qui constitue donc un bon ensemble de documents pour tester quelques algorithmes de clustering. J’ai donc commencé par tester un algorithme dit de K-means clustering assez simple à écrire en Python. Cela en utilisant la fonction de Pearson qui mesure la dépendance linéaire (corrélation) de 2 vecteurs. Les tests avec Tanimoto sont moins concluants je trouve. Par contre, la distance Euclidienne fournie d’assez bons résultats. Mais moins bons qu’avec Pearson.

Ci-dessous, voici donc le résultat avec la corrélation de Pearson:

Et voici les clusters que l’on peut voir avec cette représentation 2D:

  1. AdulauWikiDiary, Python News, Free Software Foundation
  2. Schneier on Security, LWN.net, Linux Kernel Newbies, dive into mark, Matt Blaze’s Exhaustive Search, cr0 blog, Handcrafted Games, etbe – Russell Coker, quuxlabs, The History of Python, Lennart Poettering, Victor Stinner, Neopythonic, sysc.tl, KDE.news, Fetchez le Python, linux kernel monkey log, Spaf’s Thoughts, Armed and Dangerous, Linus’ blog, Jefferson’s Wheel, The Invisible Things Lab’s blog
  3. Slashdot
  4. Weblogue de bnj, L’essentiel | News, Le Tigre, InternetActu.net, Journal d’un avocat, Classe, Pas Classe…, DLFP – Dépêches, Blog de Stéphane Bortzmeyer, DLFP – Journaux, ~/blog
  5. Standblog, Framablog, April, Blog Haypo, Pour les formats ouverts !
  6. La Quadrature du Net

On peut déjà constater que les blogs en langue Française ne sont pas mélangés avec les blogs en langue Anglaise. Le groupe 5 est plutôt intéressant, la thématique de ce groupe semble tourner autour du logiciel libre. Mis à part le blog de Victor Stinner.
Les blogs Anglais sont assez techniques: Linux, Python, Sécurité, etc. J’ai fais de nombreux tests et il arrive parfois que le deuxième groupe soit scindé en deux ou trois groupes (par exemple un groupe pour “LWN.net”, “Linux Kernel Newbies” et “linux kernel monkey log”).

Pour aller plus loin je teste un algorithme d’EM clustering comme on me la conseillé. Pour le moment j’ai quelques problèmes avec cette technique car l’algorithme utilise une quantité assez importante de mémoire pour un nombre de cluster égal à 8. Avec 3 clusters, 6Go de mémoire sont utilisés. Toujours avec une base de 42.105 articles.

Categories
Security

CRIME, l’attaque contre SSL/TLS

Un article intéressant et simple à propos de l’attaque CRIME (qui n’affecte pas Tor).

Categories
Security Virtualization

Sécurité et virtualisation (architectures Intel)

Une présentation très intéressante sur la sécurité de diverses techniques de virtualisation (sur x86/x86_64), par exemple: la translation dynamique (QEMU), la translation binaire (VMware, VirtualBox) et la paravirtualisation (Xen). Présenté à PacSec. Le blog de l’auteur.

Categories
Security

hack.lu 2012

Cette année la conférence hack.lu se déroulera du 23 au 25 octobre. J’espère qu’on s’y croisera! Voici la liste des interventions.

Categories
Programming

Tag:junction=roundabout

Comme on peut le constater dans la fenêtre de gauche de la capture, il y avait un léger bug dans mon algorithme. Maintenant corrigé. Donc si un jour vous bidouillez des fichiers OSM, pensez que les chemins (qui sont orientés ou non) ne représentent pas forcément les rond-points (qui eux sont à sens unique par défaut). Sans oublier les “mini” rond-points.

Comme quoi il faut toujours prendre le temps de lire la documentation avant d’implémenter. Afin de ne pas être endetté. J’aimerai aussi bien trouver une méthode un peu plus scientifique (ou au moins plus exhaustive) pour tester l’existence d’autres bugs de ce genre.

En attendant: If it compiles, it’s correct.

Categories
Python Security Steganography

Séquence d’entiers A000217

Un test avec la séquence d’entiers A000217.

$ slsb-set --hide -i examples/pictures/Montenach.png -o ~/enc-OEIS_A000217.png --generator OEIS_A000217 -m 'Happy new year!'
$ slsb-set --reveal -i ~/enc-OEIS_A000217.png --generator OEIS_A000217
Happy new year!

$ slsb-set --reveal -i ~/enc-OEIS_A000217.png --generator fermat
Impossible to detect message.

Rien de bien compliqué ici. Il s’agit juste de montrer comme il est simple d’ajouter des générateurs.
J’ai aussi ajouté de nouveaux exemples plutôt intéressants, comme celui-ci.

Merci aussi à Vincent qui a répondu à l’appel à l’aide du billet précédent.

Ce post n’est pas assez important pour mériter une photo de Sarah. Mais ne vous inquiétez pas, elle va y passer.

Categories
Security Steganography

Stéganographie avec ensembles en utilisant la fonction identité (avec Jessica Alba)

Jessica Alba

Pourquoi ne pas ajouter la fonction identité ( avec son implémentation en générateur) à la liste des générateurs permettant d’engendrer les ensembles?
On pourrait ensuite vérifier si on peut retrouver le message avec l’outil slsb classique. Faisons le test:

# On cache avec l'outil slsb-set (LSB + fonction identité)
$ slsb-set --hide -i ~/Jessica_Alba.png -o ~/Jessica_Alba-enc-gen.png --generator identity -m 'Je préfère Cédric à Michael Weatherly.'

# On tente de retrouver le message avec l'outils slsb (juste LSB)
$ slsb --reveal  -i ~/Jessica_Alba-enc-gen.png
Je préfère Cédric à Michael Weatherly.

Et ça fonctionne! Ça peut sembler logique, mais pour moi c’était un peu la surprise. La surprise qui veut dire que ce n’est quand même pas codé n’importe comment 😉

Heureusement d’autres générateurs d’ensembles sont disponibles. Voici la liste des générateurs déjà implémenté.

Appel à l’aide. Si vous avez une implémentation un peu voir beaucoup plus performante que la mienne pour Syracuse, elle serait la bienvenue! Mais j’en doute… Syracuse:

Post lié: Stéganalyse de la méthode LSB (avec un ensemble de nombres décrit par crible d’Eratosthenes) avec Jennifer Morrison

Categories
Security Steganography

Stéganalyse de la méthode LSB (avec un ensemble de nombres décrit par crible d’Eratosthenes) avec Jennifer Morrison

Tout d’abord afin se rafraîchir l’esprit, on pourra lire l’ancien billet Stéganalyse de la méthode LSB. Il s’agissait d’usiter la méthode dite Least Significant Beat puis de comparer la stéganalyse du fichier original et du fichier avec un message caché. La conclusion était que grâce à la stéganalyse par parité il était aisé de détecter une image altérée par la méthode LSB classique.

Aujourd’hui nous allons en plus caché le message avec la nouvelle technique. Qui consiste à utiliser un ensemble de nombres pour sélectionner les pixels où seront cachés les données. Pour cette exemple nous allons utiliser le crible d’Eratosthenes.

J’avais promis qu’après Elisha Cuthbert nous passerions à Jennifer Morrison.

Ensuite il suffit d’exécuter les commandes:

# Cache le contenu de secret.txt dans Jennifer_Morrison-original.png en utilisant l'ensemble des nombres décrit par le crible d'Eratosthenes
$ slsb-set --hide -i ./Jennifer_Morrison-original.png -o ./Jennifer_Morrison-enc-gen.png --generator eratosthenes -f ./secret.txt
# Stéganalyse du fichier résultant 
$ steganalysis-parity -i ./Jennifer_Morrison-enc-gen.png -o ./Jennifer_Morrison-en-gen-steg.png

# Cache le contenu de secret.txt dans Jennifer_Morrison-original.png via la méthode LSB classique
$ slsb --hide -i ./Jennifer_Morrison-original.png -o ./Jennifer_Morrison-enc.png  -f ./secret.txt 
# Stéganalyse du fichier résultant
$ steganalysis-parity -i ./Jennifer_Morrison-enc.png -o ./Jennifer_Morrison-en-steg.png 

# Stéganalyse du fichier original
$ steganalysis-parity -i ./Jennifer_Morrison-original.png -o ./Jennifer_Morrison-steg.png

Vous obtiendrez en résultat ces fichiers (survollez avec la souris les images afin de comprendre de quoi il s’agit):

Fichier original Stéganalyse du fichier original

Texte caché (LSB)

Texte caché (LSB + Eratosthenes) Stéganalyse de l'image avec un texte caché (LSB + Eratosthenes)

Les 3 sublimes images de la première colonne paraissent identiques.
On peut observer une étrange régularité au début du fichier résultant de la stéganlyse de l’image dans laquelle un texte a été caché via la méthode LSB classique.
Par contre il est plus difficile de détecter une anomalie similaire sur le fichier résultant de la stéganalyse de l’image dans laquelle un texte a été caché via la méthode LSB tout en utilisant un ensemble de points (ici obtenu avec le crible d’Eratosthenes).

Si vous ne me faites pas confiance:

$ wget http://blog.cedricbonhomme.org/wp-content/uploads/2011/12/Jennifer_Morrison-enc.png
$ wget http://blog.cedricbonhomme.org/wp-content/uploads/2011/12/Jennifer_Morrison-enc-gen.png

$ slsb-set --reveal --generator eratosthenes -i ./Jennifer_Morrison-enc-gen.png  -b text-dec-gen.txt
$ slsb --reveal  -i ./Jennifer_Morrison-enc.png  -b text-dec.txt
$ cmp text-dec.txt text-dec-gen.txt 
$ cat text-dec.txt 
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.

$ slsb-set --reveal --generator fermat -i ./Jennifer_Morrison-enc-gen.png  -b text-dec-gen.txt
Impossible to detect message.

La conclusion évidente est donc qu’il est préférable de ne pas utiliser des pixels se suivants mais un ensemble de pixels bien réparti que l’on pourra retrouver afin de récupérer le message caché. Ici l’idée était donc de générer des ensembles via des générateurs de nombres entiers. La qualité de la répartition va donc dépendre de la suite choisie. On aurait très bien pu utiliser la suite de Fibonacci par exemple.

Vous trouverez plus de détails ainsi qu’un meilleur exemple à cette page.

La prochaine fois on se fait Jessica Alba ou Sarah Michelle Gellar.