[Scripts] Consolidar toolkit W-Zombi en scripts/w-zombi/ + README
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sonda de Relevamiento para Nodos Windows (Compatible con Agente srv-NS8)
|
||||
Versión: 1.0.0
|
||||
Autor: Ricardo MONLA (Generado por Agente)
|
||||
|
||||
.DESCRIPTION
|
||||
Recolecta información de Hardware, Red, Sistema Operativo y Servicios.
|
||||
Genera un objeto JSON compatible con la Ontología del proyecto.
|
||||
|
||||
.EXAMPLE
|
||||
.\sonda_windows.ps1
|
||||
#>
|
||||
|
||||
$ErrorActionPreference = "SilentlyContinue"
|
||||
|
||||
# --- 1. Sistema Operativo ---
|
||||
$os = Get-CimInstance Win32_OperatingSystem
|
||||
$cs = Get-CimInstance Win32_ComputerSystem
|
||||
|
||||
# --- 2. Hardware: CPU ---
|
||||
$cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
|
||||
$cpuName = $cpu.Name.Trim()
|
||||
$cores = $cpu.NumberOfCores
|
||||
$threads = $cpu.NumberOfLogicalProcessors
|
||||
|
||||
# --- 3. Hardware: RAM ---
|
||||
$ramBytes = $cs.TotalPhysicalMemory
|
||||
$ramGB = [Math]::Round($ramBytes / 1GB, 2)
|
||||
|
||||
# --- 4. Hardware: Discos ---
|
||||
$disks = Get-CimInstance Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3 } | ForEach-Object {
|
||||
@{
|
||||
id = $_.DeviceID
|
||||
size_gb = [Math]::Round($_.Size / 1GB, 2)
|
||||
used_gb = [Math]::Round(($_.Size - $_.FreeSpace) / 1GB, 2)
|
||||
free_gb = [Math]::Round($_.FreeSpace / 1GB, 2)
|
||||
fs_type = $_.FileSystem
|
||||
mount_point = $_.DeviceID
|
||||
}
|
||||
}
|
||||
|
||||
# --- 5. Red ---
|
||||
$netAdapters = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' } | ForEach-Object {
|
||||
$ipInfo = Get-NetIPAddress -InterfaceAlias $_.Name -AddressFamily IPv4 | Select-Object -First 1
|
||||
@{
|
||||
interface = $_.Name
|
||||
mac = $_.MacAddress
|
||||
ip = if ($ipInfo) { $ipInfo.IPAddress } else { "N/A" }
|
||||
state = "UP"
|
||||
speed_mbps = [Math]::Round($_.LinkSpeed / 1MB, 0)
|
||||
}
|
||||
}
|
||||
|
||||
# --- 6. Software Detectado (Servicios Clave) ---
|
||||
$servicesToCheck = @("Tailscale", "RustDesk", "AnyDesk", "TeamViewer", "ssh-agent", "sshd")
|
||||
$detectedServices = Get-Service | Where-Object { $servicesToCheck -contains $_.Name -or $servicesToCheck -contains $_.DisplayName } | ForEach-Object {
|
||||
@{
|
||||
name = $_.Name
|
||||
status = $_.Status.ToString()
|
||||
startup = $_.StartType.ToString()
|
||||
}
|
||||
}
|
||||
|
||||
# --- 7. Construcción del JSON ---
|
||||
$sondaData = @{
|
||||
timestamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
|
||||
node = @{
|
||||
hostname = $cs.DNSHostName
|
||||
os = "$($os.Caption) ($($os.OSArchitecture))"
|
||||
version = $os.Version
|
||||
domain = $cs.Domain
|
||||
model = $cs.Model
|
||||
}
|
||||
hardware = @{
|
||||
cpu = @{
|
||||
model = $cpuName
|
||||
cores = $cores
|
||||
threads = $threads
|
||||
}
|
||||
ram_gb = $ramGB
|
||||
disks = $disks
|
||||
}
|
||||
network = $netAdapters
|
||||
services = $detectedServices
|
||||
meta = @{
|
||||
agent_version = "1.0.0-win"
|
||||
type = "probe_windows"
|
||||
}
|
||||
}
|
||||
|
||||
# --- 8. Salida ---
|
||||
$jsonOutput = $sondaData | ConvertTo-Json -Depth 5
|
||||
Write-Output $jsonOutput
|
||||
Reference in New Issue
Block a user