aboutsummaryrefslogtreecommitdiffstats
path: root/config/nmap/nmap.inc
diff options
context:
space:
mode:
Diffstat (limited to 'config/nmap/nmap.inc')
-rw-r--r--config/nmap/nmap.inc58
1 files changed, 56 insertions, 2 deletions
diff --git a/config/nmap/nmap.inc b/config/nmap/nmap.inc
index e9093077..552ad01c 100644
--- a/config/nmap/nmap.inc
+++ b/config/nmap/nmap.inc
@@ -28,8 +28,31 @@
POSSIBILITY OF SUCH DAMAGE.
*/
+function nmap_custom_php_validation_command($post, $input_errors) {
+ global $_POST, $savemsg, $config;
+ if (empty($_POST['hostname'])) {
+ $input_errors[] = gettext("You must enter an IP address to scan.");
+ } elseif (!(is_ipaddr($_POST['hostname']) ||
+ is_subnet($_POST['hostname']) ||
+ is_hostname($_POST['hostname']))) {
+ $input_errors[] = gettext("You must enter a valid IP address to scan.");
+ }
+
+ if(!empty($_POST['interface'])) {
+ $interfaces = get_configured_interface_with_descr();
+ if (!array_key_exists($_POST['interface'], $interfaces)) {
+ $input_errors[] = gettext("Invalid interface.");
+ }
+ }
+}
+
function nmap_custom_add_php_command() {
$nmap_options = "";
+
+ if (function_exists("is_ipaddrv6") && function_exists("is_subnetv6"))
+ if (is_ipaddrv6($_POST['hostname']) || is_subnetv6($_POST['hostname']))
+ $nmap_options .= " -6";
+
switch($_POST['scanmethod']) {
case 'syn':
$nmap_options .= " -sS";
@@ -43,13 +66,44 @@ function nmap_custom_add_php_command() {
case 'udp':
$nmap_options .= " -sU";
break;
+ case 'arp':
+ $nmap_options .= " -sP -PR";
+ break;
}
-
+
if($_POST['noping']) $nmap_options .= " -P0";
if($_POST['servicever']) $nmap_options .= " -sV";
if($_POST['osdetect']) $nmap_options .= " -O";
- $nmap_options .= " " . $_POST['hostname'];
+ if(!empty($_POST['interface'])) $nmap_options .= " -e " . get_real_interface($_POST['interface']);
+
+ $nmap_options .= " " . escapeshellarg($_POST['hostname']);
+ echo "Running: /usr/local/bin/nmap {$nmap_options}</br>";
system("/usr/local/bin/nmap" . $nmap_options);
}
+function nmap_get_interfaces() {
+ global $config;
+ $interfaces = get_configured_interface_with_descr();
+ $nmap_ifs = array(array("name" => "Any", "value" => ""));
+ foreach ($interfaces as $iface => $ifacename) {
+ $tmp["name"] = $ifacename;
+ $tmp["value"] = $iface;
+ $nmap_ifs[] = $tmp;
+ }
+
+ foreach (array('server', 'client') as $mode) {
+ if (is_array($config['openvpn']["openvpn-{$mode}"])) {
+ foreach ($config['openvpn']["openvpn-{$mode}"] as $id => $setting) {
+ if (!isset($setting['disable'])) {
+ $tmp["name"] = gettext("OpenVPN") . " ".$mode.": ".htmlspecialchars($setting['description']);
+ $tmp["value"] = 'ovpn' . substr($mode, 0, 1) . $setting['vpnid'];
+ $nmap_ifs[] = $tmp;
+ }
+ }
+ }
+ }
+
+ return $nmap_ifs;
+}
+
?>