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

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/usr/lib/gedit-2/plugins/snippets/   drwxr-xr-x
Free 53.79 GB of 127.8 GB (42.09%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     SnippetComplete.py (7.55 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#    Gedit snippets plugin
#    Copyright (C) 2005-2006  Jesse van den Kieboom <jesse@icecrew.nl>
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

import gtk
import gobject
from Snippet import Snippet
from gtk import gdk
import gedit
from functions import *

class CompleteModel(gtk.GenericTreeModel):
    column_types = (str, object)
    column_names = ['Description', 'Node']

    def __init__(self, nodes, prefix = None, description_only = False):
        gtk.GenericTreeModel.__init__(self)
        
        self.nodes = self.create_list(nodes, prefix)
        
        # Sort the nodes
        if not prefix:
            if description_only:
                self.display_snippet = self.display_snippet_description
            else:
                self.display_snippet = self.display_snippet_default

            self.do_filter = self.filter_snippet_default
            
            self.nodes.sort(lambda a, b: cmp(a['description'].lower(), \
                    b['description'].lower()))
        else:
            self.display_snippet = self.display_snippet_prefix
            self.do_filter = self.filter_snippet_prefix
            self.nodes.sort(self.sort_prefix)
            
        self.visible_nodes = list(self.nodes)        

    def display_snippet_description(self, snippet):
        return markup_escape(snippet['description'])
    
    def display_snippet_default(self, snippet):
        return snippet.display()
    
    def display_snippet_prefix(self, snippet):
        return '<b>' + markup_escape(snippet['tag']) + '</b>: ' + \
                markup_escape(snippet['description'])

    def sort_prefix(self, a, b):
        return cmp(a['tag'] + ': ' + a['description'], b['tag'] + ': ' + \
                b['description'])

    def create_list(self, nodes, prefix):
        if prefix:
            prelen = len(prefix)
            
        result = []

        for node in nodes:
            s = Snippet(node)
            
            if not prefix or \
                    prefix.lower() == s['tag'][0:prelen].lower():
                result.append(s)
                
        return result

    def filter_snippet_process(self, new):        
        # Update all nodes
        old = self.visible_nodes
        oldlen = len(old)
        
        self.visible_nodes = new
        newlen = len(new)

        for index in range(0, min(newlen, oldlen)):
            path = (index,)
            self.row_changed(path, self.get_iter(path))
        
        if oldlen > newlen:
            for index in range(oldlen - 1, newlen - 1, -1):
                self.row_deleted((index,))

        elif newlen > oldlen:
            for index in range(oldlen, newlen):
                path = (index,)
                self.row_inserted(path, self.get_iter(path))

    def filter_snippet_prefix(self, s):
        new = []
        s = s.lower()
        
        for node in self.nodes:
            if s in node['tag'].lower():
                new.append(node)
        
        self.filter_snippet_process(new)
    
    def filter_snippet_default(self, s):
        new = []
        s = s.lower()
        
        for node in self.nodes:
            if s in node['description'].lower():
                new.append(node)
        
        self.filter_snippet_process(new)

    def get_snippet(self, path):
        try:
            return self.visible_nodes[path[0]]
        except IndexError:
            return None

    def on_get_flags(self):
        return gtk.TREE_MODEL_LIST_ONLY
    
    def on_get_n_columns(self):
        len(self.column_types)

    def on_get_column_type(self, index):
        return self.column_types[index]

    def on_get_iter(self, path):
        try:
            return self.visible_nodes[path[0]]
        except IndexError:
            return None

    def on_get_path(self, rowref):
        return self.visible_nodes.index(rowref)
        
    def on_get_value(self, rowref, column):
        if column == 0:
            return self.display_snippet(rowref)
        elif column == 1:
            return rowref
        
    def on_iter_next(self, rowref):
        try:
            next = self.visible_nodes.index(rowref) + 1
        except ValueError:
            next = 0
        
        try:
            return self.visible_nodes[next]
        except IndexError:
            return None
        
    def on_iter_children(self, parent):
        if parent:
            return None
        else:
            return self.visible_nodes[0]

    def on_iter_has_child(self, rowref):
        return False

    def on_iter_n_children(self, rowref):
        if rowref:
            return 0
        return len(self.visible_nodes)

    def on_iter_nth_child(self, parent, n):
        if parent:
            return None

        try:
            return self.visible_nodes[n]
        except IndexError:
            return None

    def on_iter_parent(self, child):
        return None

class SnippetComplete(gtk.Window):
    def __init__(self, nodes, prefix = None, description_only = False):
        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
        self.set_keep_above(True)
        self.set_decorated(False)
        self.set_skip_taskbar_hint(True)
        self.set_skip_pager_hint(True)
        
        window = gedit.app_get_default().get_active_window()
        window.get_group().add_window(self)
        
        self.set_transient_for(window)
        self.set_size_request(200, 300)
        self.entry_changed_id = 0
        self.model = CompleteModel(nodes, prefix, description_only)
        self.build()

        if prefix:
            self.entry.set_text(prefix)

        self.connect('delete-event', lambda x, y: x.destroy())
        self.connect('focus-out-event', self.on_focus_out)

    def run(self):
        if not self.model.nodes:
            self.destroy()
            return False
        
        self.show_all()
        self.entry.grab_focus()
        self.entry.set_position(-1)
        return True

    def build_tree(self):
        self.tree_view = gtk.TreeView(self.model)
        self.tree_view.set_headers_visible(False)

        column = gtk.TreeViewColumn(None)
        renderer = gtk.CellRendererText()
        column.pack_start(renderer, False)
        column.set_attributes(renderer, markup=0)
        
        self.tree_view.append_column(column)
    
        self.tree_view.connect('row-activated', self.on_tree_view_row_activated)

    def build(self):
        vbox = gtk.VBox(False, 3)
        frame = gtk.Frame()

        frame.set_shadow_type(gtk.SHADOW_ETCHED_IN)

        self.entry = gtk.Entry()
        vbox.pack_start(self.entry, False, False, 0)
        
        self.build_tree()
        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.add(self.tree_view)
        sw.set_shadow_type(gtk.SHADOW_OUT)
        
        vbox.pack_start(sw, True, True, 0)
        
        frame.add(vbox)
        self.add(frame)
        
        self.entry.connect('changed', self.on_entry_changed)
        self.entry.connect('activate', self.on_entry_activate)
        self.entry.connect('key-press-event', self.on_entry_key_press)
    
    def snippet_activated(self, snippet):
        self.emit('snippet-activated', snippet)
        self.destroy()

    def idle_filter(self, text):
        self.entry_changed_id = 0
        self.model.do_filter(text)
        
        piter = self.model.get_iter_first()
        
        if piter:
            self.tree_view.get_selection().select_iter(piter)

        return False
    
    def on_focus_out(self, wnd, event):
        self.destroy()
        return False
        
    def on_entry_changed(self, entry):
        if self.entry_changed_id:
            gobject.source_remove(self.entry_changed_id)
        
        self.entry_changed_id = gobject.idle_add(self.idle_filter, 
                entry.get_text())
    
    def on_entry_key_press(self, entry, event):
        if event.keyval == gdk.keyval_from_name('Escape'):
            self.destroy()
            return True
        
        return False
    
    def on_tree_view_row_activated(self, view, path, column):
        snippet = self.model.get_snippet(path)

        self.snippet_activated(snippet)

    def on_entry_activate(self, entry):
        (model, piter) = self.tree_view.get_selection().get_selected()
        
        if piter:
            snippet = self.model.get_snippet(self.model.get_path(piter))
            self.snippet_activated(snippet)

gobject.signal_new('snippet-activated', SnippetComplete, \
        gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, \
        (gobject.TYPE_PYOBJECT,))

:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

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

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

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0148 ]--