Aide et info pour création code php

Fermé
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 - 2 oct. 2014 à 11:44
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 - 6 oct. 2014 à 15:26
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.
A voir également:

2 réponses

CptRomaiin Messages postés 315 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016 58
2 oct. 2014 à 12:56
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
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 2
2 oct. 2014 à 13:47
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
CptRomaiin Messages postés 315 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016 58
Modifié par CptRomaiin le 2/10/2014 à 14:04
Sur le script il suffit de changer 8.8.8.8 par l'adresse que tu veux scanner.
0
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 2
2 oct. 2014 à 14:08
oui , je voudrais faire ça si vous voulez mais, avec un formulaire ou ont choisie l'ip dans celui-ci.
0
CptRomaiin Messages postés 315 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016 58
2 oct. 2014 à 14:17
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
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 2
Modifié par Noel-barbu le 2/10/2014 à 16:05
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
loupix57 Messages postés 316 Date d'inscription mercredi 20 mars 2013 Statut Membre Dernière intervention 1 juin 2015 14
3 oct. 2014 à 20:53
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
Noel-barbu Messages postés 258 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 16 janvier 2018 2
6 oct. 2014 à 15:26
mon serveur est sur infomaniak et ça ne fonctionne pas
0