File Manager

Current Directory: /opt/cpanel/ea-wappspector/src/Matchers
Viewing File: /opt/cpanel/ea-wappspector/src/Matchers/DotNet.php
<?php namespace Plesk\Wappspector\Matchers; use League\Flysystem\Filesystem; use League\Flysystem\FilesystemException; use League\Flysystem\StorageAttributes; use Plesk\Wappspector\MatchResult\DotNet as MatchResult; use Plesk\Wappspector\MatchResult\EmptyMatchResult; use Plesk\Wappspector\MatchResult\MatchResultInterface; class DotNet implements MatcherInterface { use UpLevelMatcherTrait; private const HEX_SIGNATURE = '4d5a'; /** * @throws FilesystemException */ public function doMatch(Filesystem $fs, string $path): MatchResultInterface { foreach ($fs->listContents($path) as $item) { /** @var StorageAttributes $item */ if (!$item->isFile() || !str_ends_with($item->path(), '.dll')) { continue; } $handle = $fs->readStream($item->path()); $hex = bin2hex(fread($handle, 4)); if (str_contains($hex, self::HEX_SIGNATURE)) { return new MatchResult($path); } } return new EmptyMatchResult(); } }