Articles en ligne
Un article de HackaWiki.
Les collaborateurs de nos journaux sont libres et mêmes invités à utiliser cet espace pour publier électroniquement ceux de leurs articles qu'ils jugent - en toute humilité - nécessaire de partager.
Sommaire |
[modifier]
The Hackademy Journal
[modifier]
N°13
[modifier]
N°16
[modifier]
N°18
[modifier]
N°19
[modifier]
N°20
[modifier]
The Hackademy Manuel
[modifier]
N°5
[modifier]
N°8
[modifier]
N°9
- THM9/Spoofer son IP sur les forums
- THM9/Exploiter les format bugs dans le tas
- THM9/Exploiter les format bugs dans le tas (2)
[modifier]
N°10
[modifier]
N°11
[modifier]
N°12
[modifier]
N°13
[modifier]
The Hackademy Magazine
[modifier]
N°1
- THMag 01/Google Hacking
- THMag01/Coder une machine virtuelle
- THMag01/Orchestre Rouge : Un spectaculaire réseau de transmissions cryptées (partie 1)
[modifier]
N°2
- THMag02/Orchestre Rouge : ou comment constituer un réseau d'espionnage au cœur de l'Europ (partie 2)
[modifier]
N°3
- THMag 03/Challenge beemeal
- Man13/Les entreprises et le hacking
- Man7/Enregistrement online nouvelle génération
- Man7/Création de shellcodes win32 partie 1
- Man8/Création de shellcodes win32 partie 2
- Man8/Les shellcodes génériques sur Windows
[modifier]
N°4
- THMag 04/Packeur et unpackeur : une autre vision
- THMag 04/Boxes Article "Des millions d'utilisateurs piratables par négligence"
[modifier]
N°5
[modifier]
Articles proposés uniquement sur HackaWiki
[modifier]
Divers
Texte (brut) du Manuel 10 : iptables et Perl
[modifier]
Disponibles via P2P
- THJ-20 : ed2k://|file|[French ebook] The Hackademy Journal -n20 - Juin-Juillet 2005.pdf|14292528|5BB9F055680B0E47B4578BC89C0797F4|/
- mini-guide anonymat : ed2k://|file|Hackademy Cours Anonymat.pdf|2362562|1D70E31B9D98669BCDA1BE84192D8245|/
[modifier]
The Hackademy PROG
[modifier]
N°7
[modifier]
Logger les erreurs : le code
<?php
/* GESTION DES ERREURS
* Si la constante repertoire_log n'est pas définie (ceci permet de choisir le
* répertoire de destination dans le fichier PHP où l'on inclut celui-ci, utile
* lorsqu'ils ne se trouvent pas tous au même niveau)...
*/
if ( !defined('repertoire_log') ){
// ...alors il l'a défini avec comme valeur log/
// (ce répertoire contiendra le classement des erreurs,
// à vous de le créer)
define ( "repertoire_log","log/") ;
}
/* Constante permettant de choisir si le mode de ban IP est activé.TRUE pour
* le mode activé, FALSE pour le mode désactivé.*/
define("ban_active",TRUE);
// Constante permettant de choisir à partir de combien d'erreurs l'IP se fait bannir.
define("nb_avert", 3 ) ;
//Constante permettant de définir le message lorsque l'IP est ban.
define("message_ban","Adresse IP bannie contactez l'admin");
//Si le mode du ban est activé...
if(ban_active)
{
// ... alors si is_ban() retourne vrai, afficher le message du ban et
// stopper l'exécution du script.
if(is_ban()){echo message_ban;exit;}
}
/* Redirection des erreur vers la fonction recupere_e set_error_handler("recupere_e");
* Que l'on définit ici :*/
function recupere_e($errno, $errstr, $errfile, $errline){
/* $errno contient le type de 1'erreur(int)
* $errstr contient le message d'erreur
* $errfile contient le fichier où se trouve l'erreur
* $errline contient la ligne de l'erreur
*
* $errno est un nombre, nous nous limiterons à détecter les valeurs
* suivantes :
* 1 E_ERROR
* 2 E_WARNING
* 8 E_NOTICE
* 256 E_USER_ERROR
* 512 E_USER_WARNING
* 1024 E_USER_NOTICE
*/
switch ($errno) {
//si $errno est égal à E_USER_ERROR soit 256...
case E_USER_ERROR :
$type="Fatal :\n";
break;
//si $errno est égal à E_USER_WARNING soit 512...
case E_USER_WARNING :
$type="Erreur:\n" ;
break;
//si $errno est égal à E_USER_NOTICE soit 1024...
case E_USER_NOTICE :
$type="WAKNING:\n";
break;
//si $errno est égal à E_ERROR soit I...
case E_ERROR :
$type="Fatal:\n";
break;
//si $errno est égal à EWARNING soit 2...
case E_WARNING :
$type="Erreur:\n";
break;
//si $errno est égal à ENOTICE soit 8...
case E_NOTICE:
$type="WARNING:\n";
break;
//Dans tous les autres cas
default:
$type="lnconnu:\n";
break;
}
//On renvoie la capture à la fonction de traitement.
traitement_e($type."[$errno] $errstr\n".
"Ligne: ".$errline.
" Fichier: ".$errfile."\n");
}
function traitement_e($erreur)
{
//$erreur contient le message d'erreur.
//$info = date:jour-mois-anne heure:minute:seconde + IP du client...
$info=date("d/m/Y H:i:s",time())." : ".$_SERVER['REMOTE_ADDR'].
//+ Serialisation du tableau $_GET, soit toute les variables
// passer par URL...
"\n\t GET:".serialize($_GET).
//+ Serialisation du tableau $_POST, soit toutes les
// variables passées par méthode POST...
"\n\t POST:".serialize($_POST).
//+ si la variable $_COOKIE est définie, alors renvoie
//Serialisation du tableau $_COOKIE, soit tout le contenu
// du cookie, sinon renvoie " Undefined ".
"\n\t COOKIE:".
(isset($_COOKIE) ? serialize($_COOKIE) : "Undefined" ).
//+ Si la variable $_SESSION est définie, alors renvoie
//Serialisation du tableau $_SESSION, soit toutes
// les variables contenues dans la session, sinon renvoie
// " Undefined ".
"\n\t SESSION:".
(isset($_SESSION) ? serialize($_SESSION) : "Undefined" ).
//+ Serialisation du tableau $_SERVER, soit toutes
// les variables Serveur...
"\n\tSERVER:".serialize($_SERVER)."\n\n";
//$rep = répertoire où sont contenus les logs concaténés au
// jour-mois-année actuels. $rep=repertoire_log.date("d-m-Y",time());
//Si le répertoire $rep n'existe pas...
if(!is_dir($rep))
{
//alors crée le répertoire (crée le répertoire
//jour-mois-annee actuel). S'il échoue, renvoie un message
//et stoppe la fonction.
if(!@mkdir($rep))
{
echo "Vérifier l'existence du répertoire "
.repertoire_log;
return FALSE;
}
}
// $fp= ouvre le fichier se trouvant dans $rep du nom de l'heure // actuelle concatenée à "h" en mode ajout. Si le fichier n'existe pas, // il se crée. $fp = fopen($rep.7".date("H",time())."h","a");
// Rajoute dans le fichier, à la fin, $erreur et $info, soit les
// informations de l'erreur et les informations du visiteur.
fwrite($fp,$erreur.$info);
//Ferme le fichier.
fclose($fp);
//Si le mode ban est activé...
if(ban_active)
{
// alors ajouter un avertissement, retourne TRUE si l'IP,
// suite à l'avertissement, est ban ; FALSE autrement.
if(ban_ip())
{
//Affiche le message de ban. écho message_ban;
//Stoppe l'exécution du script.
exit;
}
}
}
function ban_ip()
{
//$fichier = répertoire où sont contenus les logs plus l'IP
$fichier=repertoire_log.$_SERVER['REMOTE_ADDR'].".ip";
//Si $fichier concatené à " .tmp " est un fichier et qu il existe...
if(is_file($fichier.".tmp"))
{
// ...ouvrir ce fichier en lecture.
$fp=fopen($fichier.".tmp",'r');
//$avert = a la valeur contenue dans le fichier
//(un nombre correspondant au nombre d'avertissements).
$avert=fread($fp,filesize($fichier.".tmp"));
//Ferme le fichier.
fclose($fp);
//Ajoute un avertissement.
$avert++;
//Si le nombre d'avertissements est supérieur au nombre
//d'avertissements tolérés...
if($avert>nb_avert)
{
//alors renommer le fichier $fichier.tmp en $fichier
//(transforme le fichier d'avertissement en fichier
// de ban).
rename($fichier.".tmp",$fichier);
//La fonction se termine et renvoie TRUE
// (soit que l'IP est ban).
return TRUE;
}
//Sinon (si $fichier concatené à " .tmp " n'existe pas...)
} else {
//Si on bannit sans avertissement...
if(nb_avert==0)
{
//ouvre le $fichier (le crée).
$fp = fopen($fichier,"w");
//Écrit 0 dedans
//(juste pour la référence de dire 0 avertissement).
fwrite($fp,"O");
//Ferme le fichier.
fclose($fp);
//La fonction se termine et renvoie TRUE
//(l'IP est bannie).
return TRUE;
}
//$avert=l correspond à son premier avertissement.
$avert= 1 ;
}
//Ouvre le fichier $fichier concatené à " .tmp " en mode écriture
// (crée le fichier s'il n'existe pas, ou écrase le contenu s'il existe).
$fp = fopen($fichier.".tmp","w");
//Écrit dans le fichier le nombre d'avertissements.
fwrite($fp,$avert);
//Ferme le fichier.
fclose($fp);
//La fonction se termine et renvoie FALSE
// (l'IP n'est pas bannie par cet avertissement).
return FALSE;
}
function is_ban(){
//Si le fichier contenu dans le répertoire répertoire_log du nom de // l'ip concatenée à " .ip " existe...
if(is_file(repertoireJog.$_SERVER['REMOTE_ADDR'].".ip"))
{
//alors la fonction renvoie TRUE (l'IP est bannie).
return TRUE;
}else{
//Sinon la fonction se termine et renvoie FALSE (l'IP n'est pas bannie).
return FALSE;
}
}
?>
[modifier]
Ce qui vous manque ?
- [Merci de rajouter ici ce que vous désirez voir comme articles via la commande "Modifier"]
---> tout ce qui touche aux forum phpBB2 - prise de controle ...
[modifier]
