Scan
par _SebF

Adresse IP :

 

Port de départ :

 

Port de fin :

  (limitation à 20 ports maximum)

1 - Fonction de Scan
2 - A propos de
3 - Suivi du développement
        3.1 - Problème restant
        3.2 - RoadMap
        3.3 - Suivi du projet
4 - Code source
        4.1 - Scan.php
        4.2 - Scan2.php

1 - Fonction de Scan

L'utilitaire Scan permet à la base pour  tester les ports TCP d'un hôte distant. L'avantage de cette outil est qu'il est en ligne et rend donc son utilisation anonyme. Il vous permettra aussi de valider votre sécurité* vu de l'extérieur.

Le plus gros avantage, c'est qu'il est en ligne avec la possibilité de changer l'adresse IP de destination.

*Sécurité : Test de de présence de port ouvert

Vous trouverez sur le site Authsecu, une bonne documentation sur les scan TCP et UDP.

2 - A propos de

 Version

 Version 2.1

 Date de création

 07 Novembre 2003

 Dernière modification

 12 Mars 2004

 Auteur

 _SebF

Posez vos questions, remarques, demande d'évolution et retour d'expérience sur le Forum dédié aux outils

3 - Suivi du développement

3.1 - Problème restant

3.2 - RoadMap

- Proposer le choix du timeout et du temps entre chaque port.
- Afficher le port source utilisé pour les scan.
- Proposer la saisie d'un nom d'hôte au lieu d'une IP.
- Proposer des list de ports à scanner tel que standard, Plus, All, Backdoor et etc.
- Tester les fonctions socket_strerror(socket_last_error($socket)), Compatible > php 4.0.
- Gérer un timeout pour allez plus vite entre chaque port.
- Différencier l'échec si pas de réponse ou si réponse indiquant le port est fermé.

3.3 - Suivi du projet

2004.03.12

V2.1

 - Vérification des champs port_destination et port_source si les données saisies sont bien des nombres. Pour cela, j'utilise la fonction is_numeric(), merci loquace.

2003.11.29

V2.0

 - Résolution du problème d'affichage d'un coup. Pour cela, la boucle lance x fois un Document.Write lançant un scan d'un seul port.
 - Création de la fonction Javascript nouvelle_page() permettant de lancer une nouvel fenêtre redimensionnée à partir d'une Form. Merci à Seb| et à Sagamore pour leur coup de main.
 - Implantation d'un sécurité afin de protéger le script contre les utilisations.
 - Limitation du scan à 20 ports simultannés.
 - Demande au browser de ne pas mettre en cache afin d'éviter qu'une seconde demande de scan identique soit non effectuée.

2003.11.25

V1.2

 - Validation poussée des champs port_de_début et port_de_fin.
 - Résolution du problème Warning: fsockopen() en ajoutant error_reporting(0); permettant de ne pas afficher les erreurs et warning.

2003.11.

V1.1

 - Migration sur Ovh => Warning: fsockopen(): unable to connect to quand le port est fermé.
 - Intégration de champ timeout qui fonctionne désormais, car Ovh tourne sur une version PHP 4.x.

2003.11.18

V1.1

 - Rattrapage du retard sur les commentaires dans le script.
 - Passage de la gestion des erreurs dans la fonction erreur($erreur,$opentable).
 - Vérification supplémentaire du champ IP pour éviter la saisie du style .0 qui donnait 0.0.0.0.
 - Passage du script dans son répertoire.

2003.11.07

V1.1

 - Vérification des champs de saisie.

2003.11.07

V1.0

 - Création de la page de saisie.
 - Test d'un port.
 - Choix et test d'une plage.

4 - Code source

Ce script est divisé en deux fichiers afin d'obtenir un affichage fluide. Cela permet de ne pas bloquer l'affichage en attendant les réponses des différents ouverture de session Tcp.

4.1 - Scan.php

<?

// ********************************************
// Nom du script : scan.php
// Auteur : _SebF AT frameIP.com
// date de création : 07 Novembre 2003
// version : 2.1
// Licence : Ce script est libre de toute utilisation.
// La seule condition existante est de faire référence au site http://www.frameip.com afin de respecter le travail d'autrui.
// ********************************************

// ********************************************
// Affichage de l'entete html
// ********************************************
echo
            '
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

            <html>

            <head>

            <LINK REL="StyleSheet" HREF="../style.css" TYPE="text/css">

            <title>FrameIP, Pour ceux qui aiment IP - Script Scan</title>

            <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <META NAME="AUTHOR" CONTENT="www.frameip.com">
            <META NAME="COPYRIGHT" CONTENT="Copyright (c) 2003 by framip">
            <META NAME="KEYWORDS" CONTENT="scan, online, outil, tcp, udp, port, destination, ouvert ferme, session, valider, validation, securite">
            <META NAME="DESCRIPTION" CONTENT="Frameip, pour ceux qui aiment IP - Script Scan">
            <META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
            <META NAME="REVISIT-AFTER" CONTENT="1 DAYS">
            <META NAME="RATING" CONTENT="GENERAL">
            <META NAME="GENERATOR" CONTENT="powered by frameip.com - webmaster@frameip.com">
           
            </head>

            <body>
            ';

// **********************************************
// Récupération des variables POST
// **********************************************
$scan_adresse_ip = $_POST['ipaddress'];
$scan_port_de_depart = $_POST['port1'];
$scan_port_de_fin = $_POST['port2'];

// **********************************************
// Enregistrement du compteur
// **********************************************
include '../variables.php';
$info_compteur1=$scan_adresse_ip;
$info_compteur2=$scan_port_de_depart;
$info_compteur3=$scan_port_de_fin;
$specifiez_le_nom_du_compteur="scan.php";
include '../compteur.php';

// ********************************************
// Vérification du champ IP
// ********************************************
if (empty($scan_adresse_ip))
            scan_erreur(1);           
if ($scan_adresse_ip==0)
            scan_erreur(4);           
if (ip2long($scan_adresse_ip)==-1) // Vérification de la conformité de l'IP
            scan_erreur(4);           
else
            {
            // Transforme les saisies tel que 10.10..4 en 10.10.0.4
            $inetaddr=ip2long($scan_adresse_ip);
            $scan_adresse_ip=long2ip($inetaddr);
            }

// ********************************************
// Vérification des champs ports
// ********************************************
if (empty($scan_port_de_depart))
            scan_erreur(2);           
if (empty($scan_port_de_fin))
            scan_erreur(3);
if (is_numeric($scan_port_de_depart)==false) // Si ce n'est pas un nombre
            scan_erreur(10);
if (is_numeric($scan_port_de_fin)==false) // Si ce n'est pas un nombre
            scan_erreur(11);
if ($scan_port_de_depart<=0)
            scan_erreur(5);
if ($scan_port_de_fin>65535)
            scan_erreur(6);
if ($scan_port_de_depart>$scan_port_de_fin)
            scan_erreur(7);
if ($scan_port_de_fin-$scan_port_de_depart>20)
            scan_erreur(9);

// **********************************************
// Affichage du titre
// **********************************************
echo     '
            <p class="titre-principal">
                        Scanner de ports TCP
            </p>
            <BR>
            <p class="chapitre---texte-de-niveau-1">
                        Voici les résultats du Scan de l\'adresse IP '.$scan_adresse_ip.' entre le port '.$scan_port_de_depart.' et '.$scan_port_de_fin.'
            <BR>
            <BR>
            ';

// **********************************************
// Boucle lancant les appels du script de scan port par port
// **********************************************
for ($i=$scan_port_de_depart;$i<$scan_port_de_fin+1;$i++)
            {
            echo '<script src="scan2.php?host='.$scan_adresse_ip.'&port='.$i.'"></script>';
            }
            echo '</p>';

// ********************************************
// Fin du script général
// ********************************************
fin_du_script();

// ********************************************
// Fonction de gestion des erreurs
// ********************************************
function scan_erreur($erreur) // $erreur représente le numéro d'erreur.
            {
            // ********************************************
            // Affichage de titre
            // ********************************************
            echo
                        '
                        <p class="titre-principal">
                                   Erreur
                        </p>
                        ';

            // ********************************************
            // Affichage de l'erreur
            // ********************************************
            echo     '<p class="chapitre---texte-de-niveau-1">';

            // ********************************************
            // Message personnalisé
            // ********************************************
            if ($erreur==1)
                        echo 'Le Scan ne peux pas avoir lieu car le champ IP est vide.';
            elseif ($erreur==2)
                        echo 'Le Scan ne peux pas avoir lieu car le champ Port de début est vide.';
            elseif ($erreur==3)
                        echo 'Le Scan ne peux pas avoir lieu car le champ Port de fin est vide.';
            elseif ($erreur==4)
                        echo 'Le Scan ne peux pas avoir lieu car le champ IP ne contient pas d\'adresse valide.';
            elseif ($erreur==5)
                        echo 'Le Scan ne peux pas avoir lieu car le champ Port de début est inférieur ou égale à 0.';
            elseif ($erreur==6)
                        echo 'Le Scan ne peux pas avoir lieu car le champ Port de fin est suppérieur à 65535.';
            elseif ($erreur==7)
                        echo 'Le Scan ne peux pas avoir lieu car le champ Port de début est suppérieur au port de fin.';
            elseif ($erreur==9)
                        echo 'Le Scan ne peux pas avoir lieu car vous demandez de scanner plus de 20 ports.';
            elseif ($erreur==10)
                        echo 'Les donnees du champ port de depart ne reprensente pas un nombre.';
            elseif ($erreur==11)
                        echo 'Les donnees du champ port de fin ne represente pas un nombre.';

            // ********************************************
            // Fin du script général
            // ********************************************
            echo '<br><br>';
            fin_du_script();
            }

function fin_du_script()
            {
            // ********************************************
            // Affiche de l'Url
            // ********************************************
            echo
                        '
                                   <a target="_blank" href="http://www.frameip.com">
                                               www.frameip.com
                                   </a>
                        </p>
                        ';

            // ********************************************
            // Fin de la page Html
            // ********************************************
            echo
                        '
                        </body>

                        </html>
                        ';

            // ********************************************
            // Fin du script général
            // ********************************************
            exit(0);
            }

?>

4.2 - Scan2.php

<?

// ********************************************
// Nom du script : scan2.php
// Auteur : _SebF AT frameIP.com
// date de création : 29 Novembre 2003
// version : 2.1
// Licence : Ce script est libre de toute utilisation.
// La seule condition existante est de faire référence au site http://www.frameip.com afin de respecter le travail d'autrui.
// ********************************************

// **********************************************
// Interdiction de la mise en cache
// **********************************************
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

// **********************************************
// Suppression des warning et erreurs si la session tcp ne monte pas
// **********************************************
error_reporting(0);

// **********************************************
// Ouverture de session tcp
// **********************************************
$socket=fsockopen($host, $port, &$errno, &$errstr, 1);

if ($socket)
            {
            // **********************************************
            // La session s'est bien ouverte
            // **********************************************
            $nombre_de_port_ouvert++;
            fclose($socket);
            echo "document.write('<BR>Le port TCP $port est ouvert');";
            }
else
            // **********************************************
            // La session ne s'est pas ouverte
            // **********************************************
            echo "document.write('<BR>Le port TCP $port est fermé      $nombre_de_port_scanne');";


?>



mot clé : destination vpn voip ouvert ferme outil tcpip ipv6 ipv4 valider udp port scan session ip online securite tcp validation

Copyright © 2011-2015 FrameIP TcpIP. Tous droits réservés. Les marques et marques commerciales mentionnées appartiennent à leurs propriétaires respectifs. L'utilisation de ce site Web TcpIP implique l'acceptation des conditions d'utilisation et du règlement sur le respect de la vie privée.
Sécurité entreprise Téléphonie entreprise Expert de votre Infrastructure Test ADSL Serinya Operateur Telecom