Detectar se o host remoto está executando o Windows ou o Samba

1

De um servidor Linux, como posso determinar rapidamente se uma máquina remota está executando o Windows ou o Samba?

Eu quero executar comandos em máquinas Windows remotas (XP e 7) para listar o software e as versões instaladas. E eu quero executar esses comandos de um servidor Linux (usando winexe ).

Para encontrar os hosts do Windows, eu uso este comando nmap:

nmap -oG - -T4 -p T:445 192.168.1.0/24 | awk '{print $2, $3}'

No entanto, também recebo todos os servidores Samba e algumas impressoras.

Existe uma maneira simples, por meio de opções adicionais do nmap ou por meio de um comando separado, para obter apenas as máquinas reais do Windows e evitar o envio de comandos irrelevantes do Windows para servidores e dispositivos não-Windows?

Atualização:

Eu segui a sugestão de pferate e usei -O . Eu não tinha tentado porque achei que seria lento e não confiável, mas funciona bem nessa situação. Agora eu uso isso para detectar máquinas reais do Windows:

nmap -oG - -T4 -p T:445 -O --max-os-tries 1 192.168.1.0/24 | grep '445/open/.* Windows' | awk '{print $2, $3}'
    
por mivk 28.01.2014 / 16:36

1 resposta

2

Você pode tentar usar a opção Detecção de SO do nmap, -O .

nmap -O host

Você também pode tentar ver o OS String ou Server String do host. Embora possa ser alterado, a string padrão do Servidor para o Samba é Samba Server Version %v . Não tenho certeza de qual string de servidor padrão do Windows é para todas as variantes, mas no Win7 SP1 eu tenho Windows 7 Professional 6.1 .

No meu servidor Linux Samba, a cadeia do SO é Unix e no Win7 SP1 é Windows 7 Professional 7601 Service Pack 1 .

$ smbclient -L host

Domain=[MYDOMAIN] OS=[Unix] Server=[Samba x.y.z]

        Sharename       Type      Comment
        ---------       ----      -------

Como esses valores podem ser alterados, você não pode confiar nele completamente; mas pode te dar uma ideia inicial.

    
por 28.01.2014 / 20:20