Archive for the ‘informatique’ Category

Tripaille sur configuration https

Wednesday, March 13th, 2013

Suite à l’actualité Apple n’a activé le HTTPS pour l’App Store d’iOS que récemment sur PC Inpact, ayant rebondi vers Ars Technica sur l’implémentation même de HTTPS, j’ai découvert Qualys SSL Labs.

Afin d’en avoir le coeur net, j’ai testé mon espace privé sécurisé avec https. Le résultat ne s’est pas attendre, hormis le problème d’utiliser un certificat auto-signé, quelques failles.

Mon serveur est basé sur Debian Squeeze et malheureusement les paquets openssl et nginx sont trop anciens ( 0.9.8o & 0.7.67 ). Après un passage de ces derniers à Wheezy ( 1.0.1e & 1.2.1 ), les quelques options de configuration nécessaires sont maintenant supportées.

Voici le fichier de configuration de nginx :

server {
    listen   443 ssl default_server; ## listen for ipv4

    server_name  monsite;

    ssl on;
    ssl_certificate      /var/ssl/server.pem;
    ssl_certificate_key  /var/ssl/server.pem;

    # to protect against BEAST Attack
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         AES:HIGH:RC4:HIGH:!aNULL:!MD5:!CAMELLIA:!SSLv2:!3DES;
    ssl_prefer_server_ciphers on;

    # should allow session resumption
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;

    # forward all request to apache
    location / {
        ...
    }
}

Articles intéressants :

HTML5 – Drag and Drop

Tuesday, August 21st, 2012

Après plusieurs jours de bataille acharnée, je dois m’avouer vaincu, le Drag and Drop de HTML5 a gagné :

  • un comportement différent pour chaque navigateur
  • une norme avec des choix douteux
  • des bugs, pardon, des limitations pour chaque navigateur

Reprenons, tout à ma joie de vouloir ré-implémenter l’un des nombreux modules Vassal (un jeu de carte solo) et continuer ma formation sur HTML5, je me prépare donc mon vi favori (l’unique quoi) et me lance dans la doc.

Firefox / Aurora 16

Avec l’aide de MDN, un prototype fonctionne rapidement mais première (toute petite) désillusion, si l’utilisateur a zoomé sur la page, les coordonnées de setDragImage ne sont pas affectés par le zoom mais heureusement le comportement par défaut montre la carte en transparence, ouf !

pseudo-code:

$('.allow_drag).bind('drag', function( evt ) {
 evt.originalEvent.dataTransfer.setData( "from", "pioche" );
} );
$('.allow_drop').bind('dragover drop', function( evt ) {
 if ( current_target == "defausse" && evt.originalEvent.dataTransfer.getData( "from") == "pioche" )
evt.preventDefault(); // pour dire que j'accepte depuis cette cible sur dragover ou que je traite le drop
} );

Chrome

Je me lance alors sur Chrome, confiant avec mes vrais morceaux d’HTML5 à l’intérieur, que mon code va fonctionner.

Fatalitas ! Rien ne fonctionne, des heures de recherche pour arriver sur la norme officielle : http://developers.whatwg.org/dnd.html :
On ne peut qu’écrire des données dans l’évènement drapstart (le début du drag’n'drop) et lire les données de cet évènement uniquement lors du drop (la fin du truc).
Or il existe juste quelques autres fonctions intermédiaires… comme dragenter, dragleave & dragover qui permette d’indiquer au navigateur que le drop est possible et à l’utilisateur un retour visuel : la norme voudrait que je ne puisse tester si le drop est possible uniquement lors du drop !
Mon sang ne fait qu’un tour : je remplace ma donnée from par un pseudo mime-type : from/pioche.

Autre regret, sur Chrome 21 Linux (du moins sur mes Debian Squeeze ou Wheezy), pas d’image lors du drap’n'drop, seulement une icône générique, là aussi, bug déjà ouvert (référence à retrouver). Pas de souci sur Windows.

nouveau pseudo-code:

$('.allow_drag).bind('drag', function( evt ) {
 evt.originalEvent.dataTransfer.setData( "from/pioche", "pioche" );
} );
$('.allow_drop').bind('dragover drop', function( evt ) {
 if ( current_target == "defausse" && evt.originalEvent.dataTransfer.types[0].split('/')[1] == "pioche" )
   evt.preventDefault(); // pour dire que j'accepte depuis cette cible sur dragover ou que je traite le drop
} );

 

Internet Explorer 9

L’ordinateur de ma femme me faisant de l’oeil, je décide de tester mon code, avec un faible espoir, IE étant le Cthulhu du web c’est bien connu.
Fatalitas… rien, nada, nothing… même pas trace d’un évènement drag
Petite recherche et IE9 ne supporte le drag’n'drop que de la balise img ou d’un lien (avec balise href)… pas de pot, j’utilise un div. I should not pass…

Internet Explorer 10 preview

Ayant installé dans un moment d’égarement une version d’évaluation Windows 8 Entreprise, je lance IE 10.
Tiens, mon drag de div fonctionne, pas mal… mais il y a quand même une exception javascript… lors du drag.
J’inspecte, je m’interroge et je tombe sur setData method. IE ne supporte comme type que ‘Text’ ou ‘URL’. A ce moment là, la coupe est pleine.

Conclusion :

Si je respecte la norme (et IE) :

  • je ne peux que mettre deux informations dans la structure dataTransfer URL & Text, il faudrait peut être que
  • en n’autorisant pas d’autres types que URL & Text, je ne peux pas m’opposer à un drop sur un élèment indésirable. De plus le drop d’une URL lance le chargement de cette URL, ça va être rigolo !
  • je ne peux pas donner d’indication visuelle à l’utilisateur suivant la valeur de ma variable Text car inaccessible dans les évènements dragenter, dragleave ou dragover
  • je ne pourrais pas faire de drag’n'drop entre deux navigation distinctes de mon application
  • et je n’ai pas tester les autres navigateurs comme Safari ou Opera…

Je vais donc me tourner vers une variable globale et m’en tenir à une utilisation légère de la norme HTML5. Dommage, autant les balises video, audio & canvas sont une réussite, autant cette fonctionnalité basique est bancale.


SeedPassword

Friday, December 2nd, 2011

Une petite mise à jour de l’application SeedPassword :

  • Vérification de la graine
  • Génération d’un mot de passe plus faible mais sans caractère bizarre car certains sites web refusent les caractères étranges
  • Refonte graphique et CSS compatible Android
  • Mot de passe généré dans une input de type string (plus facile à copier et pas d’espace qui vient s’insérer lors du double clic)

Ma liste de TODO:

  • Mettre à jour motdepassealacon
  • Finaliser l’application Android
  • Livrer une version compatible ligne de commande

Ajout du support WebP pour SDL

Sunday, November 27th, 2011

Après l’annonce de Google sur PC Inpact pour l’amélioration de WebP pour le canal alpha, et suite à une discussion avec un ami, je me suis décidé à jeter un coup d’oeil à cette librairie. Et quoi de mieux que d’en profiter pour contribuer à un projet opensource ?

J’ai donc ajouté le support WebP à SDL_image qui est la bibliothèque dédiée aux divers format d’images, le tout dans un temps très court.

Que retenir de WebP ? une API simple : deux fonctions pour décoder une image et encore, car je voulais savoir si je devais prévoir un canal alpha ou non ! De plus, il y a aussi une API où l’on peut indiquer la taille de l’image en sortie tout en supportant un mode de décompression incrémentiel. Les développeurs de l’embarqué apprécieront quand on voit la taille d’une photo avec les appareils numériques :)

Le patch se trouve ici (et devrait s’appliquer sans problème sur le trunk de SDL_image ) : webp_for_SDL_image.diff

Vais-je avoir le temps de m’attaquer à un lecteur CBZ en SDL ?

Webradio

Sunday, October 23rd, 2011


Ca y est, j’ai pris un peu de temps pour finaliser ma webradio (ce qui n’était pas très dur) & le widget pour WordPress (que l’on peut voir côté droit, ce qui a nécessité un peu plus de temps, mais finalement pas beaucoup plus).

La playlist est constituée de musique de jeux, dont la plupart sont des RPGs. Pourquoi ? car pendant mes sessions de développement, de surf sauvage ou d’administration, j’aime ce genre de musique.

Une mise à jour aura lieu pour permettre l’utilisation du tag html5 audio sous Firefox & Chrome (ogg/vorbis) mais j’ai eu quelques problèmes. Pour l’occassion j’ai créée la page WebradioWidget où j’ai mis la plupart de mes configurations, scripts & sources.

Book of Speed

Monday, June 13th, 2011

Petit coup de coeur pour un livre en cours d’écriture sur le web, Book of Speed : vous aurez enfin des arguments pour vos chefs pour l’optimisation de votre site web, un résumé des étapes de la vie d’une page web et ce qu’il faut savoir pour écrire un site rapide ou améliorer l’existant…

 

Encore un générateur de mot de passe…

Tuesday, May 24th, 2011


- Marre de garder trace de tout vos mots de passes ?
- Anxieux de perdre votre clé USB avec les précieux sésames ?
- Perte de sommeil avec votre mot de passe unique sur plein de sites différents?

Voici donc Seed Password : vous n’avez qu’un mot de passe unique (que j’appellerais Graine) , facile à retenir, et vous pouvez à tout moment régénérer un mot de passe pour un site web donnée. Par exemple, comme graine, toto, et comme url gmail.com, vous obtiendrez Wy-7c7TuW_9[ à utiliser pour ce site web. (Bon, j’ai un effort à faire sur la présentation encore, on ne s’invente pas designer web qui veut)

Le code est entièrement exécute en local sur votre navigateur, aucun échange n’est fait entre le formulaire et le site web : vous pouvez avoir une copie en local sur votre ordinateur ou sur votre site. La page est fonctionnelle sur un smartphone (testé sur Android / Xperia X10).

Une autre version est disponible sur une url plus facile à retenir : motdepassealacon.com.

Sinon tout est résumé ici en images sur l’Actu en patates.

Edit du 1-décembre-2011: mise à jour

Linux – KeyLogger

Thursday, May 19th, 2011

Suite à mon petit utilitaire Yubikey, j’ai continué à approfondir l’interface proposée par Linux sur les périphériques entrée/sortie.

J’ai donc repris mon code pour capturer les événements d’un périphérique de type clavier. Comme on récupère ceux-ci directement du kernel, toute la phase de traduction côté userland n’est pas faite : les événements font référence à un clavier Américain. Le programme gère le support des touches spéciales ( Control, Alt, Shift, …) pour essayer de savoir si on a fait C ou Ctrl-C. Le code est disponible à l’adresse http://www.murlock.org/code/keylogger-0.1.tar.bz2

Bien sûr, je décline toute responsabilité pour toute utilisation frauduleuse de cet outil.

Pour lancer l’utilitaire (en tant que root), les logs sont disponible dans le fichier trace.log.

# keylogger path_to_dev_entry

Comment détecter l’outil ?

# lsof /dev/input/event1
 Output information may be incomplete.
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
acpid     1615 root    4r   CHR  13,65      0t0 3043 /dev/input/event1
hald-addo 2290 root    4r   CHR  13,65      0t0 3043 /dev/input/event1
Xorg      2378 root   28u   CHR  13,65      0t0 3043 /dev/input/event1
keylogger 8338 root    3r   CHR  13,65      0t0 3043 /dev/input/event1

Exemple: avec changement d’onglet dans un Terminal et exemple de texte capturé

# ./keylogger /dev/input/event1 &
BusType : 17
Vendor  : 1
Product : 1
Version : 43841
Name : AT Translated Set 2 keyboard
Physical Location : isa0060/serio0/input0
# tail -f trace.log
Detected default keyboard layout :
XKBLAYOUT="fr"
<RIGHTCTRL=1><PAGEDOWN><RIGHTCTRL=0>ceci est un exe;ple de keylogger
<UP><HOME><DELETE><RIGHTSHIFT=1>c<RIGHTSHIFT=0>

Autre outil disponible : http://code.google.com/p/logkeys/

Recherche sur le Mini2440

Sunday, January 30th, 2011

Quelques retour sur le mini2440 :

J’ai commencé l’installation d’U-boot comme indiqué dans le numéro d’open silicium, mais comme je travaille à coup de bootp / tftp / nfs, je n’ai pas finalisé avec l’initialisation correcte de la NAND.

Je construit maintenant une toolchain en utilisant buildroot 2010-10, pas de souci particulier, mon fichier de configuration est disponible ici : buildroot-2010-11.config (installation par défaut dans /opt/arm-mini2440). Busybox se fait sans souci.

Pour le kernel, pas de souci mais je reste avec la version patché (2.6.32.2) fourni par FriendlyArm.

J’ai bien avancé sur la compilation de qt 4.6.2 pour embarqué mais j’ai un souci pour lancer un programme, pas de plantage mais pas d’affichage non plus, en cours d’investigation en comparant mon rootfs et celui fourni.

Côté Android, j’ai commencé à fouiller vers la version 2.2 ( Froyo ) car il utilise la même version de kernel, j’ai réussi à trouver un kernel sur le dépôt GIT d’Android. Dans un monde idéal, il ne resterait plus qu’à reporter les modifications du premier sur le second. Malheureusement, la documentation d’Android est plutôt légère (ou obsolète) à ce stade…

A suivre…

Open Silicium

Wednesday, December 29th, 2010

En rentrant du boulot, petit arrêt chez le libraire pour acheter ce premier numéro d’Open Silicium. Ce magazine est né du succès des différents Linux Magazines Hors Série dédié au vaste monde de l’embarqué.

Petit tour rapide pour tomber sur l’article détaillant la Mini2440 de FriendlyARM, je reste bluffé par le matos détaillé dans l’article, surtout proposer à ce prix. Alors que je pensais investir à terme pour une Beaggle Board, avoir un PDA like (OS Supporté Linux / WinCE 5 / Android) avec écran tactile pour un prix dérisoire ( env. 100€ / 150$ ). Ca reste moins puissant qu’une Beaggle Board mais un usage complètement différent ! Pour revenir au magazine, l’article aborde la chaîne de compil, un classique, et le changement du bootloader. Un bon départ, il faudrait faire le tour des différents projets pour voir les capacités de la bête…

Pour revenir au magazine, tout les articles parlent de l’embarqué mais aussi de simulation de circuits, de FPGA. Beaucoup de domaine sont donc abordés et pour un premier numéro, c’est plutôt réussi, à conseiller à tout les barbus qui s’intéressent à l’embarqué :)