Ce scanner de port est en fait une amelioration de celui fait par:
DoGPhP :
http://www.phpcs.com/article.aspx?ID=339
Ke je remercie pour son boulot qui ma permit de faire cela
Ce scanner ci a lanvatage d'etre plus souple dutilisation
on balaye les ports ou les ips ou les deux avec le timeout au choix
il affiche l'host
voila ce fameux code :
Source / Exemple :
<font size="5">PHP-Scanner.IP/IPv4/Host/Port V1.1 by alexscott</font>
<hr width="100%" size="1" color="#000000">
<?
//init
$port = 0;
$portdeb = 0;
$portfin = 0;
$ok = 0;
$server = $_SERVER['REMOTE_ADDR'];
$serverdeb = $_SERVER['REMOTE_ADDR'];
$serverfin = $_SERVER['REMOTE_ADDR'];
$serveripv4 = 0;
$timeout = 1;
$limit = 300;//le temps de timeout du serveur
function reload(){;}//recharge le formulaire si il y a une erreur
function ipv4($ip)//retourne l'IPv4 d'une IP, IPv4 > 0(pour pouvoir les classer)
{
$longipv4 = 2147483648;
$ipv4 = ip2long($ip);
if($ipv4 < 0)
$ipv4 += (2*$longipv4);
return($ipv4);
}
if(!empty($_GET['required-portdeb']) && !empty($_GET['required-portfin']) && !empty($_GET['ok']) && !empty($_GET['required-serverdeb']) && !empty($_GET['required-serverfin']) && !empty($_GET['required-timeout']) && ipv4($_GET['required-serverdeb']) <= ipv4($_GET['required-serverfin']) && $_GET['required-portdeb'] <= $_GET['required-portfin'] && $_GET['required-timeout'] < $limit)//verif que le tableau est rempli
{
$portdeb = $_GET['required-portdeb'];
$portfin = $_GET['required-portfin'];
$ok = $_GET['ok'];
$serverdeb = gethostbyname($_GET['required-serverdeb']);
$serverfin = gethostbyname($_GET['required-serverfin']);
$timeout = $_GET['required-timeout'];
}
else//sinon reload
reload();
if($ok)//si c bon
{
if ($serverdeb == $serverfin)//titre si une seule ip
echo 'IP : '.$serverdeb.', IPV4 : '.ip2long($serverdeb).' et hostname : '.gethostbyaddr($serverdeb).'<hr width="100%" size="1" color="#000000">';
else//titre sinon
echo 'IP : de '.$serverdeb.' a '.$serverfin.', IPV4 : de '.ipv4($serverdeb).' a '.ipv4($serverfin).'<hr width="100%" size="1" color="#000000">';
for($time = 0, $serveripv4 = ipv4($serverdeb), $i = 0; $serveripv4 <= ipv4($serverfin); $serveripv4++)//boucle tant que toutes les ips demandes ne sont pas scanne
{
if($serveripv4 > ipv4($serverfin))//si toutes les ip sont resolues stop
break;
if($time+$timeout < $limit && $i < 27)//si tps et place non depasse
{
?>
<font size='2,5'>
<?
$server = long2ip($serveripv4);
for($port = $portdeb; $port <= $portfin; $port++)//boucle des ports
{
if($time+$timeout < $limit && $i < 27)//si tps et place non depasse
{
$qy= @fsockopen($server, $port, &$errno, &$errstr, $timeout);
if(!$qy)
echo'Connexion failed.... [server: '.$server.' <=> host: '.gethostbyaddr($server).' <=> port: <b>'.$port.'</b>]<br>';//[errno= '.$errno.' => errstr: '.$errstr.']<br>
else
echo'<b><font color=red> Connected.... </font></b> [server: '.$server.' <=> host: '.gethostbyaddr($server).' <=> port: <b>'.$port.'</b>]<br>';
$time += $timeout;
$i++;
}
else//sinon stop et...
break;
}
?>
</font>
<?
if($port < $portfin)//si scan non fini page suivante
echo '<br><a href="scanner.php?ok=1&required-serverdeb='.$server.'&required-serverfin='.$serverfin.'&required-portdeb='.($port-1).'&required-portfin='.$portfin.'&required-timeout='.$timeout.'">suite</a><br><br><br><a href="scanner.php">reload</a>';
}
else//sinon stop et...
break;
}
if($serveripv4 <= ipv4($serverfin))//si scan non fini page suivante
echo '<br><a href="scanner.php?ok=1&required-serverdeb='.$server.'&required-serverfin='.$serverfin.'&required-portdeb='.($port-1).'&required-portfin='.$portfin.'&required-timeout='.$timeout.'">suite</a><br>';
echo '<br><br><a href="scanner.php">reload</a>';
}
else//si ok != 1 alors on affiche le tableau de commande
{
?>
<table border="0" width="100%" height="517">
<tr>
<td align="center" width="100%">
<form method="GET" action="scanner.php">
<input type="hidden" name="ok" value ="1">
<p>IP : vous pouvez mettre soit l'IP(127.0.0.1) soit le DNS(www.google.com) :
<br>de:<input type="text" name="required-serverdeb" size="20" style="background-color: #000000; color: #FFFFFF" value="<?echo $_SERVER['REMOTE_ADDR'];//adresse client a scanner par defaut?>">
<br>a : <input type="text" name="required-serverfin" size="20" style="background-color: #000000; color: #FFFFFF" value="<?echo $_SERVER['REMOTE_ADDR'];//adresse client a scanner par defaut?>">
</p>
<p>Port :
<br>de:<input type="text" name="required-portdeb" size="4" style="background-color: #000000; color: #FFFFFF" value="80">
<br>a : <input type="text" name="required-portfin" size="4" style="background-color: #000000; color: #FFFFFF" value="80">
<p>Timeout :
<br><input type="text" name="required-timeout" size="2" style="background-color: #000000; color: #FFFFFF" value="1"></p>
<p><input type="submit" value="Envoyer" style="background-color: #000000; color: #FFFFFF"></p>
</form>
</td>
</tr>
</table>
<?
}
?>
<p><hr width="100%" size="1" color="#000000">
Conclusion :
ben si vous voulez le tester aller sur:
http://www.alexscott.cjb.net/programmation/php/scanner.php
Vos commentaires sont les bienvenue
et si vous avez des idees d'optimisation ou de poursuite de developpement n'hesiter pas a me le dire soit ici soit
la : alexscott_devil@hotmail
alexscott
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.