Y a-t-il un moyen d'exécuter une commande (tel que le message ICMP ou un autre protocole), obtenir une réponse d'une machine distante (pas sur mon propre réseau local privé) et analyser le message pour trouver des preuves que cette machine exécute une fenêtre ou Un système d'exploitation Linux?
Si vous êtes sur un réseau IPv4, utilisez simplement Ping. Si la réponse a un TTL de 128, la cible exécute probablement des fenêtres. Si le TTL est 64, la cible exécute probablement une variante de UNIX.
: Presumes ping service enabled on Windows local and remote hosts
:
del _IX.txt, Windows.txt
ping -n 1 [computername|ipaddress] | findstr /i /c:"Reply" > ttl.txt
for /f "tokens=1-9* delims=:=< " %%a in (ttl.txt) do (
if %%i leq 130 (
if %%i geq 100 (
echo Windows & rem or echo %%c >> Windows.txt
) else (
if %%i equ 64 (
echo *IX & rem or echo %%c >> _IX.txt
)
)
)
)
Suite à la suggestion de Johnathon64, vous pouvez utiliser SNMP pour interroger directement sur le serveur - en supposant que le serveur distant lui-même est configuré pour utiliser SNMP. Vous pouvez lancer une requête de ligne de commande telle que celle ci-dessous pour le faire:
snmpget -v1 -c public <RemoteServerIP> sysDescr.0 | sed -n 's/.*STRING: //p' | tr -d \"
Expliquer la commande elle-même:
snmpget
doit interroger l'objet SysDESCR, qui contient le nom par défaut de l'objet.sed
exclura la sortie de début, qui ne contient que l'interrogé OID et le début de la chaîne.tr
, exclut toutes les citations doubles, généralement trouvées dans la requête SNMP.Les deux dernières commandes ne sont que pour formater la sortie - si vous n'en avez pas besoin d'eux, peut utiliser la toute première commande pour extraire la sortie complète.