!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-network/netconfpkg/gui/   drwxr-xr-x
Free 50.89 GB of 127.8 GB (39.82%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     DialupDruid.py (16.29 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
## Copyright (C) 2001-2005 Red Hat, Inc.
## Copyright (C) 2001, 2002 Than Ngo <than@redhat.com>
## Copyright (C) 2001-2005 Harald Hoyer <harald@redhat.com>
## Copyright (C) 2001, 2002 Philipp Knirsch <pknirsch@redhat.com>

## 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 gtk
from gtk import CTREE_LINES_DOTTED
from netconfpkg.NC_functions import *
import gtk.glade
import string
import os
import providerdb
from netconfpkg.gui import GUI_functions
from netconfpkg.gui.GUI_functions import xml_signal_autoconnect
from netconfpkg import *
from InterfaceCreator import InterfaceCreator
from netconfpkg.gui.tonline import TonlineDialog

class DialupDruid(InterfaceCreator):
    def __init__ (self, toplevel=None, connection_type=ISDN,
                  do_save = 1, druid = None):
        InterfaceCreator.__init__(self, do_save = do_save)

        self.connection_type = connection_type
        df = NCDeviceFactory.getDeviceFactory()        
        self.device = df.getDeviceClass(connection_type)()
        self.toplevel = toplevel
        self.druids = []
        self.country = ""
        self.city = ""
        self.name = ""
        self.provider = None
        self.device.BootProto = 'dialup'
        self.device.AutoDNS = True

        self.devicelist = NCDeviceList.getDeviceList()
        self.profilelist = NCProfileList.getProfileList()
        self.xml = None
        
    def init_gui(self):
        if self.xml:
            return
        
        glade_file = 'DialupDruid.glade'
        if not os.path.exists(glade_file):
            glade_file = GUI_functions.GLADEPATH + glade_file
        if not os.path.exists(glade_file):
            glade_file = GUI_functions.NETCONFDIR + glade_file

        self.xml = gtk.glade.XML(glade_file, 'druid',
                                 domain=GUI_functions.PROGNAME)
        xml_signal_autoconnect(self.xml,
            { "on_dialup_page_prepare" : self.on_dialup_page_prepare,
              "on_dialup_page_next" : self.on_dialup_page_next,
              "on_dhcp_page_prepare" : self.on_dhcp_page_prepare,
              "on_dhcp_page_next" : self.on_dhcp_page_next,
              "on_finish_page_finish" : self.on_finish_page_finish,
              "on_finish_page_prepare" : self.on_finish_page_prepare,
              "on_finish_page_back" : self.on_finish_page_back,
              "on_ipAutomaticRadio_toggled" : self.on_ipBootProto_toggled,
              "on_ipStaticRadio_toggled" : self.on_ipBootProto_toggled,
              "on_sync_ppp_activate" : self.on_sync_ppp_activate,
              "on_raw_ip_activate" : self.on_raw_ip_activate,              
              "on_providerNameEntry_insert_text" : \
              (self.on_generic_entry_insert_text, r"^[a-z|A-Z|0-9\-_:]+$"),
              "on_tonlineButton_clicked" : self.on_tonlineButton_clicked,
              }
            )

        self.druid = self.xml.get_widget ('druid')
        for I in self.druid.get_children():
            self.druid.remove (I)
            self.druids.append (I)


        # get the widgets we need
        self.dbtree = self.xml.get_widget("providerTree")

        self.setup_provider_db()
        
    def on_generic_entry_insert_text(self, entry, partial_text, length,
                                     pos, str):
        text = partial_text[0:length]
        if re.match(str, text):
            return
        entry.emit_stop_by_name('insert_text')

    def get_druids (self):
        self.init_gui()
        return self.druids[0:]

    def on_dialup_page_next(self, druid_page, druid):
        if self.check():
            self.dehydrate()
            return False
        else:
            return True

    def on_ipBootProto_toggled(self, widget):
        if widget.name == "ipAutomaticRadio":
            active = widget.get_active()
        else:
            active = not widget.get_active()
        
        self.xml.get_widget('dhcpSettingFrame').set_sensitive(active)
        self.xml.get_widget('ipSettingFrame').set_sensitive(not active)

    def dhcp_hydrate (self, xml, device):
        if device.IP:
            xml.get_widget('ipAddressEntry').set_text(device.IP)
        else:
            xml.get_widget('ipAddressEntry').set_text('')
        if device.Netmask:
            xml.get_widget('ipNetmaskEntry').set_text(device.Netmask)
        else:
            xml.get_widget('ipNetmaskEntry').set_text('')
        if device.Gateway:
            xml.get_widget('ipGatewayEntry').set_text(device.Gateway)
        else:
            xml.get_widget('ipGatewayEntry').set_text('')

        xml.get_widget('dnsSettingCB').set_active(device.AutoDNS == True)

        if device.BootProto == "static" or device.BootProto == "none":
            xml.get_widget('ipAutomaticRadio').set_active(False)
            xml.get_widget('ipStaticRadio').set_active(True)
            self.on_ipBootProto_toggled(\
                xml.get_widget('ipAutomaticRadio')),
        else:
            device.BootProto = 'dialup'
            xml.get_widget('ipAutomaticRadio').set_active(True)
            xml.get_widget('ipStaticRadio').set_active(False)
            self.on_ipBootProto_toggled(\
                xml.get_widget('ipStaticRadio')),

    def dhcp_dehydrate (self, xml, device):
        if xml.get_widget('ipAutomaticRadio').get_active():
            device.BootProto = 'dialup'
            device.IP = ''
            device.Netmask = ''
            device.Gateway = ''
            device.Hostname = ''
            device.AutoDNS = xml.get_widget('dnsSettingCB').get_active()
        else:
            device.BootProto = 'none'
            device.IP = xml.get_widget('ipAddressEntry').get_text()
            device.Netmask = xml.get_widget('ipNetmaskEntry').get_text()
            device.Gateway = xml.get_widget('ipGatewayEntry').get_text()
            device.Hostname = ''

    def on_sync_ppp_activate(self, *args):
        self.xml.get_widget('ipAutomaticRadio').set_active(True)
        self.xml.get_widget('ipStaticRadio').set_active(False)
        self.xml.get_widget('ipAutomaticRadio').set_sensitive(True)
        self.on_ipBootProto_toggled(\
                self.xml.get_widget('ipStaticRadio')),
        dialup = self.device.createDialup()
        dialup.EncapMode = 'syncppp'
        self.device.Device = getNewDialupDevice(NCDeviceList.getDeviceList(),
                                                self.device)
    
    def on_raw_ip_activate(self, *args):
        self.xml.get_widget('ipAutomaticRadio').set_active(False)
        self.xml.get_widget('ipStaticRadio').set_active(True)
        self.on_ipBootProto_toggled(\
                self.xml.get_widget('ipAutomaticRadio')),        
        self.xml.get_widget('ipAutomaticRadio').set_sensitive(False)
        dialup = self.device.createDialup()
        dialup.EncapMode = 'rawip'
        self.device.Device = getNewDialupDevice(NCDeviceList.getDeviceList(),
                                                self.device)
        
    def on_dhcp_page_back(self, druid_page, druid):
        return True
    
    def on_dhcp_page_next(self, druid_page, druid):
        dialup = self.device.createDialup()

        self.dhcp_dehydrate(self.xml, self.device)
        
    def on_dhcp_page_prepare(self, druid_page, druid):
        self.dhcp_hydrate(self.xml, self.device)
        dialup = self.device.createDialup()
        if self.connection_type == ISDN:
            if dialup.EncapMode == 'rawip':
                self.on_raw_ip_activate()
            else:
                self.on_sync_ppp_activate()
        else:
            self.xml.get_widget('encapModeMenu').set_sensitive(False)
        pass

    def on_finish_page_back(self,druid_page, druid):
        self.devicelist.rollback()
        
    def on_dialup_page_prepare(self, druid_page, druid):
        self.setup()
        self.xml.signal_connect("on_providerTree_tree_select_row",
                                self.on_providerTree_tree_select_row)

    def on_finish_page_prepare(self, druid_page, druid):
        hardwarelist = NCHardwareList.getHardwareList()
        for hw in hardwarelist:
            if hw.Type == self.connection_type:
                break
        dialup = self.device.Dialup
        
        s = _("You have selected the following information:") + \
            "\n\n" + "    " + \
            _("Hardware:") + "  " + hw.Description + "\n" + "    " + \
            _("Provider name:") + "  " + dialup.ProviderName + \
            "\n" +  "    " + \
            _("Login name:") + "  " + dialup.Login + "\n" +  "    " + \
            _("Phone number:") + "  " + dialup.PhoneNumber
        
        druid_page.set_text(s)
        
    def on_finish_page_finish(self, druid_page, druid):
        self.device.Device = getNewDialupDevice(NCDeviceList.getDeviceList(),
                                                self.device)
        hardwarelist = NCHardwareList.getHardwareList()
        hardwarelist.commit()
        self.devicelist.append(self.device)
        self.device.commit()
        for prof in self.profilelist:
            if prof.Active == False:
                continue
            prof.ActiveDevices.append(self.device.DeviceId)
            break
        self.profilelist.commit()
        self.devicelist.commit()
                
        self.save()
        self.toplevel.destroy()
        gtk.main_quit()

    def setup(self):
        if not self.provider:
            self.xml.get_widget('druid').set_buttons_sensitive(\
                False, False, False, False) 
        else:
            self.xml.get_widget('druid').set_buttons_sensitive(\
                False, True, True, False)
            self.xml.get_widget('areaCodeEntry').set_text(\
                self.provider['Areacode'])
            self.xml.get_widget('phoneEntry').set_text(\
                self.provider['PhoneNumber'])
            self.xml.get_widget('providerName').set_text(\
                self.provider['ProviderName'])            
            if self.provider['Login']:
                self.xml.get_widget('dialupLoginNameEntry').set_text(\
                self.provider['Login'])
            if self.provider['Password']:
                self.xml.get_widget('dialupPasswordEntry').set_text(\
                self.provider['Password'])

    def check(self):
        return (len(string.strip(self.xml.get_widget(\
            'phoneEntry').get_text())) > 0 \
           and len(string.strip(self.xml.get_widget(\
            'phoneEntry').get_text())) > 0 \
           and len(string.strip(self.xml.get_widget(\
            'providerName').get_text())) > 0 \
           and len(string.strip(self.xml.get_widget(\
            'dialupLoginNameEntry').get_text())) > 0 \
           and len(string.strip(self.xml.get_widget(\
            'dialupPasswordEntry').get_text())) > 0)
        
    def on_providerTree_tree_select_row(self, ctree, node, column):
        node = ctree.selection[0]
        if len(node.children) == 0:
            try:
                self.country = ctree.get_node_info(node.parent.parent)[0]
                self.city = ctree.get_node_info(node.parent)[0]
                self.name = ctree.get_node_info(node)[0]
                self.provider = self.get_provider()
                self.setup()
            except(TypeError,AttributeError):
                pass

    def get_provider_list(self):
        return providerdb.get_provider_list(self.connection_type)

    def get_provider(self):
        isp_list = self.get_provider_list()
        for isp in isp_list:
            if self.country == isp['Country'] and self.city == isp['City'] \
               and self.name == isp['ProviderName']:
                return isp

    def setup_provider_db(self):
        self.dbtree.set_line_style(CTREE_LINES_DOTTED)
        self.dbtree.set_row_height(20)
        
        widget = self.xml.get_widget ('providerTree')
        
        pix_isp, mask_isp = GUI_functions.get_icon('isp.xpm', widget)
        pix_city, mask_city = GUI_functions.get_icon('city.xpm', widget)
        
        isp_list = self.get_provider_list()
        
        _country = ""
        _city = ""
        
        for isp in isp_list:
            if _country != isp['Country']:
                pix, mask = GUI_functions.get_icon(isp['Flag'] + '.xpm',
                                                   widget)
                if not pix:
                    pix, mask = GUI_functions.get_icon('unknown-flag.xpm',
                                                       widget)
                    
                country = self.dbtree.insert_node(None, None,
                                                  [isp['Country']], 5,
                                                  pix, mask, pix, mask,
                                                  is_leaf=False)
                _country = isp['Country']
                _city = ''
            if _city != isp['City']:
                city = self.dbtree.insert_node(country, None, [isp['City']], 5,
                                               pix_city, mask_city,
                                               pix_city, mask_city,
                                               is_leaf=False)
                _city = isp['City']
            name = self.dbtree.insert_node(city, None,
                                           [isp['ProviderName']], 5,
                                           pix_isp, mask_isp,
                                           pix_isp, mask_isp, is_leaf=False)
            
        self.dbtree.select_row(0,0)
    
    def on_tonlineButton_clicked(self, *args):
        self.dehydrate()
        dialup = self.device.Dialup
        dialog = TonlineDialog(dialup.Login, dialup.Password)
        dl = dialog.xml.get_widget ("Dialog")
        
        dl.set_transient_for(self.toplevel)
        dl.set_position (gtk.WIN_POS_CENTER_ON_PARENT)
        
        if dl.run() != gtk.RESPONSE_OK:
            dl.destroy()        
            return

        dl.destroy()
        dialup.Login = dialog.login
        dialup.Password = dialog.password
        self.xml.get_widget("dialupLoginNameEntry").set_text(dialup.Login)
        self.xml.get_widget("dialupPasswordEntry").set_text(dialup.Password)
        if not self.xml.get_widget("providerName").get_text():
            self.xml.get_widget("providerName").set_text("T-Online")

    def dehydrate(self):
        DeviceId = self.xml.get_widget('providerName').get_text()
        DeviceId = re.sub('-', '_', DeviceId)
        n = DeviceId
        num = 0
        while 1:
            found = 0
            for l in self.devicelist:
                if l.DeviceId == DeviceId:
                    found = 1
            if found != 1: break
            DeviceId = n + str(num)
            num = num + 1

        self.device.DeviceId = DeviceId
        self.device.Type = self.connection_type
        dialup = self.device.createDialup()
        self.device.AllowUser = True
        self.device.OnBoot = False
        dialup.Prefix = self.xml.get_widget('prefixEntry').get_text()
        dialup.Areacode = self.xml.get_widget('areaCodeEntry').get_text()
        dialup.PhoneNumber = self.xml.get_widget('phoneEntry').get_text()
        dialup.ProviderName = self.xml.get_widget('providerName').get_text()
        dialup.Login = self.xml.get_widget('dialupLoginNameEntry').get_text()
        dialup.Password = self.xml.get_widget('dialupPasswordEntry').get_text()
        if self.provider and self.provider['Authentication']:
            dialup.Authentication = self.provider['Authentication']
        else:
            dialup.Authentication = '+pap -chap'
        dialup.DefRoute = True
        dialup.DialMode = NCDialup.DM_MANUAL
            
        if self.connection_type == ISDN:
            dialup.HangupTimeout = 600
            dialup.EncapMode == 'syncppp'
            
        elif self.connection_type == MODEM:            
            dialup.Inherits = 'Modem0'
            dialup.StupidMode = True
            dialup.InitString = ''
__author__ = "Harald Hoyer <harald@redhat.com>"

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