Olivier Doucet

Aller au contenu | Aller au menu | Aller à la recherche

Nouvelle pub Canal

Une super pub pour Canal+ ;)

Librairie MySQL en C

Je reprends un peu le langage C (après plusieurs années sur PHP, où j'ai maintenant un excellent niveau).
Petit pense bête concernant l'utilisation de la librairie MySQL sous Windows :
 Si vous avez une erreur après mysql_real_connect comme quoi "cannot connect to MySQL Server XXXX (0)", alors que vous êtes persuadé que ce serveur existe bien, vérifiez si vous avez bien initialisé votre variable MYSQL avant:

MYSQL mysql;
if(mysql_init(&mysql)==NULL) {
    printf("\nFailed to initate MySQL connection\n");
    return(-1);
 }



En rajoutant ce petit bout de code, le script se met enfin à marcher :) Bizarrement aucun souci quand le code est compilé sous Linux avec GCC, le souci n'intervient qu'avec Visual C++ 2008 Express...

DiRT 2 : la petite claque graphique

J'attends avec impatience la sortie de DiRT 2, tellement les screenshots et vidéos ingame paraissent incroyables.

Quelques aperçus dans ce billet.

Lire la suite

Plus c'est obscure, moins c'est secure

Je ne trouvais pas de bon titre alors j'ai trouvé un truc bien débile :)

Je voulais pousser un coup de gueule contre ce genre d'articles : http://mcarthurgfx.com/blog/article/a-basic-lesson-in-password-hashing

Pour moi, ca reste une référence de ce qu'il ne faut PAS faire.

Ce monsieur - que je ne connaissais pas avant de lire l'article - part pourtant d'un excellent constat: les utilisateurs (ou les développeurs de site, ca marche aussi) stockent les mots de passe en clair et c'est mal. Autre mauvaise solution: utiliser un hash tout simple du mot de passe (en l'occurence md5).

Qu'est-ce qu'un hash ? Disons simplement que c'est un algorithme de cryptage à sens unique; Une fois cryptée, la chaine originelle ne peut être retrouvée; Pour savoir si un pass est le bon, on compare celui tapé par l'utilisateur, on l'encrypte de la même façon, et on compare les hash. Si ils sont identiques, la chaine d'origine l'est également (c'est du très très simplifié et donc en partie faux, mais c'est pas la question Geneviève).
Jusque là tout va bien...
Mais là, c'est le drame: l'auteur de l'article propose de rajouter un salt au md5 et de rajouter ce salt au milieu de md5(salt + password) . Une chose est certaine, cet auteur n'a aucune notion de base en sécurité. Simplifions son raisonnement :

un simple MD5, c'est trop simple à crypter, donc on va faire une sauce très compliquée et ca sera plus difficile à trouver.


Dans la même famille de réflexe à la con, je voudrais le md5(md5(md5(password))) .

Comment démonter ce raisonnement ? Et bah c'est pas si évident finalement. Disons qu'à partir du moment où le pirate aura trouvé votre raisonnement, votre base de mot de passe ne va pas tenir longtemps. La génération de dictionnaires, d'autant plus sur l'algo md5, est devenue un passe-temps aussi courant que la pèche à la morue jouer à World of Warcraft.

La complexité, ou ce que j'appellerais aussi "l'obscurité" n'a jamais fait de bonne sécurité. Suffit de regarder le nombre de failles de sécu trouvées dans des logiciels closed-source ... Comme quoi, cela n'a jamais arrêté personne.


La meilleure sécurité et la plus simple, c'est d'imaginer que même avec votre raisonnement, un pirate ne pourra décrypter votre mot de passe. Un simple BLOWFISH, ou alors AES sont de très bons algos parfaitement connus et pourtant aucune faille n'a été trouvé (à condition d'avoir des clefs assez importantes, et que l'ordinateur quantique ne soit pas inventé dans les prochains mois).

J'ai relancé Terragen

Terragen

Terragen
Et plus exactement la nouvelle version :) Y'a pas à dire, ce logiciel est vraiment exceptionnel. Vous pouvez générer des paysages en images de synthèses en quelques clics, et le résultat est superbe.

Ma gallerie : http://olivierdoucet.info/gallerie/

Essai audio sur le thème de Zelda

Un premier essai de synthé et de logiciel de remix. Je me suis basé sur le thème audio du jeu Zelda afin d'avoir déjà un thème sur lequel broder;

Feedback wanted :)

Hadopi: utilisation comme spam ?

Je m'étonne de ne pas encore avoir vu apparaitre des spams se donnant des airs de mails envoyés sous couvert de l'HADOPI et nous invitant à télécharger un gentil trojan sensé nous protéger. Voilà à quoi cela pourrait ressembler :

From: Hadopi <hadopi@hadopi.com>
X-Priority: 3
X-Mailer: Programme de surveillance HADOPI
To: votreadresse@mail.com
Content-Type: text/plain;

Monsieur,
Le 14 mai 2009, nous avons détécté que votre adresse IP
avait servi à télécharger des contenus protégés par le 
droit d'auteur.
D'après la loi HADOPI, vous êtes responsable de votre 
connexion Internet. Suite à ce mail, vous encourez
donc des poursuites  et une suspension de 
votre accès Internet.

La loi vous oblige dans ce cas à installer un 
logiciel de surveillance qui prouvera votre innocence 
en cas de nouvelle utilisation frauduleuse. Ce logiciel 
est disponible à l'adresse suivante :
http://site-en-russie.ru/hadopi.exe

Si sous 24h, ce logiciel n'est pas installé, la commission 
HADOPI se réserve le droit d'ouvrir des poursuites.

Cordialement,

Ministère de la Culture et de la communication
http://www.culture.gouv.fr/

Compiler binutils dans une LFS

j'attaque les choses sérieuses : ma première LFS ! Pour ceux qui comme moi ont choisis de se jeter à l'eau, voici un peu d'aide pour compiler binutils 2.19 tel qu'expliqué ici par exemple. Une compilation en l'état résultera (en tout cas chez moi) par une erreur concernant bfd et int8_t, ou alors une erreur concernant libiberty et des fichiers .h de votre système. J'ai résolu le soucis en appliquant ce patch au source au préalable.

Et voilà ça compile :)

Affiche de mauvais goût

IMG_6332.JPG

Et pourtant, c'est pour un musée. Preuve que l'actu ne se contrôle pas ! IMG_6332.JPG

in_array et le mode strict

La fonction in_array peut avoir un comportement tout à fait étrange lorsqu'on utilise la syntaxe par défaut, qui fait une vérification non stricte :

var_dump(in_array('mouhahaha',array(0,1,2))); // bool(true)

Et oui, mon texte est dans ce tableau d'après PHP. Etonnant, non ? Tout simplement parce que PHP va essayer de convertir (cast) les types avant de les comparer. Ma chaîne de caractère, à un moment, vaut 'true' et mon 1 vaut 'true' aussi, d'où l'égalité.

Par contre, si on met les nombres entre quotes comme ceci : var_dump(in_array('mouhahaha',array('0','1','2'))); // bool(false)

Car les chaines étant de même type (string), aucun cast n'a lieu.

Pour éviter les effets de bords et autres mauvaises surprises, utilisez le mode strict qui va également comparer le type de la variable. Pour cela, ajouter un 3e argument à in_array comme ceci :

var_dump(in_array('mouhahaha',array(0,1,2), true)); // bool(false)

Syntaxe d'un email

Quels vérifications faites-vous pour savoir si un email a une syntaxe valide ou non ? Je pense que nombre d'entre vous utilisent quelque chose du genre :

[a-zA-Z0-9\-_\.]@[a-zA-Z0-9\-_\.]

Et bien vous avez tord. Selon la RFC 2822, les emails suivant sont tout à fait corrects :

  • @@bob@domain.com
  • bob+jones@domain.us
  • "bob@jones"@domain.com
  • "bob jones"@domain.com@@

je suis tombé là dessus par hasard en lisant une page de documentation du Zend Framework.

Stockage de nombre à virgules dans MySQL

Pour stocker un nombre à virgule (un flottant, ou float en anglais) dans MySQL, il existe plusieurs types de colonnes. Mais attention : ils ne sont pas tous identiques. Petite démonstration simple :

  • Prenons une table 'test', avec entre autre un champ de type FLOAT(8,2).
  • Executez la requete suivante :

INSERT INTO `test` (id, flottant) VALUES(4,'446351.74');

  • Puis relisez la ligne :

SELECT * FROM `test` WHERE id=4

Voici le résultat:

446351.75

Comment ?? ,75 et non ,74 comme je l'ai demandé ? Et oui, normal vu la méthode de stockage qu'utilise MySQL.

Lire la suite

Test du HTC Touch HD

Je profite de la fin d'année et de noël pour changer mon forfait et au passage, quitte à repartir avec un engagement super long avec un opérateur, changer de téléphone. Je passe donc de SFR à Orange, et change mon HTC TyTN II dont j'ai été assez content, au nouvel HTC Touch HD sorti il y a tout juste un mois, et dispo dans les agences Orange depuis aujourd'hui seulement. Petit tour du propriétaire !

Lire la suite

Différence entre static:: et self:: en PHP 5.3

Grâce au Late Static Binding introduit dans PHP 5.3, la gestion des classes va encore plus loin. Un nouveau mot-clef a été introduit dans le langage, il s'agit de 'static'. Son utilisation ressemble étrangement à 'self', mais il y a une très grande différence entre les deux.

Lire la suite

Les jeux marchent sous Linux ...

... et même mieux que sous Windows ! En effet j'ai repris du service sur Eve Online depuis quelques jours. Seulement le jeu me fait un magnifique BSOD sous Windows dès qu'il y a un peu trop d'éléments affichés à l'écran. Pas pratique en pleine bataille ... D'où l'idée de voir si ca tournait bien sous Linux, vu que CCP, la boite qui fait ce jeu, dit que "maintenant tout roule sous Linux". Installation facile (executer > suivant > suivant ... et hop ca marche). Bref, Linux comme je l'aime, pas de ligne de commande à tout va (ca rappellerait trop le boulot). Et le top dans tout ça ? Le jeu est parfaitement fluide, et SURTOUT ne plante pas ! Bref, jouer sous Linux, c'est possible ! Note: j'utilise Ubuntu Hardy Heron

Hymne russe sous titré en français

Toute l'explication des paroles de l'hymne russe enfin en vidéo !


Hymne national soviétique sous-titre français

Le spam et Thunderbird

La lutte contre le spam est une préoccupation récurrente. Dernièrement, nous avons mis en place des filtres bayésiens. Petite trouvaille : pour améliorer le filtre bayésien basé sur le feedback utilisateur, il est possible de récupérer le statut de "spam" posé par Thunderbird. En effet, ce dernier ajoute un flag IMAP nommé "Junk". Reste à coder l'appli pour utiliser cette information, et à voir comment font les autres gestionnaires de mails. Sinon petite stats: sur plusieurs dizaines de milliers de mails reçus par jour, le taux de spam est de 99,3%. La vérité doit être encore supérieure vu que certains spams passent à travers... Enfin je suis tombé sur une étude récemment sur le taux de retour d'une campagne de spam. D'après l'étude, le taux de commande par mail envoyé est de 0,3 pour mille, là où une campagne classique (3 Suisses, La Redoute, etc.) est de ... 3 pour mille. Bref, le spam est toujours aussi rentable, et ce n'est pas prêt de s'arrêter.

Stocker un booléen dans MySQL

J'ai vu pas mal de méthodes pour stocker un booléen dans SQL. Certaines sont vraiment à éviter, d'autres sont plus faciles, etc. Voici mon (humble) avis sur celles à absolument éviter et les bonnes méthodes.

Lire la suite

1, 2, 3, soleil ! avec un chat

Une partie de 1, 2, 3 soleil qui me rappellent de (très très) vieux souvenirs. Sauf que avec un chat, c'est une grande première !

Les américains sont intelligents

georgia attacked

... et écrivent particulièrement bien anglais. Je n'ai pas résisté à l'envie de vous montrer ça : georgia attacked

Ca se passe de commentaires :)

- page 1 de 3

Bienvenue