!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/share/system-config-display/   drwxr-xr-x
Free 51.23 GB of 127.8 GB (40.08%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     xconf.py (13.52 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/python2

## system-config-display - an Xorg configuration tool
## Copyright (c) 2002-2003 Red Hat, Inc.

## 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., 675 Mass Ave, Cambridge, MA 02139, USA.


import string
import gobject
import sys
import time
import os
import signal
import xf86config
import math
import getopt
import tempfile
import locale
import rhpxl.monitor
import rhpxl.videocard
import rhpl.keyboard
import rhpxl.mouse
from rhpl.translate import _, N_,textdomain
from rhpxl.xhwstate import *

TRUE = 1
FALSE = 0

##
## I18N
## 
import gettext
gettext.bindtextdomain ("system-config-display", "/usr/share/locale")
gettext.textdomain ("system-config-display")
_=gettext.gettext

logFile = "/var/log/Xorg.setup.log"
xserverpid = 0
wm_pid = 0

nameTag = _("Display")
commentTag = _("Configure resolution and colors")

def verbose(str):
    if verbose_output:
        print str

# TODO:
# probe hsync/vsync seems to give different results than db, which one to trust?
# Better way to detect when DRI is available.

def finished_dialog(config_file, backup_file, moved_old_file):
    message = _("Display settings changed\n\n")
    if not xserverpid:
        message = message + _("You need to log out and restart the X server for the changes to take effect.\n")
    if backup_file:
        message = message + _("Configuration was written to %s, original configuration saved as %s.\n") % (config_file, backup_file)
    else:
        message = message + _("Configuration was written to %s.\n") % (config_file)
    if moved_old_file:
        message = message + _("\nNote: The file /etc/X11/XF86Config-4 has been deprecated and we now always use /etc/X11/xorg.conf. The XF86Config-4 file has been saved as XF86Config-4.deprecated.")
        
    m = gtk.MessageDialog(None, gtk.DIALOG_MODAL,
                          gtk.MESSAGE_INFO, gtk.BUTTONS_OK, message)
    m.set_position(gtk.WIN_POS_CENTER)
    m.run()
    m.destroy()

def fork_off_server(xconfig):
    tmp_config = tempfile.mktemp("xorg.config")
    verbose(_("Writing temporary config file to %s") % tmp_config)
    xconfig.write(tmp_config)
    os.environ["DISPLAY"]=":17.0"
    verbose(_("Trying to start X server"))
    args = [ "/usr/bin/Xorg", "-config", tmp_config, "-ac", "-v", "-nolisten", "tcp", "-s",
             "1440", "-terminate", "-dpms", "-logfile", "/dev/null", ":17"]
    
    serverpid = os.fork()
    if serverpid == 0: #child
        try:
            err = os.open(logFile, os.O_RDWR | os.O_CREAT, 0644)
            if err < 0:
                sys.stderr.write(_("error opening %s\n" % logFile))
            else:
                os.dup2(err, 2)
                os.close(err)
        except:
            # oh well
            pass
        
        os.execv(args[0], args)
        sys.exit (1)
            
    return (serverpid, tmp_config)

def start_x_server(xconfig):
    try:
        (server, tmp_config) = fork_off_server(xconfig)
    except:
    import traceback
        server = None
    (type, value, tb) = sys.exc_info()
    list = traceback.format_exception (type, value, tb)
    text = string.joinfields (list, "")
    print text
    
    # give time for the server to fail (if it is going to fail...)
    if not server:
        verbose(_("X SERVER FAILED"));
        raise RuntimeError, "X server failed to start"

    count = 0

    if verbose_output:
        sys.stdout.write(_("Waiting for X server to start...log located in %s\n") % logFile)
        sys.stdout.flush()

    for i in range(5):
        time.sleep(1)
        if verbose_output:
            sys.stdout.write("%s..." % (i+1))
            sys.stdout.flush()
        
    while count < 60:
        if verbose_output:
            sys.stdout.write(".")
            sys.stdout.flush()
        pid = 0
        try:
            pid, status = os.waitpid (server, os.WNOHANG)
        except OSError, (errno, msg):
            print __name__, "waitpid:", msg
    if pid:
            verbose(_("X SERVER FAILED"));
        raise RuntimeError, "X server failed to start"
    try:
        os.stat ("/tmp/.X11-unix/X17")
        break
    except OSError:
        pass
    time.sleep(1)
    count = count + 1
  
    # We dont need the configuration file anymore.
    os.unlink(tmp_config)

    if count < 60:
        verbose (_("X server started successfully."))
        return server
    else:
        return 0

def start_window_manager():
    wm_pid = os.fork()

    if (not wm_pid):
        path = '/usr/bin/metacity'
        args = ['--display=:1']
        os.execvp(path, args)

    status = 0
    try:
        pid, status = os.waitpid (wm_pid, os.WNOHANG)

    except OSError, (errno, msg):
        print "in except"
        print __name__, "waitpid:", msg

    if status:
        raise RuntimeError, "Window manager failed to start"

    return wm_pid

def handle_set_commands(set_values, hardware_state):
    # Set up values that limit resolution first
    if set_values.has_key("hsync"):
        hardware_state.set_hsync(set_values["hsync"])
    if set_values.has_key("vsync"):
        hardware_state.set_vsync(set_values["vsync"])
    if set_values.has_key("videoram"):
        hardware_state.set_videocard_ram(string.atoi(set_values["videoram"]))
    if set_values.has_key("driver"):
        hardware_state.set_videocard_driver(set_values["driver"])
    if set_values.has_key("resolution"):
        hardware_state.set_resolution(set_values["resolution"])
    if set_values.has_key("depth"):
        depth = string.atoi(set_values["depth"])
        hardware_state.set_colordepth(depth)

def kill_x_server():
    if xserverpid:
        try:
            os.kill(xserverpid, 15)
            os.waitpid(xserverpid, 0)
        except:
            pass
   
def kill_window_manager():
    if wm_pid:
        try:
            os.kill(wm_pid, 15)
            os.waitpid(wm_pid, 0)
        except:
            pass

def usage():
    print \
_("""Usage: system-config-display [OPTIONS]
Options:
  -h, --help        display this help and exit
  -v, --verbose     display what the program is doing more verbosely
  -o, --output=     the filename of the config file to be output
      --reconfig    don't base configuration on existing config files
      --noui        don't show the gui, implicit when using --set options
      --forceui     force the ui to be shown, needed when using --set options
                    to change some setting, but you still want to show the ui
      --set-<key>=  change the value of a specific configuration key.

        currently supported keys are:

        resolution  the screen resolution used
        depth       the color depth in bits
                    most drivers support 8, 15, 16 and 24
        driver      the graphics card driver to use
        vsync       monitor vertical sync rates allowed (in Hz)
        hsync       monitor horizontal sync rates allowed (in kHz)
        videoram    the amount of videoram in kilobytes, 0 means probe
                    
""")

if __name__ == '__main__':
    signal.signal(signal.SIGINT, signal.SIG_DFL)

textdomain("system-config-display")

output_file = "/etc/X11/xorg.conf"
output_file_specified = FALSE

try:
    (opts, rest_args) = getopt.getopt(sys.argv[1:],
                               "vo:h",
                               ["help", "reconfig", "noui", "verbose",
                                "forceui", "output=",
                                "set-hsync=", "set-vsync=",
                                "set-videoram=", "set-driver=",
                                "set-resolution=", "set-depth="])
except (getopt.GetoptError), e:
    print e
    print
    usage()
    sys.exit(1)

reconfig = FALSE
no_ui = FALSE
force_ui = FALSE
set_values = {}
verbose_output = FALSE

for (opt, value) in opts:
    if opt == "-v" or opt == "--verbose":
        verbose_output = TRUE
    if opt == "--reconfig":
        reconfig = TRUE
    if opt == "-h" or opt == "--help":
        usage()
        sys.exit(1)
    if opt == "--noui":
        no_ui = TRUE
    if opt == "--forceui":
        force_ui = TRUE
    if opt == "-o" or opt == "--output":
        output_file = value
        output_file_specified = TRUE
    if opt[:6] == "--set-":
        no_ui = TRUE
        set_values[opt[6:]] = value

if force_ui:
    no_ui = FALSE

vc = rhpxl.videocard.VideoCardInfo()
card_list = vc.videocards
hardware_state = None

if len(card_list) <= 0:
    print "No video cards were found on this machine, exiting"
    sys.exit(0)

loop_count = 0
while loop_count < len(card_list):
    xconfig = None
    xconfigpath = None
    xserverpid = 0

    if not reconfig:
        (xconfig, xconfigpath) = xf86config.readConfigFile()
        if xconfig:
            verbose(_("Read configuration file %s") % xconfigpath)
        else:
            verbose(_("Could not find existing X configuration"))

    hardware_state = XF86HardwareState(xconfig)

    current_card =  card_list[loop_count]

    verbose(_("Trying with card: %s") % current_card.getDescription())
    if xconfig == None:
        # If not in reconfig don't override driver changes (eg vesa/s3virge)
        current_card_driver = current_card.getDriver()

        hardware_state.set_videocard_driver(current_card_driver)
        hardware_state.set_videocard_name(current_card.getDescription())
        hardware_state.set_videocard_PCIBus(current_card.getPCIBus())
        hardware_state.set_videocard_PCIDev(current_card.getPCIDev())
        hardware_state.set_videocard_PCIFn(current_card.getPCIFn())        

        keyboard = rhpl.keyboard.Keyboard()
        mouse = rhpxl.mouse.Mouse()
        xconfig = hardware_state.generate_xconfig(mouse,keyboard)

    handle_set_commands(set_values, hardware_state)

    if not no_ui:
        no_x = FALSE
        try:
            import gtk
            reload(gtk)
        except:
            no_x = TRUE

        if no_x:
            # X not already running.  Try to bring up a server.
            try:
                xserverpid = start_x_server(xconfig)
            except:
                xconfig = None
                print _("Couldn't start X server on card %d"%loop_count)
                loop_count = loop_count + 1;

                if loop_count == len(card_list):
                    if reconfig: 
                        print _("Error, failed to start X server.")
                        sys.exit(1)
                    else:
                        print _("Couldn't start X server with old config, trying with a fresh configuration")
                        reconfig = TRUE;
                        loop_count = 0
                        
                continue

        if xserverpid:
            # if we had to start an X server, make it look half-way decent.
            start_window_manager()
            import gtk
            reload(gtk)        
            import gtk.gdk
            root = gtk.gdk.get_default_root_window()
            arrow = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
            root.set_cursor (arrow)
            #Call xsri to set the background to something nice
            os.system("xsri --scale-width=100 --scale-height=100 /usr/share/system-config-display/pixmaps/lightrays.png")

        # Work around bug in pygtk where it sets LC_NUMERIC
        locale.setlocale(locale.LC_NUMERIC,"C")
        import gtk.glade
        # TODO: try to import gtk+, on fail, try to start new X
        import xConfigDialog
        dialog = xConfigDialog.XConfigDialog(hardware_state, xconfig, rhpxl.videocard.VideoCardInfo())
        dialog.update_ui()
        if not dialog.run():
            kill_x_server()
            kill_window_manager()
            sys.exit(1)
    break

if hardware_state:
    hardware_state.merge_into(xconfig)

if xconfigpath and not output_file_specified:
    output_file = xconfigpath
    if output_file == "/etc/X11/XF86Config-4":
        output_file = "/etc/X11/xorg.conf"

moved_old_file = FALSE
if os.access("/etc/X11/XF86Config-4", os.F_OK):
    verbose(_("Moving /etc/X11/XF86Config-4 to /etc/X11/XF86Config-4.deprecated"))
    os.rename("/etc/X11/XF86Config-4", "/etc/X11/XF86Config-4.deprecated")
    moved_old_file = TRUE
            
backup_file = None
if os.access(output_file, os.F_OK):
    backup_file = output_file + ".backup"
    verbose(_("Backing up %s to %s") % (output_file, backup_file))
    try:
        os.rename(output_file, backup_file)
    except:
        pass

verbose(_("Writing configuration to %s") % output_file)
xconfig.comment = "# Xorg configuration created by system-config-display\n"
xconfig.write(output_file)

try:
    verbose(_("Removing old /etc/X11/X"))
    os.unlink("/etc/X11/X")
except:
    pass

verbose(_("Creating /etc/X11/X symlink"))
try:
    os.symlink("../../usr/bin/Xorg", "/etc/X11/X")
except:
    pass


# Tell gdm to restart the server when the user logs out
# Otherwise the xserver won't re-read the config file
gdmfifofile = "/var/gdm/.gdmfifo"
if os.access(gdmfifofile, os.F_OK):
    verbose(_("Kicking gdm"))
    try:
        fd = os.open(gdmfifofile, os.O_WRONLY | os.O_APPEND | os.O_NONBLOCK)
        if fd >= 0:
            os.write(fd,"\nDIRTY_SERVERS\n");
            os.close(fd)
    except:
        pass

if not no_ui:
    finished_dialog(output_file, backup_file, moved_old_file)

kill_x_server()
kill_window_manager()

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