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

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/usr/lib/python2.4/site-packages/   drwxr-xr-x
Free 3.8 GB of 27.03 GB (14.07%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     FileBlackBox.py (5.97 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/python
import Alchemist
import gzip
import os
import stat
import sys
import time

def ReadContextFromFile(file_path):
    """
    ReadContextFromFile: read a context from a given file
    @file_path: the path to the file

    This function reads a context from a gzip'ed file
    
    returns: the context from the file
    exceptions: FileIO
    """
    try:
        xml_string = gzip.open(file_path).read()
    except IOError:
        xml_string = open(file_path).read()
        
    return Alchemist.Context(xml = xml_string)

def WriteContextToFile(file_path, context, mode = 0600, compressed = 9):
    """
    WriteContextFromFile: write a context to a given file
    @file_path: the path to the file
    @context: the context to write

    This function writes a context to a gzip'ed file
    
    returns: none
    exceptions: FileIO
    """
    xml_string = context.toXML()

    if os.path.exists(file_path):
        os.unlink(file_path)

    fd = os.open(file_path, os.O_WRONLY | os.O_CREAT| os.O_TRUNC, mode)
    file = os.fdopen(fd, "w")

    if compressed:
        file = gzip.GzipFile(file_path, "w", compresslevel = compressed, fileobj = file)

    file.write(xml_string)
    file.close()

def getBox(box_cfg):
    """
    getBox: get a BlackBox from this module
    @box_cfg: a box_cfg conformant AdmList element containing
    the following elements:
    path: type string, the path to the context file (required)
    readable: type bool, flag, if the box should be readable (optional)
    writable: type bool, flag, if the box should be writable (optional)
    
    returns: FileBlackBox object
    """
    return FileBlackBox(box_cfg)

class FileBlackBox(Alchemist.BlackBox):
    """
    The FileBlackBox class provides a class to read and write Contexts
    from and to files.
    """
    def __init__ (self, box_cfg):
        """
        __init__: Initialize a BlackBox
        @self: the class instance
        @box_cfg: a box_cfg conformant AdmList element containing
        the following elements:
           path: type string, the path to the context file (required)
           readable: type bool, flag, if the box should
                  be readable (optional)
           writable: type bool, flag, if the box should
                  be writable (optional)
           mode: an integer file mode

        This function is the initializer for FileBlackBoxes.
        """
        self.status = 0
        self.me = self.__class__.__module__
        self._errNo = 0
        self._errStr = None
        self.readable = 1
        self.writable = 1
    
        Alchemist.validateBoxCfg(box_cfg)
    
        try:
            self.path = box_cfg.getChildByName("path").getValue()
        except:
            raise ValueError, "FileBlackBox box_cfgs must contain a 'path' element"

        try:
            self.readable = box_cfg.getChildByName("readable").getValue()
        except:
            pass

        try:
            self.writable = box_cfg.getChildByName("writable").getValue()
        except:
            pass

        try:
            self.mode = box_cfg.getChildByName("mode").getValue()
        except:
            self.mode = 0600
            pass

    def isReadable (self):
        """
        isReadable: if a read were attempted now, would it succede?
        @self: this BlackBox instance
        """
        return (self.readable and os.access(self.path, os.R_OK))

    def isWritable (self):
        """
        isWritable: if a write were attempted now, would it succede?
        @self: this BlackBox instance
        """
        
        writable = 0
        
        if os.access(self.path, os.W_OK):
            writable = 1
        elif (not os.access(self.path, os.F_OK)) and os.access(os.path.dirname(self.path), os.W_OK):
            writable = 1

        return self.writable and writable

    def read (self):
        """
        read: read the contents of the FileBlackBox
        @self: this FileBlackBox instance

        This function is callable multiple times, and if it cannot
        succede on a given call, it returns None. It does not
        cache returns information in the normal sense, unless the data
        is not dynamic. And it does not keep a reference to the
        AdmContext it returns.

        It also sets the serial of the returned context to the modify
        time of the file.
        """
        # am I readable?
        if (not self.isReadable()):
            return None

        version = self.version()
        context = ReadContextFromFile(self.path)
        context.getIdentityRoot().setSerial(version)
        
        return context


    def version(self):
        """
                version: returns the version of this FileBlackBox's context
                @self: this FileBlackBox instance

        This function returns the modification time (in seconds since the epoch)
        of the file referenced by self.path
        """

        if os.path.exists(self.path):
            return os.stat(self.path)[8]

        return None

    def write (self, context):
        """
        write: write the contents of the FileBlackBox
        @self: this FileBlackBox instance

        This function is callable multiple times. It writes a
        Context out to the file the FileBlackBox is initialized with.
        It returns 0 on failure, and a non-zero, positive integer
        on success.
        """
        # am I writable?
        if (not self.isWritable()):
            return 0

        # write the context out
        try:
            WriteContextToFile(self.path, context, mode = self.mode)
        except Exception, e:
            if len(e.args) == 1:
                self._errNo = 1
                self._errStr = e.args[0]
            else:
                self._errStr = e.args[1]
                self._errNo = e.args[0]
            return 0


###########################################################################
#
# Test
#
###########################################################################
#if __name__ == '__main__':

#   boxpath = '/var/tmp/BootStrap'
    
#    bbc = Alchemist.Context(name = 'FileBlackBox', serial = 1)
#    broot = bbc.getDataRoot()
#    list = broot.addChild(Alchemist.Data.ADM_TYPE_LIST, 'box_cfg')
#    list.addChild(Alchemist.Data.ADM_TYPE_STRING, 'path').setValue(boxpath)
#    list.addChild(Alchemist.Data.ADM_TYPE_STRING, 'box_type').setValue('FileBlackBox')
#    list.addChild(Alchemist.Data.ADM_TYPE_BOOL, 'readable').setValue(true)
#    list.addChild(Alchemist.Data.ADM_TYPE_BOOL, 'writable').setValue(true)

#    bb = FileBlackBox(list)
    
#    if bb.errNo():
#        print 'Error creating FileBlackBox: ' + bb.strError()
#        sys.exit(10)
    
#    if bb.isWritable():
#        if bb.write(bbc) != true:
#            if bb.errNo():
#                print 'Error writing to BlackBox: ' + bb.strError()
#            else:
#                print bbc.toXML()
#    else: print 'Error: ' + boxpath + ' is not writable!'

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

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

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