Php-scanner.ip/ipv4/host/port v1.1 by alexscott - un scanner efficace est souple

Contenu du snippet

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

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.