Aide et info pour création code php
Noel-barbu
Messages postés
305
Statut
Membre
-
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.
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
-
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"; } }-
-
-
-
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. -
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.
-
-
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 ;-)