⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
proc
/
self
/
root
/
usr
/
local
/
src
/
imagick
/
util
/
View File Name :
checkSymbols.php
<?php /** * This is a simple script to analyze symbols defined or needed by Imagick. * It is an attempt to check verify that the version info that Imagick is assuming * is true about ImageMagick is actually true. */ class SymbolChecker { private $requiredSymbols = []; private $providedSymbols = []; private $exclusionPatterns = []; private $exclusions = []; public function addExclusionRegex($pattern) { $this->exclusionPatterns[] = $pattern; } public function addExclusion($string) { $this->exclusions[] = $string; } public function readSymbolsFromFile($imagickSymbols, $isImagick) { $lines = file($imagickSymbols); if ($lines === false) { echo "Failed to read $imagickSymbols \n"; exit(-1); } foreach ($lines as $line) { $line = trim($line); $matched = preg_match('#(.*)(A|B|D|R|T|U|w) (.*)#', $line, $matches); if (!$matched) { echo "Failed to match line: ".$line."\n"; continue; } $char = $matches[2]; $symbol = $matches[3]; switch($char) { case('U'): { if ($isImagick) { $this->requiredSymbols[] = trim($symbol); } break; } case('T'): { $this->providedSymbols[] = trim($symbol); break; } } } } function getMissingSymbols() { $missing = []; foreach ($this->requiredSymbols as $required) { if (in_array($required, $this->providedSymbols) == true) { continue; } foreach ($this->exclusionPatterns as $exclusionPattern) { if (preg_match("#".$exclusionPattern."#", $required)) { continue 2; } } if (in_array($required, $this->exclusions)) { continue; } $missing[] = $required; } return $missing; } } $symbolChecker = new SymbolChecker(); $symbolChecker->readSymbolsFromFile(__DIR__."/symbols.imagick.txt", true); $symbolChecker->readSymbolsFromFile(__DIR__."/symbols.magickcore.txt", false); $symbolChecker->readSymbolsFromFile(__DIR__."/symbols.magickwand.txt", false); $symbolChecker->addExclusionRegex("^zend_.*"); $symbolChecker->addExclusionRegex("^_.*"); $symbolChecker->addExclusionRegex("^php_.*"); $symbolChecker->addExclusionRegex("^str.*"); $symbolChecker->addExclusionRegex("^add_.*"); $symbolChecker->addExclusionRegex("^access.*"); $symbolChecker->addExclusionRegex("^convert_to_.*"); $symbolChecker->addExclusionRegex("^fclose.*"); $symbolChecker->addExclusionRegex("^fopen.*"); $symbolChecker->addExclusionRegex("^fprintf.*"); $symbolChecker->addExclusionRegex("^instanceof_function_ex.*"); $symbolChecker->addExclusionRegex("^memcpy.*"); $symbolChecker->addExclusionRegex("^object_properties_init.*"); $symbolChecker->addExclusionRegex("^setlocale.*"); $symbolChecker->addExclusionRegex("^atoi.*"); $symbolChecker->addExclusionRegex("^free.*"); $symbolChecker->addExclusionRegex("^sqrt.*"); $symbolChecker->addExclusion("core_globals_id"); $symbolChecker->addExclusion("executor_globals_id"); $symbolChecker->addExclusion("ts_allocate_id"); $symbolChecker->addExclusion("tsrm_get_ls_cache"); $symbolChecker->addExclusion("virtual_access"); $symbolChecker->addExclusion("OnUpdateBool"); $symbolChecker->addExclusion("ap_php_snprintf"); $symbolChecker->addExclusion("core_globals"); $symbolChecker->addExclusion("display_ini_entries"); $symbolChecker->addExclusion("empty_fcall_info_cache"); $symbolChecker->addExclusion("executor_globals"); $symbolChecker->addExclusion("expand_filepath"); $symbolChecker->addExclusion("spl_ce_Countable"); $symbolChecker->addExclusion("spprintf"); $symbolChecker->addExclusion("ts_resource_ex"); $missingList = $symbolChecker->getMissingSymbols(); if (count($missingList) == 0) { exit(0); } echo "Detected missing symbols in imagick library:"; foreach ($missingList as $missing) { echo "$missing\n"; } exit(-1);