PHP Classes
Icontem

File: adv_net.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Tomasz Malewski  >  adv_net  >  adv_net.php  
File: adv_net.php
Role: Class source
Content type: text/plain
Description: Main class
Class: adv_net
Analyze the local network with nmap
 

Contents

Class file image Download
<?

// PHP class for NMAP under linux by Tomasz Malewski , Warsaw/Poland , Built 20081123
// depend function it requires access to NMAP , arping , host . 
// If class works strange i suggest this record in /etc/sudoers
// ALL     ALL=NOPASSWD: /usr/bin/nmap
// ALL     ALL=NOPASSWD: /usr/sbin/arping
class adv_net
{
//    var $ip,$status,$extra,$debug;

    
function ping()                            // Ping function return status
    
{
    
exec("sudo nmap ".$this->ip." -sP -n ".$this->cmd_extra." | grep 'host up'",$shell_out);
    if (
$this->cmd_debug==1)  print_r ($shell_out);             // DEBUG
    
if (strlen($shell_out[0])!='0'
        { 
$this -> hosts[$this->ip][up]="1";}
        else
        { 
$this -> hosts[$this->ip][up]="0";}
      }                                
// function ping


    
function ip2mac()                        // IP to MAC converter
    
{
    
exec("sudo arping ".$this->ip." -c1 ".$this->cmd_extra." | grep '\[*\]'",$shell_out);
    if (
$this->cmd_debug==1)  print_r ($shell_out);             // DEBUG
    
preg_match ("/\ \[(.*?)\] /",$shell_out[0],$mac);
    
$this->hosts[$this->ip][mac]=$mac[1];
    }                                 
// ip2mac

    
function rdns()                            // rDNS lookup 
    
{
    
exec("host ".$this->ip." ".$this->cmd_extra." | grep Name",$shell_out);
    if (
$this->cmd_debug==1)  print_r ($shell_out);             // DEBUG
    
preg_match ("/Name: (.*)/",$shell_out[0],$rdns);
    
$this->hosts[$this->ip][name]=$rdns[1];
    }                                
// function rDNS

    
function dns()                            // DNS lookup 
    
{
    
exec("host ".$this->ip_hostname." ".$this->cmd_extra." | grep ".$this->ip_hostname,$shell_out);
    if (
$this->cmd_debug==1)  print_r ($shell_out);         // DEBUG
    
preg_match ("/".$this->ip_hostname."(\s*)([^\s.]*)(\s*)(.*)/",$shell_out[0],$dns);
    if (
$this->cmd_debug==1)  print_r ($dns);             // DEBUG
    
$this->hosts[$dns[4]][name]=$this->ip_hostname;
    }                                
// function DNS

    
function lan_discovery($subnet)                    // Require subnet ex 24 for C subnet, or 32 for one IP.
    
{
    
exec("nmap -sL ".$this->ip."/$subnet ".$this->cmd_extra,$shell_out);
    if (
$this->cmd_debug==1print_r ($shell_out);             // DEBUG
    
$counter='0';
    foreach (
$shell_out as $line)
                {
        
$hostup=preg_match ('/Host (.*?) \((.*?)\)/',$line,$line2);
        if (
$this->cmd_debug==1print_r $line2);         // DEBUG
        
if ($hostup==1)
            {
//            $this->host_up[$counter][0]=trim($line2[2]);    // old concept
//            $this->host_up[$counter][1]=trim($line2[1]);    // old conecpt
            
$this->hosts[trim($line2[2])][name]=trim($line2[1]);
            
$counter++;
            }                    
// if hostup==1
        
}                        // foreach shell_out
    
}                            // lan_discovery

function port_discovery()
    {
    
exec("nmap ".$this->ip." -sV ".$this->cmd_extra." | grep [0-9]/",$shell_out);
    if (
$this->cmd_debug==1print_r ($shell_out);             // DEBUG
    
foreach ($shell_out as $line)
                {
        
$port=preg_match ('/([0-9]*)\/([a-z]*)(\s*)([a-z]*)(\s*)(.*) /',$line,$line2);
        if (
$this->cmd_debug==1print_r $line2);         // DEBUG
        
if ($port==1)
            {
            
$this->hosts[$this->ip][ports][trim($line2[1])]=trim($line2[6]);
//            $port_list[$counter][1]=trim($line2[1]);    // old concept
//            $port_list[$counter][2]=trim($line2[2]);
//            $port_list[$counter][3]=trim($line2[3]);
//            $port_list[$counter][4]=trim($line2[4]);
            
$counter++;
            }                    
// if port==1
        
}                        // foreach shell_out
    
}                            // scan_ports


}                                    // class adv_net




 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products