Un scanner de ports

Contenu du snippet

Ce code n'est pas parfait, mais il presente deja quelques fonctionalites interessantes.
On trouve nombre de sources de ce genre sur ce site, et peu sont correctement codes, ici, vous avez une version qui tourne parfaitement sous php5.

dans l'ideal :

on separe html et php
on fait un cache
on ajoute des commentaires, mais bon... faut pas exagerer, c'est pas une source extremement complexe, pour ceux qui ne comprennent pas une fonction, utilisez le manuel php.net

Source / Exemple :


<html>
<head>
<style type="text/css">
.ferme{ color:#0f0; }
.ouvert{ color:#00f; }
.error{ color:#f00; }
.deroule{ border:1px solid #000; }
p{ margin:0px; padding:0px;
}
</style>
</head>
<body>
<?php
function getErrno($i, $ip, $timeout=1){
	$f=@fsockopen($ip, $i, $errno, $errstr,$timeout);
	if ($errno==0){
		fclose($f);
		return true;
	}else if ($errno==111)
		return false;
	else
		throw new Exception('cannot connect : '.$errstr);
}
if (isset($_GET['ip']) && isset($_GET['start']) && isset($_GET['end'])){
	$ip=$_GET['ip'];
	$start=$_GET['start'];
	$end=$_GET['end'];
	$fermes=0;
	if (!long2ip(ip2long($ip))==$ip || !is_numeric($start) || !is_numeric($end))
		echo 'mauvais formats';
	else if ($start >=65536 || $end >=65536 || $start <=0 || $end < $start )
		echo 'La valeur du Port doit etre comprise entre 1 et 65535, le premier doit etre inferieur au second';
	else{
		echo '<div class="deroule">';
		try{
			for ($i=$start; $i<=$end; $i++){
				if (getErrno($i, $ip))
					echo '<p class="ouvert">Port : '.$i.' ouvert </p>';
				else{
					echo '<p class="ferme">Port :'.$i.' Fermé </p>';
					$fermes++;
				}
			}
		}catch (Exception $e){
			echo '<p class="error">'.$e->getMessage().'</p>';
			$end=$i-1;
		}
		echo '</div><p>'.$fermes.' Ports fermés & '.($end-$start-$fermes+1).' Ports ouvert</p>';
	}
}
echo '<form action="?">
	adresse ip : <input type="text" name="ip" value="';
if (isset($_GET['ip']))
	echo $_GET['ip'];
else if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
	echo $_SERVER['HTTP_X_FORWARDED_FOR'];
else if (isset($_SERVER['HTTP_CLIENT_IP']))
	echo $_SERVER['HTTP_CLIENT_IP'];
else if (isset($_SERVER['REMOTE_ADDR']))
	echo $_SERVER['REMOTE_ADDR'];
echo '"/>
<br />
PORT de:<input type=text name="start" value="';
if (isset($_GET['start'])) echo $_GET['start'];
echo '"/>
au port :<input type=text name="end" value="';
if (isset($_GET['end'])) echo $_GET['end'];
echo '"/>
<input type=submit value="Scanner">
</form>';
?>
</body>
</head>
</html>

A voir également

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.