Google aurait-il peur de cuil ??

Bonjour à tous …

Après mon truc perso inutile dont tous le monde s’en fout … voilà encore pire xD … au beau milieu de mon après-midi en train de geeker au soleil, je fait une recherche sur google … et que vois-je ?

et non … je ne suis pas inscrit sur google labs pour le fameux google suggest … google voudrait-il contrer cuil qui l’utilise depuis plus d’un mois ??

A noter quand même que google avait sortie une béta en 2004 … et depuis plus rien. Cuil aurait-il précipité les choses ^^??

(En vrai d’autre moteur de recherche tel que Yahoo et MSN l’utilise aussi … mais bon, c’était juste pour parler de cuil ^^ ils m’ont référencer dans leurs base de données dernièrement).

Sinon, je viens de voir que bon c’était prévu depuis le début de la semaine (je suis en retard ^^), et que google propose d’autre chose en beta qui n’est pas sans rappeler l’idée d’un ingénieur de chez MSN qui l’avait proposé il y a bien 6 mois (j’ai plus le lien :s dsl).

ça bouge au pays des moteurs de recherche 😉

Mon repository … Edyuk, vidalia, w_scan, …

Bijour à tous …

Suite à mon article sur l’utilisation du PPA (ok c’était un rapide « click and go tutorial » qu’il faudra que j’étoffe un peu ^^), je me suis dit que ça pouvait être sympa de mettre quelques paquets en ligne.

J’attendais de terminer le paquet pour edyuk (qui m’a prit pas mal de temps ^^), pour faire quelque lien dessus.

La ligne à ajouter dans le fichier /etc/apt/sources.list :

deb http://ppa.launchpad.net/cipher.16/ubuntu hardy main
deb-src http://ppa.launchpad.net/cipher.16/ubuntu hardy main

Les paquets contenu pour le moment :

  • vidalia : un logiciel qui facilite l’utilisation de tor, et donne plein d’information sur la connexion actuelle : la bande passante des noeuds, leurs localisation, et la possibilité de fermer les circuits.
  • w-scan : (w_scan en vrai), qui permet de scanner les canaux TNT sans données initiales.
  • edyuk : Un IDE C++/QT4 léger, puissant, qui regroupe le designer et l’assistant de QT4 dans un seul logiciel, avec plein de plugins sympa (auto complétion, debugger, …).
  • qt4-X11 : un paquet qui a été importé pour compiler le paquet Edyuk, et qui peut être utile pour ceux qui veulent passer à la version 4.4 de QT (pas dans les dépôts officiel).

J’en profite, pour dire que edyuk va passer en version 1.0.1 (version jugé stable ^^) d’ici à demain, et que peut-être il sera accepté dans les dépôts d’ubuntu … si le paquet est jugé « propre »et complet.

Paranoïa sur le net …^^

Bijour à tous …

En ces temps tumultueux sur internet, et suite notamment à cette article, me voici dans ma période « faire joujou avec l’anonymat et le chiffrage ».

Bon question anonymat je suis cuit (suffit de taper mon pseudo sur google et …), mais bon je peux rattraper le coup avec le chiffrage de mes données sensibles!!

Donc voilà quelque astuces pour épargner vos informations persos (mdp, …) des flics véreux, des FAI ou des personnes mal intentionnées.

Pour l’anonymat et la sécurité des données sur le net :

  • Courriels :
    • Connexion aux webmails/serveurs de mails en cryptées :
      • Soit par le protocole https pour les webmails
      • Option https de Gmail
      • Soit par les protocoles imaps / pop3s
    • Envoyer les messages et les pièces jointe chiffrées (quand ce sont des informations qui en valent la peine bien sûr ^^) :
      • Utiliser les clés de chiffrages GPG quand l’interlocuteur en a une.
      • Utilisation de l'extension FireGpg pour chiffrer et signer un message sur gmail
      • Utiliser des cryptages symétrique sinon (AES, RSA, …) en gardant à l’esprit que ça se casse facilement.
  • Messagerie instantanée :
    • Utilisation de chiffrage lors des authentifications (cf. option Amsn pour MSN)
    • Chiffrer les messages avec l’interlocuteur si le protocole le permet (cf. XMPP)
  • Navigation Web :
    • Préférer les systèmes d’authentification cryptés lors de l’utilisation d’identifiant/mdp (car ceux-ci devront être enregistré par le FAI si la loi cité dans le lien passe, … donc si c’est crypté ils ne peuvent rien en faire).
    • Utiliser des proxies (Tor ;)) situé dans d’autre pays (et de préférences crypté) lorsque vous navigué sur des pages à contenu … litigieux?? (warez, … ^^ mais qui donc oserais??)
    • Sinon, prendre un login et un mot de passe bidon pour tous les autre sites

Pour la sécurité des données de votre PC :

  • Cryptage des données :
    • Partition entière ou répertoire :
    • Chiffrage de quelque données perso via GnuPG
  • Suppression des données :
    • Préférer des commandes de destruction et non l’utilisation de la corbeille ou du rm :
      shred -n 35 -z -u nomDuFichier

      Pour les fichiers qui en valent la peine ^^, genre les films qui ont été gravé ;), et bien sûr éviter d’utiliser des partitions journalisées pour ce genres de données.

  • Accès physique à l’ordinateur : (ça peut arriver ^^)
    • Mettre un mot de passe au lancement du BIOS.
    • Mettre un mot de passe au lancement du GRUB. (bof bof)
    • Utiliser un bon mot de passe pour le lancement des sessions (avec un système de cryptages des partitions qui décrypte les partitions qu’a partir du moment où l’on est loggué, ça peut être super efficace).

Bon … faudrait pas que ce soit au point de vous dégouter de l’informatique ^^. Mais envisager de changer certaine de ces habitudes quant à l’utilisation des logins/mdp et du chiffrages de certain de ses courriels pour être assez utiles pour l’avenir …

Voilà, le chiffrage c’est bien sûr comme les préservatifs … c’est pas sûr à 100%, mais avec c’est mieux :p, et ont à tendance à ce prendre pour un agent secret lorsqu’on reçoit un message crypté^^

Gnash l’alternative à Flash ?

Bijour à tous …

Bon ben voilà … un petit article dédié à gnash (0.8.3 dans sa dernière release stable qui date quand même de 2 mois).

Alors bon … dans la version 0.8.2 des dépôts usuel d’ubuntu, cette version ne fonctionne pas (pas chargé par firefox pour la version 64bit) et les commentaires ne l’aidant pas à ce faire un beau nom …, j’espère au moins un peu améliorer son image ^^.

Alors bon tout d’abord mes raisons pour larguer le flashplayer d’adobe :

  1. Pas de support 64bit
  2. ça plante assez souvent firefox (freeze et …)
  3. via ndiswrapper ça bouffe pas mal de CPU (passage obligatoire pour les 64bit).

Les deux alternatives existante : gnash et swfdec, les deux fonctionnent en supportant le 64bit nativement sous linux.

Alors bon … y’en a pas mal qui aime bien swfdec, parce qu’il intègre un flashblock (faut cliquer sur l’animation pour qu’elle se charge, donc ça supprime assez souvent les désagréments de certaine pub qui intègre du son, ou des animations qui charge pas mal le CPU).

J’ai eu l’occasion de l’essayer pendant toutes une journée … mais on remarque assez souvent que ça bouffe pas mal de CPU, et si c’est pas firefox qui rame, c’est le PC qui plante ^^ (CTRL+ALT+BACKSPACE).

Donc bon, comme la version de Gnash dans les dépôts ne fonctionnait pas, j’ai trouvé celle du PPA de la « Gnash Team », et là j’ai été littéralement bluffé … je bosse actuellement sur un projet de jeux intégrant des animations flash, non seulement l’animation fonctionne, mais l’intéraction qu’elle fournit avec le flashplayer officiel fonctionne aussi et cela sans surcout au niveau du processeur (20% max)!!

Pour parfaire le test, j’ai fait le tour de certain jeux de miniclip, et les jeux flash d’il y a 1 an ou 2 fonctionne sans aucun problème (le support de flash7 étant complet, c’est normal ^^), en revanche, les animations en flash9 plante assez souvent. Sur dailymotion, la barre de chargement de l’animation reste affiché même après le chargement, et ça laggue pas mal le PC.

Mais bon … si vous n’utilisez du flash que pour jouer les petites animations des bannières de certain site web, jouer à des petits jeux en flash 7 ou 8, il se peut que gnash soit plus pratique que le flash player officiel ;).

Alors pour l’installer sur ubuntu hardy :

deb http://ppa.launchpad.net/gnash/ubuntu hardy main

puis simplement faire un :

sudo apt-get install mozilla-plugin-gnash

dans la console (en ayant bien pris soin de supprimer les paquets officiel ou swfdec).

Parser du Html avec QTXml

Bonjour à tous …

Un rapide exemple pour récupérer l’ensemble des liens d’une page web en utilisant l’objet QtXml de Qt4 … toujours mieux que d’utiliser l’objet QRegExp pour récupérer des « urls malformés ».
[sourcecode language= »cpp »]

void crawlerXml(QString &pageWeb) {

//pageWeb = »

« ;
QDomDocument web;
web.setContent(pageWeb);//on met le contenu de la page Web
QDomNodeList nodel= web.elementsByTagName(« a »);//on cherche les
for(int i=0;i

Conquis par conky ^^

Bijour à tous …

Alors voilà … on dit souvent que je suis un geek et …

Aujourd’hui j’ai eu la preuve que je n’étais pas encore un geek ^^, je viens de découvrir conky sur le forum d’ubuntu-fr!

(mais non c’est pas mon ip qui est sur le screen ^^ … en tout cas ça ne l’est plus ;))

Si ça claque pas ça ^^, donc voila … si vous voulez ressembler à un geek et que vous avez Ubuntu, prenez le temps de faire un rapide :

sudo apt-get install conky

et d’éditer le fichier .conkyrc (dans le home) ou de le créer si il n’existe pas et de mettre ceci (si vous voulez bien sûr le même affichage que moi ^^) :

background        no
update_interval        1.0
double_buffer        yes

use_xft            yes
override_utf8_locale
xftfont            Sans:size=8
xftalpha        0.8

own_window        yes
own_window_transparent    yes
own_window_type        override
own_window_hints    undecorated,below,sticky,skip_taskbar,skip_pager
#on_bottom        yes

minimum_size        280 5
draw_shades        no
draw_outline        no
draw_borders        no
draw_graph_borders    yes
stippled_borders    0
border_margin        3
border_width        0

default_color        white
default_shade_color    black
default_outline_color    black

alignment top_right
gap_x            6
gap_y            48

no_buffers        yes

##${color white}CG :

TEXT
$nodename - $sysname $kernel on $machine

${color #e49c16}Uptime:$color $uptime ${color #FFFFFF}- Load:$color $loadavg
${color #e49c16}CPU Utilisé :${color #FFFFFF} $cpu% ${color #ffc11f}${cpubar}
${color white}${cpugraph ffc11f 8b4b0b}
${color #e49c16}Mémoire RAM :
${color #FFFFFF} $mem/$memmax - $memperc% ${color #ffc11f}${membar}
${color #e49c16}Utilisation du Swap :
${color #FFFFFF} $swap/$swapmax - $swapperc% ${color #ffc11f}${swapbar}
${color #e49c16}Processus : $color $processes   ${color #e49c16}En cours : $color $running_processes

$color$stippled_hr

${color #e49c16}Espace Disque Libre :
${color #FFFFFF}Root : ${color #FFFFFF}${fs_free_perc /}%         ${color #ffc11f}${fs_bar /}
${color #FFFFFF}/home : ${color #FFFFFF}${fs_free_perc /home}%      ${color #ffc11f}${fs_bar /home}
${color #FFFFFF}DD :${if_mounted /media/disk} ${color #FFFFFF}${fs_free_perc /media/disk}% ${color #ffc11f}${fs_bar /media/disk}$color$else Not connected$endif
${color #FFFFFF}DD :${if_mounted /media/disk0} ${color #FFFFFF}${fs_free_perc /media/disk0}% ${color #ffc11f}${fs_bar /media/disk0}$color$else Not connected$endif

$stippled_hr
${color #e49c16}Reseau : ${color #FFFFFF}IP : ${addr eth0}
${color #e49c16}Download :${color white} ${downspeed eth0} k/s${color white} ${offset 80}${color #e49c16}Upload:${color white} ${upspeed eth0} k/s
${color #FFFFFF}${downspeedgraph eth0 32,150 8b4b0b ffc11f} ${color #FFFFFF}${upspeedgraph eth0 32,150 ffc11f 8b4b0b}

$stippled_hr

${color #e49c16}Port(s) ouvert(s): ${color #e49c16}${tcp_portmon 1 65535 count}
${color white} ${tcp_portmon 1 65535 rhost 0} $alignr${tcp_portmon 1 65535 lservice 0}
${tcp_portmon 1 65535 rhost 1} $alignr${tcp_portmon 1 65535 lservice 1}
${tcp_portmon 1 65535 rhost 2} $alignr${tcp_portmon 1 65535 lservice 2}
${tcp_portmon 1 65535 rhost 3} $alignr${tcp_portmon 1 65535 lservice 3}
${tcp_portmon 1 65535 rhost 4} $alignr${tcp_portmon 1 65535 lservice 4}
${tcp_portmon 1 65535 rhost 5} $alignr${tcp_portmon 1 65535 lservice 5}
${tcp_portmon 1 65535 rhost 6} $alignr${tcp_portmon 1 65535 lservice 6}
${tcp_portmon 1 65535 rhost 7} $alignr${tcp_portmon 1 65535 lservice 7}
${tcp_portmon 1 65535 rhost 8} $alignr${tcp_portmon 1 65535 lservice 8}
${tcp_portmon 1 65535 rhost 9} $alignr${tcp_portmon 1 65535 lservice 9}
${tcp_portmon 1 65535 rhost 10} $alignr${tcp_portmon 1 65535 lservice 10}

$stippled_hr

${color #e49c16}Processus            PID    %CPU   %MEM
${color yellow}    ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color white}    ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color #e49c16}Memoire
${color yellow}    ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color white}    ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}

Attention, si vous avez utilisé beryl, il vous faudra modifier les modules de Xorg (/etc/X11/xorg.conf) en rajoutant :

Section « Module »
Load « dbe »
EndSection

Relancez la session, et lancez conky.

Php: éviter les injections tout en préservant l’intégrité des données

Re bijour ^^

Encore une astuce à haute valeur philosophique …

Rapide rappel :

Pour éviter les SQL injections … la plupart du temps on fait appel à des addslashes, mysql_real_escape et … qui peuvent s’avérer dangeureuse suivant qu’on utilise du PHP5 ou PHP4 (et encore … la plupart du temps, il faut regarder les sous-sous version), alors il faut faire des fonctions qui teste tout et n’importe quoi … mais on est jamais sûr que sur tel ou tel serveur le script est sécurisé …

Alors voici une rapide astuce qui permet d’assurer la sécurité et l’intégrité des données (qui peut fonctionner tant que l’on ne fait pas d’insertion ^^).

Utiliser du md5!!! ou un autre type de chiffrage via crypt, … qui vous permettront de préserver l’intégrité des données transportées tout en ne portant pas préjudice au serveur SQL.

Exemple lors du login d’une personne, la requête associée pourrait être :

mysql_query(« select * from utilisateurs where login=' ».mysql_real_escape($_POST[‘login’]). »‘; »);

donc si un jour on transfert ce code sur un serveur ayant php 4.2 … le script ne marche plus ^^ (d’accord … qui irait passer de php5 à php 4.2 -> c’est pour l’exemple).

Par contre avec ce code :

mysql_query(« select * from utilisateurs where MD5(login)=' ».md5($_POST[‘login’]). »‘; »);

aucun problème … ^^ et vous êtes sûr que si ça renvoie une ligne ça soit la bonne ;).

Bon comme dit dans l’introduction, il faut quand même insérer des données (et ouai ça arrive parfois :p), et là … ça ne marcherait plus trop à part si vous êtes billingue français/md5.

A propos de billinguisme français/md5, y’a un superbe logiciel qui permet de craquer du md5 de façon sympa et très rapide les md5 (md5brute : http://www.tuxemu.se.nu/)

LiveUsb fedora9 avec liveusb creator

Bijour …

Dans la suite de mes astuces inutile … voici le coup de la clé usb bootable avec persistance!!

Alors bon tout d’abord installer git core, syslinux, install-mbr, gparted?, python-qt4 et python-qt4-dbus

Pour les utilisateurs d’ubuntu : ^^

sudo apt-get install git-core syslinux install-mbr gparted python-qt4 python-qt4-dbus

puis récupérer le git de liveusb creator :

git clone git://git.fedorahosted.org/git/liveusb-creator.git

formater votre clé usb en fat16 (via gparted ou via les lignes de commande de fdisk) et metter le flag de boot sur la partition principal

puis simplement faire un

sudo ./liveusb-creator

et vous obtiendrez normalement ceci :(ok j’avoue j’ai triché … j’avais pas de clé usb de branché lors du screen … mais bon je vous assure que ça a fonctionné ^^)

ensuite, vous pouvez tenter le reboot, et de booter sur la clé, et si vous êtes aussi chanceux que moi, votre pc ne voudra pas booter dessus … il vous faudra alors faire :

sudo syslinux -sf /dev/sdx1
sudo install-mbr /dev/sdx

en changeant x bien sûr 🙂

Après tout ça, j’ai juste eu a choisir ma clé usb lors du boot et c’était bon ;).

gérer des sous-domaines à la volés via de l’url rewriting

Bijour à tous …

Ce soir … une astuce des plus inutile (et oui … je commence à les aligner).

J’explique quand même un peu l’idée :

Je travail sur un projet de site web un peu spécial (encore à l’état de concept pour le moment). Et l’idée du site était de fournir une url assez simple pour chaque membre du site (dans le genre www.site.fr/pseudo), pour afficher des informations sur le membre …

Voulant pousser l’application un peu plus loin, je me suis dit que transformer ce www.site.fr/pseudo en pseudo.site.fr ça ferait un peu mieux.

Voici donc l’astuce utilisée :

Tout d’abord, la page du membre ce récupère ainsi : www.site.fr/?i=membre&n=pseudo

Donc en Rewrite Url ça nous donne un truc dans ce genre pour avoir l’url en www.site.fr/pseudo

RewriteRule ^([A-Za-z_/0-9]+)$ ?i=membre&n=$1 [L]

Pour avoir une url en pseudo.site.fr, il faut recourir à cette astuce

RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9-_]+)\.site.fr
#on interdit l’utilisation de cette technique pour le www
RewriteCond %{HTTP_HOST} !^www\.site.fr
RewriteRule (.*) /var/www/index.php?i=membre&n=%1 [L]

Donc voilà … si vous vous demandiez comment les gars qui ont fait le site labrute.fr pouvait avoir un sous-domaine par joueur … vous avez la réponse 😉

Bon sinon, avouez que c’est vraiment pas très utile …

Sinon, on pourrait très bien imaginer un système qui pourrait remplacer le mod_vhost_alias en faisant un truc du genre :

RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9-_]+)\.site.fr [NC]
RewriteRule (.*) /var/www/%1/$1 [L]

Ce qui aurait pour effet de chercher les fichiers dans le dossier du sous domaine,(si on accède a moi.site.fr, le serveur chercherait les fichier situé dans /var/www/moi/…).

Bon j’arrête là …

Typage et PHP ou comment remettre en cause l’univers ^^

Bijour à tous …

La blague PHP du jour :), testez ce code … vous pourrez être surpris 🙂
[sourcecode language= »php »]$var1= »lol »;
$var2=0;
if( $var1 == true and $var2 == false and $var1 == $var2 )
echo « hum hum, ça bug »;[/sourcecode]
Petite explication :

  1. $var1 est égale à vrai, car une chaîne de caractère non-vide est « vrai »
  2. $var2 besoin d’une explication ?
  3. Lorsque l’on compare une chaîne de caractère à un entier, celui-ci est égale à zéro lorsqu’il ne contient pas de chiffre …