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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 579 fois - Téléchargée 27 fois

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

Ajouter un commentaire

Commentaires

cs_alexscott
Messages postés
55
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
10 novembre 2006

humm je sais pas si elle fonctionne ... il y a pas longtemps j'ai vu cette source buggue mais bon elle est vielle ... ca m'interesse pas trop en php ce genre de truc surtout que c'est tout sauf discret ...
enfin bon ca reste 1 exemple pour comprendre le principe ... apres suffit de comprendre pour ameliorer voir faire des choses qui n'ont pas de rapports...
xavierhaest
Messages postés
13
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
17 octobre 2004

ben je tes mi 10/10 c'est ce qui a permit que ta note remonte a 7/10 mais aussi parce que je connait pas tres bien le php et j'ai beaucoup de mal a aprendre je suis en train d'aprendre mais c'est tres dure alors je trouve rien que a regarder que ta source est bien puis je la testerai une autre fois et je te dirait quoi allez ciao
cs_alexscott
Messages postés
55
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
10 novembre 2006

Mais bientot une mise a jour pour afficher tous les resultats sur la meme page.......
8neo8
Messages postés
4
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
12 août 2003

s'est du tout bon . Bon travail....
thepopolinux
Messages postés
245
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
21 juin 2004

Pas mal il est vrai !

bravo+++

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.