| Auteur : Seb-D Créé : le 07/12/2006 01:09:24 Modifié : le 15/05/2008 18:42:05 Noter et commenter ce tutoriel Imprimer ce tutoriel |
|
| Nom | Type |
|---|---|
| file_id | integer(11) |
| path | varchar(255) |
| hash | varchar(32) |
1 2 3 4 5 6 | CREATE TABLE `bot_fichiers` ( `file_id` int(11) NOT NULL auto_increment, `path` varchar(255) NOT NULL, `hash` varchar(32) NOT NULL, PRIMARY KEY (`file_id`) ) ENGINE=MyISAM; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php function liste_file_hash($dir) { // On ouvre le dossier if ($dossier = opendir($dir)) { // On recherche tous les dossiers et fichiers qu'il contient while ($fichier = readdir($dossier)) { // Le path du dossier actuel $path = $dir . '/' . $fichier; // Si on rencontre un dossier, alors on relance la fonction pour rechercher // de nouveau tous les fichiers et dossiers qu'il contient if ($fichier != '.' && $fichier != '..' && is_dir($path)) liste_file_hash($path); // Si on a affaire à un fichier elseif ($fichier != '.' && $fichier != '..' && !is_dir($path)) { echo $path . ' - hash(' . md5_file($path) . ')<br />'; // On insère le path du fichier et son hash MD5 mysql_query('INSERT INTO `bot_fichiers` ( `file_id` , `path` , `hash` ) VALUES (NULL , \'' . $path . '\', \'' . md5_file($path) . '\');') or die('Erreur : ' . mysql_error()); } } closedir($dossier); } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php // On récupère la liste des fichiers & leur hash $requete = 'SELECT * FROM `bot_fichiers`'; $query = mysql_query($requete) or die('Erreur : ' . mysql_error()); $rapport = null; while ($row = mysql_fetch_array($query)) { // On vérifie l'existence du fichier if (file_exists($row['path'])) { // On calcule le hash MD5 du fichier $hash_md5 = md5_file($row['path']); if ($hash_md5 == false) $rapport .= 'Impossible de récupérer la chaîne MD5 du fichier (' . $row['path'] . ')<br />'; else { // Si le hash MD5 ne correspond pas if ($hash_md5 != $row['hash']) $rapport .= 'Le hash MD5 du fichier ' . $row['path'] . ' ne correspond pas !<br />'; } } else // Si le fichier n'existe pas $rapport .= 'Le fichier ' . $row['path'] . ' n\'est pas présent sur le disque<br />'; } // On envoie le rapport si nécessaire if (!empty($rapport)) { $entetes = "Content-type: text/html; Charset=iso-8859-1\n\r" ; $entetes .= "From: " . EMAIL_ADMIN . "\n\r"; $send = mail(EMAIL_ADMIN, '[BOT MD5] Rapport', $rapport, $entetes); if (!$send) echo '<p>Impossible d\'envoyer le mail</p>'; echo $rapport; } else echo '<p>Aucun fichier n\'a été modifié</p>'; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | <?php error_reporting(E_ALL); set_time_limit(0); define('EMAIL_ADMIN', 'votremail@gmail.com'); define('HOME_WWW', '/home/seb/www'); define('DBHOST', 'localhost'); define('DBUSER', 'user'); define('DBPASS', 'pass'); define('DBBASE', 'base'); // Connexion à la base de données mysql_connect(DBHOST, DBUSER, DBPASS) or die('Erreur : ' . mysql_error()); mysql_select_db(DBBASE) or die('Erreur : ' . mysql_error()); function liste_file_hash($dir) { // On ouvre le dossier if ($dossier = opendir($dir)) { // On recherche tous les dossiers et fichiers qu'il contient while ($fichier = readdir($dossier)) { // Le path du dossier actuel $path = $dir . '/' . $fichier; // Si on rencontre un dossier, alors on relance la fonction pour rechercher // de nouveau tous les fichiers et dossiers qu'il contient if ($fichier != '.' && $fichier != '..' && is_dir($path)) liste_file_hash($path); // Si on a affaire à un fichier elseif ($fichier != '.' && $fichier != '..' && !is_dir($path)) { echo $path . ' - hash(' . md5_file($path) . ')<br />'; // On insère le path du fichier et son hash MD5 mysql_query('INSERT INTO `bot_fichiers` ( `file_id` , `path` , `hash` ) VALUES (NULL , \'' . $path . '\', \'' . md5_file($path) . '\');') or die('Erreur : ' . mysql_error()); } } closedir($dossier); } } // DEUX MODES D'UTILISATION : indexation & vérification // INDEXATION - index.php?add if (isset($_GET['add'])) { liste_file_hash(HOME_WWW); // VERIFICATION - index.php } else { // On récupère la liste des fichiers & leur hash $requete = 'SELECT * FROM `bot_fichiers`'; $query = mysql_query($requete) or die('Erreur : ' . mysql_error()); $rapport = null; while ($row = mysql_fetch_array($query)) { // On vérifie l'existence du fichier if (file_exists($row['path'])) { // On calcule le hash MD5 du fichier $hash_md5 = md5_file($row['path']); if ($hash_md5 == false) $rapport .= 'Impossible de récupérer la chaîne MD5 du fichier (' . $row['path'] . ')<br />'; else { // Si le hash MD5 ne correspond pas if ($hash_md5 != $row['hash']) $rapport .= 'Le hash MD5 du fichier ' . $row['path'] . ' ne correspond pas !<br />'; } } else // Si le fichier n'existe pas $rapport .= 'Le fichier ' . $row['path'] . ' n\'est pas présent sur le disque<br />'; } // On envoie le rapport si nécessaire if (!empty($rapport)) { $entetes = "Content-type: text/html; Charset=iso-8859-1\n\r" ; $entetes .= "From: " . EMAIL_ADMIN . "\n\r"; $send = mail(EMAIL_ADMIN, '[BOT MD5] Rapport', $rapport, $entetes); if (!$send) echo '<p>Impossible d\'envoyer le mail</p>'; echo $rapport; } else echo '<p>Aucun fichier n\'a été modifié</p>'; } mysql_close(); ?> |



Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
Fil RSS |
XHTML 1.0 |
CSS 2.0
Édité par Simple IT SARL :
Nous contacter
| Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
577 Zéros connectés |
7 requêtes |
0.0253s (0.0075s)