Aide et info pour création code php

Noel-barbu Messages postés 305 Statut Membre -  
Noel-barbu Messages postés 305 Statut Membre -
Bonjour,

Je fais appel aux personnes qui connaisse bien php mais orienter serveur me m'explique

j'aimerais créer une petit interfaces qui permet de lister les ports TCP/UDP en PHP

en somme faire du dnslookup / du ping / et scann de port.

merci de votre aide.

2 réponses

  1. CptRomaiin Messages postés 334 Statut Membre 58
     
    Salut,

    Voici un petit script qui fait à peu près ce que tu demandes :

    // Récupération du nom depuis l'adresse IP
    $hostname = gethostbyaddr("8.8.8.8");
    echo $hostname . "\n";
    
    // Récupération de l'adresse ip depuis le nom
    $hostip = gethostbyname("www.google.fr");
    echo $hostip . "\n";
    
    // Ping avec commande du système (Pour Linux, à adapter si le système est différent)
    function ping($host)
    {
            exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);
            return $rval === 0;
    }
    if (ping("8.8.8.8")) {
    	echo "Liaison OK\n";
    } else {
    	echo "Liaison KO\n";
    }
    
    // Scanner de ports
    $host = "8.8.8.8";
    $ports = array(21, 22, 23, 25, 53, 80, 110, 1433, 3306);
    	
    $results = array();
    foreach($ports as $port) {
    	if($pf = @fsockopen($host, $port, $err, $err_string, 1)) {
    		$results[$port] = true;
    		fclose($pf);
    	} else {
    		$results[$port] = false;
    	}
    }
     
    foreach($results as $port=>$val)	{
    	$prot = getservbyport($port,"tcp");
    	echo "Port $port ($prot): ";
    	if($val) {
    		echo "OK\n";
    	}
    	else {
    		echo "Inaccessible\n";
    	}
    }
    1
    1. Noel-barbu Messages postés 305 Statut Membre 2
       
      oui il est bien ficeler effectivement alors j'aurais une question est-il possible de faire la même chose mais en donnant une ip précise ?

      exemple si la personne veut lister les ports ouvert de son réseau
      0
    2. CptRomaiin Messages postés 334 Statut Membre 58
       
      Sur le script il suffit de changer 8.8.8.8 par l'adresse que tu veux scanner.
      0
    3. Noel-barbu Messages postés 305 Statut Membre 2
       
      oui , je voudrais faire ça si vous voulez mais, avec un formulaire ou ont choisie l'ip dans celui-ci.
      0
    4. CptRomaiin Messages postés 334 Statut Membre 58
       
      Il suffit de faire un formulaire qui pointe sur ce fichier comme par exemple :

      formulaire.html
      <form method="POST" action="scanner.php">
      <input name="adresse" type="text">
      <button type="submit">Scanner</button>
      </form>

      scanner.php
      $host = $_POST["adresse"];
      $ports = array(21, 22, 23, 25, 53, 80, 110, 1433, 3306);
      	
      $results = array();
      foreach($ports as $port) {
      	if($pf = @fsockopen($host, $port, $err, $err_string, 1)) {
      		$results[$port] = true;
      		fclose($pf);
      	} else {
      		$results[$port] = false;
      	}
      }
       
      foreach($results as $port=>$val)	{
      	$prot = getservbyport($port,"tcp");
      	echo "Port $port ($prot): ";
      	if($val) {
      		echo "OK\n";
      	}
      	else {
      		echo "Inaccessible\n";
      	}
      }
      

      Après il suffit de rajouter une vérification sur la variable $host pour vérifier que l'ip est correct.
      0
    5. Noel-barbu Messages postés 305 Statut Membre 2
       
      J'ai procédé ainsi et aimerais le perfectionner :


      <table width="800" align="center">
      <?php
      // Récupération du nom depuis l'adresse IP
      // $hostname = gethostbyaddr("8.8.8.8");

      // Récupération de l'adresse ip depuis le nom
      // $hostip = gethostbyname("www.google.fr");

      $secu_1 = mysql_real_escape_string($hostname);
      $secu_2 = mysql_real_escape_string($hostip);
      $secu_3 = mysql_real_escape_string($host);

      $hostname = $_POST["hostname"];
      $hostip = $_POST["hostip"];

      echo '<tr>';
      echo '<td>'.$hostname.'</td>';
      echo '<td>'.$hostip.'</td>';
      echo '</tr>';


      // Ping avec commande du système (Pour Linux, à adapter si le système est différent)
      function ping($host)
      {
      exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);
      return $rval === 0;
      }
      if (ping("8.8.8.8")) {
      echo '<tr>';
      echo '<td>Liaison OK</td>';
      echo '<td> </td>';
      echo '</tr>';
      echo '<br/>';
      echo '<br/>';
      }
      else
      {
      echo '<br/>';
      echo '<br/>';
      echo '<tr>';
      echo '<td>Liaison KO</td>';
      echo '<td> </td>';
      echo '</tr>';
      }

      // Scanner de ports
      $host = $_POST["adresse"];
      $ports = array(21, 22, 23, 25, 53, 80, 110, 1433, 3306);
      $results = array();
      foreach($ports as $port) {
      if($pf = @fsockopen($host, $port, $err, $err_string, 1)) {
      $results[$port] = true;
      fclose($pf);
      } else {
      $results[$port] = false;
      }
      }
      foreach($results as $port=>$val) {
      $prot = getservbyport($port,"tcp");
      echo '<tr>';
      echo "<td>Port $port ($prot):</td>";
      if($val) {
      echo '<td>OK</td>';

      }
      else {
      echo '<td>Inaccessible</td>';
      echo '</tr>';
      }
      }
      ?>
      </table>
      <br/>
      <form method="POST" action="scan-tools.php">
      <table width="800" align="center">
      <tr>
      <td>Hostname</td>
      <td><input name="hostname" type="text"></td>
      </tr>
      <tr>
      <td>URL :</td>
      <td><input name="adresse" type="text"></td>
      </tr>
      <tr>
      <td>IP cible :</td>
      <td><input name="hostip" type="text"></td>
      </tr>
      <tr>
      <td> </td>
      <td> </td>
      </tr>
      <tr>
      <td> </td>
      <td><button type="submit">Scanner</button></td>
      </tr>
      </table>
      <br/>
      </form>


      Problème que je rencontre sont les suivants ligne 21 :
      --------------------------------------------------------------------------

      Warning: exec() has been disabled for security reasons in www/b14060d7807053e73b77f0ca311ce807/scan-tools.php on line 21

      Qui correspond à cette ligne :
      exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);
      return $rval === 0;

      ensuite j'ai remarquer que j'avais tout le temps le message :
      Liaison KO en haut du tableau.

      j'aimerais y ajouter des fonctionnalités avancer si c'est possible.
      0
  2. loupix57 Messages postés 316 Date d'inscription   Statut Membre Dernière intervention   14
     
    Salut Noël !
    Toujours ce souci avec l'erreur Warning: exec() has been disabled for security reasons in
    Essaye avec d'autre fonctions comme passthru(), shell_exec(), system() et proc_open() au lieu de exec ;
    Sur certains serveurs pas trop regardant ça marche comme par magie ;-)
    0
    1. Noel-barbu Messages postés 305 Statut Membre 2
       
      mon serveur est sur infomaniak et ça ne fonctionne pas
      0