Cela fait déjà quelque mois que le code existe sur l'admin de mon site mais je l'avais rédigé jusqu'à lors sous la forme de fonctions, pas très pratique quand il est utilsé dans plusieurs endroit.
J'ai donc décidé de le transformer en classe, de maniere a faciliter son utilisation et j'avais envie de vous en faire profiter.
Concretement, cette classe porte bien son nom puisqu'avec une simple poignée de renseignements elle vous retourne une liste complete des équipements (avec leur type et localisation) sur une plage d'adresse IP donnée.
Il vous suffit juste de donner le pool (deux premiers chiffre de l'adresse IP), la plage (le 3ème chiffre), le nombre de plage que vous désirez scanner et c'est parti! Le script va se carger de générer avec deux ou trois boucles toutes les adresses IP possible dans ce que vous lui avez donné à manger.
Pour finir, je préciserai que deux 'modes' sont disponibles, a savoir le mode 'simple' qui ne scanne qu'une seule plage d'adresse, sois 255 adresses différentes ou le mode 'multiple' qui scanne plusieurs plages (d'ou le nombre de plage a fournir).
Source / Exemple :
//Code a mettre dans votre page (index.php par exemple)
include('ScanIP.Class.php');//On importe la classe
$ScanIP = new ScanIP($operateur, $typeTest, $locationQuery);
$ScanIP->addPool($pool, $depart, $NbPlages);
$ScanIP->launch();
//Si vous desirez un compte-rendu graphique, rajoutez juste ceci :
$url = $ScanIP->generateGraphResume('chemin_de/sauvegarde');
?>
<img src="<? echo $url;?>" alt="" />
Conclusion :
Pour faire tourner le scanner, un objet est a creer (avec les paramètres qui vont bien avec, rdv dans le fichier), des pools sont a indiquer à l'objet (par le biais de $votreObjet->addPool();) et une fonction est a appeler : $votreObjet->launch(); et c'est parti!
Deux choix s'offrent à vous : fournir les paramètres par un formulaire ou coder en dur dans votre page les paramètres a definir.
Cette version n'est basée que sur IPV4... peut-etre qu'un jour, quand IPV6 se sera démocratisé, je ferai les modifications nécéssaires.
///---------------------
Au niveau des opérateurs, cette vision est un peu abstraite mais c'est un moyen pour savoir qui possède quoi durant le scan.
La définition d'opérateurs permet en outre de ne selectionner que les équipements de tels ou tels opérateurs (par le biais des patterns de determination de type), les autres entrées seront désignée comme 'bad'.
///---------------------
Sur le point du vue des deux fonction de détermination du type et de la localisation, vous pouvez ajouter vos propres paterns et type et ceux que j'ai fournis peuvent deja vous montrer la marche a suivre. Libre a vous donc de modifier ces deux fonction pour obtenir les résultats escomptés.
///---------------------
En dernier lieu, la classe est uniquement compatible PHP5 et la librairie GD2 est nécéssaire pour génerer les compte-rendus graphiques.
Le choix du PHP5 m'était plus pratique, tous ceux qui ne pourrons pas faire fonctionner la classe à cause de ce choix recoivent mes sincères exuses.
25 juil. 2006 à 11:03
25 juil. 2006 à 13:31
qq petites choses pour aller mieux [moi aller mieux je précise ;)]
*
au lieu de
* select * : pas optimisé
* <?php au lieu de <?
merci pour moi :-)
cdt
kiki
25 juil. 2006 à 13:40
cette petite classe est trés interessente mais j'ai un petit probleme, je ne sait pas utiliser les classes, alors je me demandé s'il etait possible d'avoir un exemple d'utilisation concret avec celle la?
je ne veux pas que l'on me mache le travail mais j'ai pas mal de difficulté à conprendre comment cela fonctionne.
alors merci d'avance
cyril
25 juil. 2006 à 16:16
Dans les remarques de kiki2sirom, il ya une chose que je n'ai pas compris : select * pas optimisé, et que doit-on mettre a la place? (si c'est la liste de tous les champs, ne serait-ce pas un peu lourd dans le code?).
Pour le reste, j'en tiendrait compte pour une prochaine édition.
Au programme, une chose qui me parait importante : la suppression de l'array des pools en paramètres et son remplacement par une methode d'ajout (ca ressemblerait a ca :
$scan = new ScanIP(...
$scan->addPool('pool1', ...);
$scan->addPool('pool2', ...);
$scan->launch();
), ca me semble plus simple pour l'utilisateur.
A la prochaine donc et merci pour le 8 ;)
26 juil. 2006 à 09:05
Est'il possible d'utiliser cette classe sur un reseau intranet? je me pose la question car je me suis appercu que tu fais une recherche à partir d'un FAI!!
a pluche
cyri
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.