!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:\dmz\php\pear\phing\tasks\ext\zendguard\   drwxrwxrwx
Free 4.11 GB of 39.52 GB (10.4%)
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:     ZendGuardEncodeTask.php (14.51 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 *  $Id: ZendGuardEncodeTask.php 1084 2011-05-06 09:55:25Z mrook $
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information please see
 * <http://phing.info>.
 */

require_once 'phing/tasks/system/MatchingTask.php';
include_once 
'phing/util/SourceFileScanner.php';
include_once 
'phing/mappers/MergeMapper.php';
include_once 
'phing/util/StringHelper.php';

/**
 * Encodes files using Zeng Guard Encoder
 *
 * @author    Petr Rybak <petr@rynawe.net>
 * @version   $Id: ZendGuardEncodeTask.php 1084 2011-05-06 09:55:25Z mrook $
 * @package   phing.tasks.ext.zendguard
 * @since     2.4.3
 */
class ZendGuardEncodeTask extends MatchingTask
{
    protected 
$filesets = array();
    protected 
$encodeCommand;


    
/**
     * TASK PROPERTIES
     *
     * See http://static.zend.com/topics/Zend-Guard-User-Guidev5x.pdf
     * for more information on how to use ZendGuard
     *
     */
    /**
     * Permanently deletes (see warning below) the original source files specified in the
     * SourceInputPath and saves the encoded files in its place.
     * This option has no option parameter.
     * When this option is use, do not use the output_file parameter.
     *
     * Warning:
     * To avoid permanent loss of non-encoded scripts, make a backup. Deleted files
     * cannot be restored or recovered and will be permanently deleted with this option.
     * If you are unsure about deleting the source files, use the ––rename-source option
     * instead
     *
     * @var bool
     */
    
protected $deleteSource true;
    
/**
     * Move the original source file to <input_file>.<renameSourceExt> and save the encoded file in its
     * place.
     *
     * If specified deleteSource will be automatically disabled.
     *
     * @var string
     */
    
protected $renameSourceExt null;
    
/**
     * Turns short PHP tag (“<?” ) recognition either on or off.
     * On or off must be specified as an argument when using this option.
     * The default, when option is not used in the command-line, is - on
     *
     * @var bool
     */
    
protected $shortTags true;
    
/**
     * Turn ASP tag (“<%” ) recognition on/off. (default: off). On or off must be specified
     * as an argument when using this option.
     * The default, when this option is not used in the command-line, is - off
     *
     * @var bool
     */
    
protected $aspTags false;
    
/**
     *
     * Disables the PHP-compatible header that is added to the top of every encoded file
     * by default. Encoded files generated with this option will not display a meaningful
     * error when loaded by PHP that doesn't have the Zend Optimizer properly installed.
     * Using this option saves approximately 1.5KB for every encoded file. Do not use it
     * unless disk space constraints are critica
     *
     * @var bool
     */
    
protected $noHeader false;
    
/**
     * If cryptography should be used to encode the source code
     *
     * @var bool
     */
    
protected $useCrypto false;
    
/**
     * Force cooperation with other encoded files only. This option generates files that
     * work exclusively with associated encoded files. Associated encoded files are
     * those generated by the same company. Files that do not share the same encoded
     * company association cannot call these files
     *
     * @var bool
     */
    
protected $encodedOnly false;
    
/**
     * Allow encoding previously encoded files. (NOT recommended!)
     *
     * @var bool
     */
    
protected $forceEncode false;
    
/**
     * Make an encoded file to expire on the given date. Date is in yyyy-mm-dd format.
     *
     * @var string
     */
    
protected $expires null;
    
/**
     * Level of obfuscation. Defaults to 0 (no obfuscation).
     *
     * @var int
     */
    
protected $obfuscationLevel 0;
    
/**
     * Optimization mask. (default value: [+++++++])
     * opt_mask is an integer representing a bit-mask.
     * The default value enables all of the optimization passes.
     * Each optimization pass of the Zend Optimizer can be turned on or off based on
     * the mask entered
     *
     * @var int
     */
    
protected $optMask null;
    
/**
     * Path to the zend encoder binary
     *
     * @var string
     */
    
protected $zendEncoderPath null;
    
/**
     * Path to private key for licensing
     *
     * @var string
     */
    
protected $privateKeyPath null;
    
/**
     * Enable licensing.
     * If enabled, productName must be defined.
     *
     * @var bool
     */
    
protected $licenseProduct false;
    
/**
     * If true the ownership, permissions and timestamps
     * of the encoded files won't be preserved.
     *
     * @var bool
     */
    
protected $ignoreFileModes false;
    
/**
     * Enable signing
     * If enabled, productName must be defined.
     *
     * @var bool
     */
    
protected $signProduct false;
    
/**
     * Product name. Must be defined if licenseProduct
     * or signProduct is set to 1
     *
     * @var string
     */
    
protected $productName null;
    
/**
     * Embed the information in the specified file into the header of the encoded file
     * (overrides noHeader)
     *
     * @var string
     */
    
protected $prologFile null;

    
/**
     * TASK PROPERTIES SETTERS
     */
    
public function setZendEncoderPath($value)
    {
        
$this->zendEncoderPath $value;
    }

    public function 
setPrivateKeyPath($value)
    {
        
$this->privateKeyPath $value;
    }

    public function 
setShortTags($value)
    {
        
$this->shortTags = (bool) $value;
    }

    public function 
setAspTags($value)
    {
        
$this->aspTags = (bool) $value;
    }

    public function 
setDeleteSource($value)
    {
        
$this->shortTags = (bool) $value;
    }

    public function 
setUseCrypto($value)
    {
        
$this->useCrypto = (bool) $value;
    }

    public function 
setObfuscationLevel($value)
    {
        
$this->obfuscationLevel = (int) $value;
    }

    public function 
setLicenseProduct($value)
    {
        
$this->licenseProduct = (bool) $value;
    }

    public function 
setPrologFile($value)
    {
        
$this->prologFile $value;
    }

    public function 
setSignProduct($value)
    {
        
$this->signProduct = (bool) $value;
    }

    public function 
setForceEncode($value)
    {
        
$this->forceEncode = (bool) $value;
    }

    public function 
setEncodedOnly($value)
    {
        
$this->encodedOnly = (bool) $value;
    }

    public function 
setIgnoreFileModes($value)
    {
        
$this->ignoreFileModes = (bool) $value;
    }

    public function 
setExpires($value)
    {
        
$this->expires $value;
    }

    public function 
setProductName($value)
    {
        
$this->productName $value;
    }

    public function 
setOptMask($value)
    {
        
$this->optMask = (int) $value;
    }

    public function 
setRenameSourceExt($value)
    {
        
$this->renameSourceExt $value;
    }

    public function 
setNoHeader($value)
    {
        
$this->noHeader = (bool) $value;
    }

    
/**
     * Add a new fileset.
     *
     * @return FileSet
     */
    
public function createFileSet()
    {
        
$this->fileset = new ZendGuardFileSet();
        
$this->filesets[] = $this->fileset;
        return 
$this->fileset;
    }

    
/**
     * Verifies that the configuration is correct
     *
     * @throws BuildException
     */
    
protected function verifyConfiguration()
    {
        
// Check that the zend encoder path is specified
        
if (empty($this->zendEncoderPath)) {
            throw new 
BuildException("Zend Encoder path must be specified");
        }

        
// verify that the zend encoder binary exists
        
if (!file_exists($this->zendEncoderPath)) {
            throw new 
BuildException("Zend Encoder not found on path " $this->zendEncoderPath);
        }

        
// if either sign or license is required the private key path needs to be defined
        // and the file has to exist and product name has to be specified
        
if ($this->signProduct || $this->licenseProduct) {
            if (empty(
$this->privateKeyPath)) {
                throw new 
BuildException("Licensing or signing requested but privateKeyPath not provided.");
            }
            if (!
is_readable($this->privateKeyPath)) {
                throw new 
BuildException("Licensing or signing requested but private key path doesn't exist or is unreadable.");
            }
            if (empty(
$this->productName)) {
                throw new 
BuildException("Licensing or signing requested but product name not provided.");
            }
        }

        
// verify prolog file exists
        
if (!empty($this->prologFile)) {
            if (!
file_exists($this->prologFile)) {
                throw new 
BuildException("The prolog file doesn't exist: " $this->prologFile);
            }
        }
    }

    
/**
     * Do the work
     *
     * @throws BuildException
     */
    
public function main()
    {
        
$this->verifyConfiguration();
        
$this->prepareEncoderCommand();

        try {
            if (empty(
$this->filesets)) {
                throw new 
BuildException("You must supply nested fileset.",
                    
$this->getLocation());
            }

            
$encodedFilesCounter 0;

            foreach (
$this->filesets as $fs) {
                
/* @var $fs FileSet */

                /* @var $fsBasedir PhingFile */
                
$fsBasedir $fs->getDir($this->project)->getAbsolutePath();

                
$files $fs->getFiles($this->projectfalse);

                foreach (
$files as $file) {
                    
$f = new PhingFile($fsBasedir$file);

                    if (
$f->isFile()) {
                        
$path $f->getAbsolutePath();

                        
$this->log("Encoding " $pathProject::MSG_VERBOSE);
                        
$this->encodeFile($path);

                        
$encodedFilesCounter++;
                    }
                }
            }

            
$this->log("Encoded files: " $encodedFilesCounter);
        } catch (
IOException $ioe) {
            
$msg "Problem encoding files: " $ioe->getMessage();
            throw new 
BuildException($msg$ioe$this->getLocation());
        }
    }

    
/**
     * Prepares the main part of the command that will be
     * used to encode the given file(s).
     */
    
protected function prepareEncoderCommand()
    {
        
$command $this->zendEncoderPath " \\\n";

        if (!empty(
$this->renameSourceExt)) {
            
$command .= " --rename-source " $this->renameSourceExt " \\\n";
        } elseif (
$this->deleteSource) {
            
// delete source
            
$command .= " --delete-source \\\n";
        }

        
// short tags
        
$command .= " --short-tags " . (($this->shortTags) ? 'on' 'off') . " \\\n";

        
// asp tags
        
$command .= " --asp-tags " . (($this->aspTags) ? 'on' 'off') . " \\\n";

        
// use crypto
        
if ($this->useCrypto) {
            
$command .= " --use-crypto  \\\n";
        }

        
// ignore file modes
        
if ($this->ignoreFileModes) {
            
$command .= " --ignore-file-modes \\\n";
        }

        
// force encode
        
if ($this->forceEncode) {
            
$command .= " --force-encode \\\n";
        }

        
// expires
        
if (!empty($this->expires)) {
            
$command .= " --expires " $this->expires " \\\n";
        }

        
// insert prolog file name or no-header
        
if (!empty($this->prologFile)) {
            
$command .= " --prolog-filename " $this->prologFile " \\\n";
        } elseif (
$this->noHeader) {
            
// no-header
            
$command .= " --no-header \\\n";
        }

        
// obfuscation level
        
if ($this->obfuscationLevel 0) {
            
$command .= " --obfuscation-level " $this->obfuscationLevel " \\\n";
        }

        
// encoded only
        
if ($this->encodedOnly) {
            
$command .= " --encoded-only  \\\n";
        }

        
// opt mask
        
if (null !== $this->optMask) {
            
$command .= " --optimizations " $this->optMask " \\\n";
        }

        
// Signing or licensing
        
if ($this->signProduct) {
            
$command .= " --sign-product " $this->productName " --private-key " $this->privateKeyPath " \\\n";
        } elseif (
$this->licenseProduct) {
            
$command .= " --license-product " $this->productName " --private-key " $this->privateKeyPath " \\\n";
        }

        
// add a blank space
        
$command .= " ";

        
$this->encodeCommand $command;

    }

    
/**
     * Encodes a file using currently defined Zend Guard settings
     *
     * @param string $filePath Path to the encoded file
     */
    
protected function encodeFile($filePath)
    {
        
$command $this->encodeCommand $filePath ' 2>&1';

        
$this->log('Running: ' $commandProject::MSG_VERBOSE);

        
$tmp exec($command$output$return_var);
        if (
$return_var !== 0) {
            throw new 
BuildException("Encoding failed. \n Msg: " $tmp " \n Encode command: " $command);
        }

        return 
true;
    }

}

/**
 * This is a FileSet with the to specify permissions.
 *
 * Permissions are currently not implemented by PEAR Archive_Tar,
 * but hopefully they will be in the future.
 *
 * @package phing.tasks.ext.zendguard
 */
class ZendGuardFileSet extends FileSet
{
    private 
$files null;

    
/**
     *  Get a list of files and directories specified in the fileset.
     *  @return array a list of file and directory names, relative to
     *    the baseDir for the project.
     */
    
public function getFiles(Project $p$includeEmpty true)
    {

        if (
$this->files === null) {

            
$ds $this->getDirectoryScanner($p);
            
$this->files $ds->getIncludedFiles();
        } 
// if ($this->files===null)

        
return $this->files;
    }

}

:: 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.0468 ]--