!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\Intranet\C\xampp\php\PEAR\Net\   drwxrwxrwx
Free 4.09 GB of 39.52 GB (10.36%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     Dig.php (9.31 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
//
// +----------------------------------------------------------------------+
// | PHP Version 4                                                        |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group                                |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license,      |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Author: Colin Viebrock <colin@easyDNS.com>                           |
// +----------------------------------------------------------------------+
//
// $Id: Dig.php,v 1.1 2002/04/25 14:57:23 cmv Exp $
//
// A nice friendly OO interface to dig
//

require_once('PEAR.php');

class 
Net_Dig extends PEAR
{
    
// {{{ Public Properties
    
    /**
     * The address to dig
     *
     * @var string $address
     * @access public
     */
    
var $address;
    
    
/**
     * The server to use for digging
     *
     * @var string $server
     * @access public
     */
    
var $server;
    
    
/**
     * The type of DNS records to dig for
     *
     * @var string $query_type
     * @access public
     */
    
var $query_type;

    
/**
     * The last system command executed (for debugging)
     *
     * @var string $cmd
     * @access public
     */
    
var $cmd;

    
/**
     * The raw output of the system command (for debugging)
     *
     * @var string $raw_data
     * @access public
     */
    
var $raw_data;

    
/**
     * The location of the system dig program
     *
     * @var string $dig_prg
     * @access public
     */
    
var $dig_prog;

    
/**
     * The parsed result of the last dig
     *
     * @var string $result
     * @access public
     */
    
var $result;
    
    
// }}}


    // {{{ Net_Dig()
    
    /**
     * The Net_Dig constructor
         * Called when a new Net_Dig object is initialized
     *
     * @param string     [$address]  The address to dig (can be set 
     *                               using the $address property as well)
     *
     * @param string     [$server]   The server to dig at (can be set 
     *                               using the $server property as well)
     *
     * @return object Net_Dig   $obj   A new Net_Dig object
     *
     * @access public
     * @author Colin Viebrock <colin@easyDNS.com>
     * @since  PHP 4.0.5
     */
    
function Net_Dig($address false$server false )
    {

        
$this->address $address;
        
$this->server $server;
        
$this->query_type false;

        
$this->cmd '';
        
$this->raw_data '';

        
$this->result false;

        
$this->dig_prog trim(`which dig`);
        if (!
$this->dig_prog) {
            
$this = new PEAR_Error("Couldn't find system dig program");
        }

    }

    
// }}}



    // {{{ dig()
    
    /**
     * Does a dig of the given address (or $this->address)
     *
     * @param string           [$address] The address to dig (can be set 
     *                                using the $address property as well)
     *
     * @return object Net_Dig_result    $obj   A new Net_Dig_result object
     *
     * @access public
     * @author Colin Viebrock <colin@easyDNS.com>
     * @since  PHP 4.0.5
     */
    
function dig($address=false)
    {

        if (
$address) {
            
$this->address $address;
        }

        if (!
$this->address) {
            return new 
PEAR_Error("No address specified");
        }

        if (!
$this->_validate_type()) {
            return new 
PEAR_Error($this->query_type." is an invalid query type");
        }

        
$cmd escapeshellcmd(
            
sprintf("%s %s %s %s",
                
$this->dig_prog,
                (
$this->server        '@'.$this->server ''),
                
$this->address,
                (
$this->query_type    $this->query_type '' )
            )
        );

        
$this->cmd $cmd;


        
$this->raw_data = `$cmd`;
        
$this->raw_data trim(    $this->raw_data );

        return 
$this->_parse_data();

    }
    
    
// }}}


    // {{{ _validate_type()
    
    /**
     * Validates the value of $this->query_type
     *
     * @return boolean    $return   True if $this->query_type is a 
     *                                valid dig query, otherwise false
     *
     * @access private
     * @author Colin Viebrock <colin@easyDNS.com>
     * @since  PHP 4.0.5
     */
    
function _validate_type()
    {
        
$return true;
        if (
$this->query_type) {
            
$this->query_type strtolower($this->query_type);
            switch (
$this->query_type) {
                case 
'a':
                case 
'any':
                case 
'mx':
                case 
'ns':
                case 
'soa':
                case 
'hinfo':
                case 
'axfr':
                case 
'txt':
                break;
                default:
                
$return false;
            }
        }
        return 
$return;
    }
    
    
// }}}



    // {{{ _parse_data()
    
    /**
     * Parses the raw data in $this->raw_data
     *
     * @return obj Net_Dig_result  $return   A Net_Dig_result object
     *
     * @access private
     * @author Colin Viebrock <colin@easyDNS.com>
     * @since  PHP 4.0.5
     */
    
function _parse_data()
    {

        if (!
$this->raw_data) {
            return new 
PEAR_Error("No raw data to parse");
        }

        
$regex '/' .
            
'^;(.*?)' .
            
';; QUESTION SECTION\:(.*?)' .
            
'(;; ANSWER SECTION\:(.*?))?' .
            
'(;; AUTHORITY SECTION\:(.*?))?' .
            
'(;; ADDITIONAL SECTION\:(.*?))?' .
            
'(;;.*)' .
            
'/ims';

        if (
preg_match($regex$this->raw_data$matches)) {

            
$result = new Net_Dig_result;

            
/* Start parsing the data */


            /* the header ... */


            
$temp explode("\n"trim($matches[1]));
            if (
preg_match('/DiG (.*?) /i'$temp[0], $m)) {
                
$result->dig_version         trim($m[1]);
            }
            if (
preg_match('/status: (.*?), id: (.*?)$/i'$temp[3], $m)) {
                
$result->status            trim($m[1]);
                
$result->id            trim($m[2]);
            }

            if (
preg_match('/flags: (.*?); query: (.*?), answer: (.*?), authority: (.*?), additional: (.*?)$/i'$temp[4], $m)) {
                
$result->flags            trim($m[1]);
                
$result->query_count        = (int)trim($m[2]);
                
$result->answer_count        = (int)trim($m[3]);
                
$result->authority_count    = (int)trim($m[4]);
                
$result->additional_count    = (int)trim($m[5]);
            }


            
/* query section */

            
$line trim(preg_replace('/^(;*)/'''trim($matches[2])));
            list(
$host$class$type) = preg_split('/[\s]+/'$line3);
            
$result->query[] = new Net_Dig_resource($hostfalse$class$typefalse);


            
/* answer section */

            
$temp trim($matches[4]);
            if (
$temp) {
                
$temp explode("\n"$temp);
                if (
count($temp)) {
                    foreach(
$temp as $line) {
                        
$result->answer[] = $this->_parse_resource($line);
                    }
                }
            }


            
/* authority section */

            
$temp trim($matches[6]);
            if (
$temp) {
                
$temp explode("\n"$temp);
                if (
count($temp)) {
                    foreach(
$temp as $line) {
                        
$result->authority[] = $this->_parse_resource($line);
                    }
                }
            }


            
/* additional section */

            
$temp trim($matches[8]);
            if (
$temp) {
                
$temp explode("\n"$temp);
                if (
count($temp)) {
                    foreach(
$temp as $line) {
                        
$result->additional[] = $this->_parse_resource($line);
                    }
                }
            }

            
/* footer */

            
$temp explode("\n"trim($matches[9]));
            if (
preg_match('/query time: (.*?)$/i'$temp[0], $m)) {
                
$result->query_time    trim($m[1]);
            }
            if (
preg_match('/server: (.*?)#(.*?)\(/i'$temp[1], $m)) {
                
$result->dig_server    trim($m[1]);
                
$result->dig_port    trim($m[2]);
            }

            
/* done */

            
$result->consistency_check = (
                (
count($result->query) == $result->query_count) &&
                (
count($result->answer) == $result->answer_count) &&
                (
count($result->authority) == $result->authority_count) &&
                (
count($result->additional) == $result->additional_count)
            );

            return 
$result;

        }

        return new 
PEAR_Error("Can't parse raw data");
    }
    
    
// }}}


    // {{{ _parse_resource()
    
    /**
     * Parses a resource record line
     *
     * @param string           $line    The line to parse
     *
     * @return obj Net_Dig_resource  $return   A Net_Dig_resource object
     *
     * @access private
     * @author Colin Viebrock <colin@easyDNS.com>
     * @since  PHP 4.0.5
     */
    
function _parse_resource($line)
    {

        
/* trim and remove leading ;, if present */        

        
$line trim(preg_replace('/^(;*)/'''trim($line)));

        if (
$line) {
            list(
$host$ttl$class$type$data) = preg_split('/[\s]+/'$line5);
            return new 
Net_Dig_resource($host$ttl$class$type$data);
        }

        return 
false;

    }

    
// }}}

}



class 
Net_Dig_result {

    
// {{{ Public Properties

    
var $status;
    var 
$id;
    var 
$flags;
    var 
$query_count;
    var 
$answer_count;
    var 
$authority_count;
    var 
$additional_count;

    var 
$dig_version;
    var 
$dig_server;
    var 
$dig_port;

    var 
$query;
    var 
$answer;
    var 
$authority;
    var 
$additional;

    var 
$consistency_check;

    function 
Net_Dig_result() {
        
$this->status false;
        
$this->id false;
        
$this->flags false;
        
$this->query_count false;
        
$this->answer_count false;
        
$this->authority_count false;
        
$this->additional_count false;

        
$this->dig_version false;
        
$this->dig_server false;
        
$this->dig_port false;

        
$this->query = array();
        
$this->answer = array();
        
$this->authority = array();
        
$this->additional = array();

        
$this->consistency_check false;

    }

}

class 
Net_Dig_resource {

    var 
$host;
    var 
$ttl;
    var 
$class;
    var 
$type;
    var 
$data;

    function 
Net_Dig_resource($host=false$ttl=false$class=false$type=false$data=false) {
        
$this->host    $host;
        
$this->ttl    $ttl;
        
$this->class    $class;
        
$this->type    $type;
        
$this->data    $data;
    }

}

?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0156 ]--