$name,
'created' => date('Y-m-d H:i:s', filectime($workspaceDir)),
'modified' => date('Y-m-d H:i:s', filemtime($workspaceDir)),
'hosts' => [],
'ports' => [],
'vulnerabilities' => [],
'screenshots' => [],
'files' => []
];
// Get all files in workspace
function scanWorkspace($dir, $prefix = '')
{
$files = [];
if (is_dir($dir)) {
$items = scandir($dir);
foreach ($items as $item) {
if ($item === '.' || $item === '..') continue;
$path = $dir . '/' . $item;
if (is_dir($path)) {
$files = array_merge($files, scanWorkspace($path, $prefix . $item . '/'));
} else {
$files[] = [
'name' => $item,
'path' => $prefix . $item,
'size' => filesize($path),
'modified' => filemtime($path)
];
}
}
}
return $files;
}
$data['files'] = scanWorkspace($workspaceDir);
// Parse hosts from nmap directory
$nmapDir = $workspaceDir . '/nmap';
if (is_dir($nmapDir)) {
$nmapFiles = glob($nmapDir . '/*.nmap');
foreach ($nmapFiles as $file) {
$content = file_get_contents($file);
// Extract host info
if (preg_match('/Nmap scan report for (.+)/', $content, $matches)) {
$host = trim($matches[1]);
if (!in_array($host, $data['hosts'])) {
$data['hosts'][] = $host;
}
}
// Extract ports
if (preg_match_all('/(\d+)\/(tcp|udp)\s+open\s+(\S+)/', $content, $matches, PREG_SET_ORDER)) {
foreach ($matches as $match) {
$data['ports'][] = [
'port' => $match[1],
'protocol' => $match[2],
'service' => $match[3]
];
}
}
}
}
// Get screenshots
$screenshotDir = $workspaceDir . '/screenshots';
if (is_dir($screenshotDir)) {
$screenshots = glob($screenshotDir . '/*.{png,jpg,jpeg,gif}', GLOB_BRACE);
foreach ($screenshots as $ss) {
$data['screenshots'][] = basename($ss);
}
}
// Parse vulnerabilities from output files
$outputDir = $workspaceDir . '/output';
if (is_dir($outputDir)) {
$vulnFiles = glob($outputDir . '/*nuclei*.txt');
foreach ($vulnFiles as $file) {
$lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
if (strpos($line, '[') !== false && strpos($line, ']') !== false) {
$data['vulnerabilities'][] = trim($line);
}
}
}
}
// Unique ports
$data['ports'] = array_unique($data['ports'], SORT_REGULAR);
$data['vulnerabilities'] = array_unique($data['vulnerabilities']);
?>
UltyScan Report -
Generated Files
No files found in this workspace.