Não é definitivo, mas o nmap fará isso com o comando nmap -O -v
( veja docs para mais detalhes) Se você está rodando windows ou quer um gui, veja
Existe alguma maneira de executar um comando (como mensagem ICMP ou outro protocolo), obter uma resposta de uma máquina remota (não em minha própria rede local privada) e analisar a mensagem para encontrar alguma evidência de que esta máquina está sendo executada um sistema operacional Windows ou Linux?
Se você estiver em uma rede IPv4, use o ping. Se a resposta tiver um TTL de 128, o destino provavelmente estará executando o Windows. Se o TTL for 64, o destino provavelmente está executando alguma variante do 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
)
)
)
)
Um dos caminhos é usar NMap . A partir da resposta, pode adivinhar o sistema operacional remoto.
Pacote: xprobe 'OR' xprobe2
Descrição: identificação remota do SO
Xprobe2 permite determinar qual sistema operacional está sendo executado em um controle remoto
hospedeiro. Ele envia vários pacotes para um host e analisa as respostas retornadas.
A funcionalidade do Xprobe2 é comparável ao recurso de impressão digital do sistema operacional no nmap.
Exemplo:
$ sudo apt-get install xprobe
$ sudo xprobe2 -T21-23,80,53,110 ###. ###. ###. ###
Referência:
link
link
Postagem antiga, mas pensei em adicionar isso também, se o dispositivo for SNMP ativado, você também pode consultar o sysDescr que informará o SO que está sendo usado.
Baixe um navegador MIB, um bom que eu uso está aqui: link . Você basicamente dá o endereço IP do dispositivo e faz uma operação de caminhada.
Tags networking windows protocol linux