!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/apex_tdfonline/php/nucleo/lib/   drwxr-xr-x
Free 14.92 GB of 61.93 GB (24.1%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     toba_usuario.php (5.04 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Encapsula al usuario actualmente logueado a la instancia
 *
 * Consumir usando toba::usuario()->
 * @package Seguridad
 */

class toba_usuario implements toba_interface_usuario
{
    function 
__construct($id_usuario)
    {
    }

    static function 
autenticar($id_usuario$clave$datos_inciales=null)
    {
        return 
false;
    }
    
    function 
get_id()
    {
        return 
null;
    }
    
    function 
get_nombre()
    {
        return 
null;
    }
    
    function 
get_perfiles_funcionales()
    {
        return array();    
    }

    
//-------- Bloqueos --------------------------------------

    
static function es_ip_rechazada($ip){}
    static function 
registrar_error_login($usuario$ip$texto){}
    static function 
bloquear_ip($ip){}
    static function 
get_cantidad_intentos_en_ventana_temporal($ip$ventana_temporal=null){}
    static function 
get_cantidad_intentos_usuario_en_ventana_temporal($usuario$ventana_temporal=null){}
    static function 
bloquear_usuario($usuario){}
    static function 
es_usuario_bloqueado($usuario){}

    
//-------- Restricciones de acceso ------------------------
    
    
function get_restricciones_funcionales($perfiles null)
    {
        return array();
    }

    function 
get_perfil_datos()
    {
        return 
null;
    }

    
//------------------------ Generacion de claves ---------------------------
    
static function generar_clave_aleatoria($long)
    {
        
$str 'ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789-._~';        //Se deberian agregar ciertos caracteres especiales segun SIGEN
        
for($cad='',$i=0;$i<$long;$i++) {
            
$cad .= substr($str,rand(0,(strlen($str)-1)),1);
        }        
        return 
$cad;
    }

    function 
set_clave($clave_plana)
    {
        
$this->set_clave_usuario($clave_plana$this->get_id());
    }

    static function 
set_clave_usuario ($clave_plana$usuario)
    {
        
$clave_enc quote(encriptar_con_sal($clave_planaapex_pa_algoritmo_hash));
        
$sql "UPDATE apex_usuario
                    SET        clave = 
$clave_enc ,
                    autentificacion = '"
apex_pa_algoritmo_hash 
            
."' WHERE    usuario = "quote($usuario);
        
toba::instancia()->get_db()->ejecutar($sql);
    }
    
    static function 
reemplazar_clave_vencida($clave_plana$usuario$dias_validez null)
    {
        if (
is_null($dias_validez)) {        //Anulo el vencimiento
            
$accion 'vencimiento = NULL';
        } else {                                
//Actualizo el vencimiento con la cantidad de dias restantes
            
$accion "vencimiento = (now() + '$dias_validez days')::date"
        }
        
        
$sql "UPDATE apex_usuario SET forzar_cambio_pwd = 0, $accion  WHERE usuario = "quote($usuario);
        
toba::instancia()->get_db()->abrir_transaccion();
        try {
            
self::set_clave_usuario($clave_plana$usuario);
            
toba::instancia()->get_db()->ejecutar($sql);
            
toba::instancia()->get_db()->cerrar_transaccion();            
        } catch (
toba_error_db $e) {
            
toba::instancia()->get_db()->abortar_transaccion();
            throw new 
toba_error_usuario('No se pudo modificar la clave, contacte a un administrador del sistema');
        }
    }
    
    static function 
verificar_clave_no_utilizada($clave_plana$usuario
    {
        
$claves toba::instancia()->get_lista_claves_usadas($usuario);
        if (! empty(
$claves)) {
            foreach(
$claves as $clave) {
                
$test_key encriptar_con_sal($clave_plana$clave['algoritmo'], $clave['clave']);            
                if (
$clave['clave'] == $test_key) {
                    
toba::logger()->debug('El usuario selecciono una clave ya utilizada anteriormente');
                    throw new 
toba_error_usuario('La clave fue utilizada anteriormente, por favor seleccione una nueva');
                }    
            }        
        }
    }
    
    static function 
verificar_clave_vencida($id_usuario)
    {
        
$datos_usuario toba::instancia()->get_info_autenticacion($id_usuario);
        if ( empty(
$datos_usuario) ) {
            return 
false;
        } else {
            return (
$datos_usuario['clave_vencida'] === || $datos_usuario['forzar_cambio_pwd'] === 1);
        }
    }
    
    static function 
verificar_periodo_minimo_cambio($usuario$periodo)
    {
        
$claves toba::instancia()->get_lista_claves_usadas($usuario$periodo);
        return empty(
$claves);
    }
        
    
/**
     *  Verifica la composicion y largo de una contraseņa de usuario, lanza excepcion cuando falla la validacion,
     *  de lo contrario retorna true.
     * @param string $pwd
     * @param int $largo_minimo
     * @return boolean
     * @throws toba_error_pwd_conformacion_invalida
     */
    
static function verificar_composicion_clave($pwd$largo_minimo=null)
    {
        if (
is_null($largo_minimo)) {
            
$largo_minimo apex_pa_pwd_largo_minimo;        //Ultimo recurso si es que no lo levantaron de la instancia o el proyecto.
        
}        
        
$expr self::get_exp_reg_pwd($largo_minimo); 
        
toba_logger::instancia()->debug("Expresion evaluacion: $expr");
        
$largo_valido =  ($largo_minimo <= strlen($pwd));
        
        
$valida preg_match_all($expr$pwd$matches);
        if (! 
$largo_valido) {
            throw new 
toba_error_pwd_conformacion_invalida("La clave del usuario debe tener al menos $largo_minimo caracteres");
        } elseif (
$valida === false || $valida == '0') {
            throw new 
toba_error_pwd_conformacion_invalida('La clave del usuario debe estar compuesta por caracteres, digitos y simbolos especiales');
        }
        return 
true;
    }
    
    
/**
     * @ignore
     */
    
static function get_exp_reg_pwd($largo_minimo)
    {
        return 
'/^(?!.*(.)\1{1})((?=.*[^\w\d\s])(?=.*[a-zA-Z])|(?=.*[0-9])(?=.*[a-zA-Z])).{'$largo_minimo.',}$/';
    }
}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

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

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

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.5295 ]--