[PHP] Création d’un captcha 29 juillet 2009
Posted by Nassim in Développement, Mes créations.Tags: antispam, captcha, code, Développement, formulaire, php, programmation, Sécurité, spam, web
8 comments
L’idée de ce billet ne m’est pas venue par hasard, elle provient tout simplement de mon stage puisque j’ai été amené à concevoir un captcha pour l’application web que je développe actuellement.
Sans vouloir exagérer, vous allez voir qu’on peut concevoir un captcha performant sans que cela soit compliqué ni long. Pour comprendre ce que j’explique plus bas il vous faut connaitre les rudiments de base en PHP, comme les sessions.
- Le principe de fonctionnement :
- Pré-requis :
- Le script PHP :
- Le formulaire :
Avant de commencer à coder j’aimerais vous expliquer le principe de fonctionnement de notre captcha histoire que vous compreniez mieux ce qu’on est entrain de faire.
Normalement vous devez savoir que le PHP permet de générer du code HTML qui sera affiché par votre navigateur, ce que vous ne savez peut être pas est qu’il peut aussi générer d’autres types de fichiers comme une image. C’est cette dernière spécificité que nous allons exploiter. En effet, nous allons dans notre formulaire à l’emplacement de notre captcha insérer une balise image qui pointera vers notre script PHP, ce script PHP devra donc être capable de générer en sortie l’image qui sera affichée pour le captcha, pour comparer la valeur du texte de l’image et du texte saisie par l’utilisateur nous allons utiliser un système de sessions… vous n’avez peut être pas trop compris mes explications mais passons tout de suite à la pratique ;-)
Avant de commencer il va nous falloir préparer le terrain, pour cela :
- Il faut installer la bibliothèque GD de PHP, pour cela il faut éditer votre fichier ‘php.ini’.
- Il vous faut préparer l’image de fond du captcha au format PNG, nommez-la par exemple ‘captcha.png’.
- Il vous faut préparer la police d’écriture (au format TTF) utilisée pour le texte du captcha.
Voici donc le code de notre partie PHP :
<?php
/* Script Captcha – Nassim Kacha – http://lebricabrac.wordpress.com *//* Note :
- Il faut installer la bibliothèque GD de PHP (voir dans ‘php.ini’).- Notre captcha sera insensible à la case.
*/session_start(); // Ouverture de session
/* Fonction qui génère le code du captcha */
function getCode($longueur) {
$caracteres = ‘23456789ABCDEFGHJKLMNPQRSTUVWXYZ’; // Jeu de caractères utilisé pour générer le code du captcha.
$code = ”; // Initialisation d’une chaine vide
for ($i=0; $i<$longueur; $i++) {
$code .= $caracteres{ mt_rand( 0, strlen($caracteres)-1 ) };
}
return $code;
}/* Génération d’un code de 5 caractères */
$code = getCode(5); // valeur modifiable/* Stockage de la valeur du captcha */
$_SESSION['captcha'] = md5($code);/* Récupération de chacun des caractères pour l’affichage du captcha */
$char1 = substr($code,0,1);
$char2 = substr($code,1,1);
$char3 = substr($code,2,1);
$char4 = substr($code,3,1);
$char5 = substr($code,4,1);/* Police d’éciture */
$font = “BeeMarkerInk.ttf”; // A modifier selon votre fichier ttf/* Création de l’image du captcha */
$image = imagecreatefrompng(‘captcha.png’);/* Création de la couleur du code */
$couleur = imagecolorallocate($image, 255,0,0); // Noir, peut être modifié/* Insertion du code dans le captcha */
imagettftext($image, 28, 0, 0, 37, $couleur, $font, $char1);
imagettftext($image, 28, 25, 30, 37, $couleur, $font, $char2);
imagettftext($image, 28, 0, 50, 37, $couleur, $font, $char3);
imagettftext($image, 28, 25, 80, 37, $couleur, $font, $char4);
imagettftext($image, 28, -15, 90, 37, $couleur, $font, $char5);/* Header pour indiquer au browser qu’il s’agit d’une image PNG */
header(‘Content-Type: image/png’);/* Envoie de l’image au browser */
imagepng($image);/* Destruction de l’image après envoi pour optimiser l’utilisation de la mémoire */
imagedestroy($image);
?>
Maintenant nous allons concevoir notre fomulaire, bien entendu libre à vous de le personnaliser par la suite.
<?php
session_start(); // Ouverture d’une session
?>
<html>
<head>
<title>Mon formulaire</title>
</head>
<body>
<form method=”post” action=”#”>
Votre email : <input type=”text” name=”email” id=”email” />
<br />
Mot de passe* : <input type=”text” name=”password” id=”password” />
<br />
Nom : <input type=”text” name=”nom” id=”nom” />
<br />
Prénom : <input type=”text” name=”prenom” id=”prenom” />
<br />
Veuillez recopier le texte de l’image :
<br />
<img src=”captcha/captcha.php” alt=”captcha” />
<input type=”text” name=”captcha” id=”captcha” maxlength=”5″ size=”5″/><input type=”submit” value=”S’inscrire” />
</from>
<?php
if (isset($_POST['captcha'])) // Si le champ captcha a été rempli
{
if (md5(strtoupper($POST['captcha'])) != $_SESSION['captcha']) {
echo ‘<script>alert(“Veuillez recopier le code correctement”);</script>’;
}
else {
/* Votre traitement de formulaire */
}
?>
</body>
</html>
Voilà, maintenant notre captcha est opérationnelle et permet d’éviter le spam. Cela dit, il est possible d’améliorer notre système en utilisant plusieurs polices d’éciture en même temps et en variant les couleurs de chacune des lettres, pour cela il suffit d’utiliser un tableau et une fonction random… rien de très compliqué pour ceux qui ont déjà une base en PHP. Une astuce aussi que j’aime bien et qui rend la tache des bots plus compliquée et d’entre croiser les lettres, pour cela il faut jouer avec les valeurs de la fonction ‘imagettftext’.
Voilà… à vos clavier maintenant ;-)
SANDCAT : Scanner de vulnérabilités web 24 juillet 2009
Posted by Nassim in Software, Sécurité.Tags: analyse, apache, cms, faille, hack, hacking, iis, piratage, protection, sandcat, Sécurité, scanner, server, serveur
2 comments
J’ai créé ce petit billet pour vous présenter un logiciel vraiment très utile dans le domaine de la sécurité informatique, il s’agit de Sandcat.
Sandcat est un scanner de failles sur 3 niveaux :
- Failles d’applications web (notamment le TOP 10 des failles OWASP et OWASP PHP).
- Failles du serveur (IIS, apache, configuration de PHP…etc).
- Analyses des fichiers “Log” (traçage des attaques et violations…Etc).
Ce logiciel est donc complet et couvre un large éventaille de failles (SQL Injection, CRLF Injection, DoS, XSS…), sa version gratuite est téléchargeable à cette adresse : http://www.syhunt.com/?section=sandcat.download
La version Pro qui est plus complète et plus puissance est payante, je regrète aussi le fait que cette application ne soit disponible que sous Windows.

Joomla Password Reset 10 juillet 2009
Posted by Nassim in Mes créations.Tags: admin, joomla, jpr, modifier, mot, mysql, oubli, passe, passwd, password, perte, python, réinitialiser, reset, retrouver
5 comments

Joomla est un CMS très connu et beaucoup utilisé sur la toile, si vous possédez vous même un site dynamique il est fort possible que vous soyez déjà utilisateur de cette application… et si vous êtes du genre brouillon ou tête en l’air, il est fort possible que vous ayez oublié ou perdu votre mot de passe administrateur.
Si cela vous est arrivé, vous avez probablement eu l’idée d’accéder à votre base de données via PhpMyAdmin pour y modifier directement votre mot de passe (une sorte de réinitialisation). Cette méthode marche très bien… enfin… sauf si vous utilisez Joomla 1.5 car depuis cette version il semblerait que les mots de passe stockés dans la base de données de Joomla soient couplés avec une clé générée aléatoirement.
Ainsi, si vous regardez l’attribut “password” de la table “jos_users” de Joomla (le préfixe jos pouvant varier), vous remarquerez que le mot de passe stocké est du style (ce n’est qu’un exemple) : ab4f63f9ac65152575886860dde480a1:0a5b3913cbc9a909
Il n’est donc pas possible de remplacer directement ce contenu par le hash MD5 du nouveau mot de passe que vous aimeriez mettre en place. Néanmoins, en étudiant le code de Joomla j’ai pu comprendre le fonctionnement de ce couple hash MD5:clé, cela ne m’a pas été compliqué de concevoir une application permettant de crypter de la même façon un nouveau mot de passe.
Ce petit logiciel que j’ai nommé Joomla Password Reset permet donc de crypter un mot de passe à la façon de Joomla dans le but de remplacer sa valeur directement dans la BD, cela permet de faire une réinitialisation en cas de perte, les plus vicieux auront compris que c’est aussi exploitable pour pirater un site à base de Joomla quand on a accès à la base de données (Je décline, d’ailleurs, toute responsabilité quant à l’utilisation de mon logiciel) .

JPR (Joomla Password Reset) est codé en Python, il vous faudra donc posséder l’interpréteur Python sur votre machine (Linux ou Windows) pour pouvoir l’exécuter, je tâcherai de mettre au point un exécutable “.exe” pour les utilisateurs de Windows (les moins débrouillards quoi !).
La version actuelle est une bêta mais elle est totalement fonctionnelle, j’attends d’ajouter une fonction de modification immédiate de la BD pour publier le logiciel en version 1, et par la même occasion, transmettre ses sources.
Liens de téléchargement :
http://www.zshare.net/download/62489772a0664847/
http://www.megaupload.com/?d=NQ5XQ5VY
Pour lancer l’application sous Linux :
python jpr.pyc
Veuillez utiliser cette application dans un cadre légal uniquement !!!
[Linux] Installer carte wifi broadcom 3 juillet 2009
Posted by Nassim in Hardware, Linux.Tags: archlinux, broadcom, carte, driver, fedora, installer, Internet/Reseaux, laptop, Linux, ubuntu, wifi, wireless
add a comment

De nombreux laptop sont équipés de cartes wifi de marque Broadom. Malheureusement pour des raisons de droits fermés, le driver de ces cartes wifi n’est pas inclus dans de nombreuses distributions.
Nous allons voir dans ce billet comment installer en quelques manipulations votre carte wifi de marque Broadcom.
Pour commencer vérifier la présence du logiciel b43-fwcutter sur votre distribution, s’il n’est pas présent veuillez l’installer à l’aide de votre gestionnaire de paquetage (yum, apt-get, pacman… ).
En gros son installation sous fedora/red hat/centOS/Bee Linux se fait via la commande :
yum install b43-fwcutter
Sous Debian/Ubuntu via la commande :
apt-get install b43-fwcutter
et enfin sous mon archlinux adorée avec la commande :
pacman -S b43-fwcutter
Voilà… maintenant il faut télécharger le fichier broadcom-wl pour en extraire le frimware à l’aide de b43-fwcutter, pour cela ouvez une console et tapez les commandes suivantes :
# su -
(entrez le mot de passe root si besoin)
# wget -N http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2
# tar xjf broadcom-wl-4.150.10.5.tar.bz2
# b43-fwcutter -w /lib/firmware broadcom-wl-4.150.10.5/driver/wl_apsta_mimo.o
Notes :
- Si vous êtes sous Ubuntu (ou variante) le “su -” ne marche pas donc précédez la dernière commande par “sudo”.
- Le # n’est pas à taper bien entendu !
Voilà… après un redémarrage votre carte wifi sera opérationnelle, c’était simple non ? ;-)
Enregister une web radio 3 juillet 2009
Posted by Nassim in Internet/Reseaux, Software.Tags: chanson, copier, enregister, mp3, musique, radio, record, sauvegarder, streaming, web
5 comments

Screamer Radio est un logiciel génial fonctionnant sous Windows (ça c’est moins génial me diriez-vous) permettant d’enregister une webradio au format MP3. Super pratique pour obtenir les hits du moment sans risquer sa peau sur les réseaux peer-to-peer ou encore pour sauvegarder les moments forts de vos emissions radios préférées, c’est un accès à des centaines de radios issuent du monde entier qui vous est proposé (y compris les radios algériennes : Chaine 1-2-3 et El bahdja).
Bien entendu, comme la totalité des logiciels que je suggère sur mon blog, Sceamer Radio est gratuit, vous pouvez même le mettre en française après un petit tour dans son menu de configuration.
Téléchargez le dès à présent depuis cette adresse : http://www.screamer-radio.com/download/screamer043.exe