Sou um desenvolvedor da Web que está tentando entender melhor a segurança. Estou tentando descobrir uma maneira (em distribuições baseadas em Linux / Debian) para listar todos os computadores na mesma LAN em que meu netbook está. Eu tentei "arp -n", mas não acho que seja uma lista completa, pois meu iPhone está no mesmo roteador wi-fi que meu netbook e isso não apareceu. Existe alguma maneira melhor de obter uma lista completa de máquinas que compartilham o mesmo gateway?
networking
wireless-networking
security
CaptSaltyJack
fonte
fonte
Respostas:
Obtenha o nmap . É o programa Trinity usado em Matrix e você pode fazer uma varredura para encontrar todos os dispositivos conectados à LAN em que você está e muito mais.
Aqui está o guia de referência.
fonte
sudo apt-get install nmap
É isso que eu uso, nmap e um endereço usando a notação de bloco CIDR da rede que você deseja digitalizar. Primeiro, você precisa instalar o nmap, pois ele pode não ser pré-instalado com sua distribuição. No Ubuntu:
Em seguida, descubra o seu endereço de rede usando o ifconfig:
Saída ifconfig para a interface que eu quero verificar:
Use o inet addr e Mask para descobrir o endereço de rede na notação CIDR, mais sobre CIDR aqui . O endereço é:
Execute o nmap usando o parâmetro -sP, que não varrerá mais do que verificar se o host está online:
A saída do nmap será mais ou menos assim:
É isso, se você precisar de mais ajuda com o nmap, consulte a documentação oficial do nmap ou execute:
fonte
nmap -sA 192.168.1.0/24
A opção nmap-sA
mostra resultados descritivos semelhantes com melhor legibilidade, o que inclui o nome do dispositivo, IP, mac, etc., como na opção-sP
. Pessoalmente, prefiro -sA over -sP por questão de legibilidade.arp -n
mostra apenas as máquinas na sua LAN com as quais sua máquina já conversou. Você pode obter essa lista para preencher melhor executando ping nos endereços multicasts de difusão e de todos os hosts:O endereço de transmissão "all ones" (em binário). Observe que a maioria das pilhas IP converterá isso nos endereços de difusão de sub-rede para todas as sub-redes às quais você está conectado:
O endereço de transmissão da sub-rede da sua sub-rede atual. Supondo que você esteja em 192.168.1.0/24:
O endereço multicast "todos os hosts". Eu gosto muito deste, porque é mais provável encontrar hosts configurados para outras sub-redes IP, que estão anexadas à mesma LAN Ethernet que você:
Observe que este método e os outros métodos que eu já vi mencionados em outras respostas até agora, procuram apenas por hosts alcançáveis por IP na rede atual. Provavelmente é tudo o que você precisa para se preocupar, mas é possível que um invasor bisbilhote ou faça coisas ruins em uma rede sem ser visível via IP.
fonte
ip neigh
ehosts
. NO nmap necessário / NO sudo necessário .Com base nisso, você pode criar um script Python:
Download via
(ou simplesmente
arp
... eu não vi isso antes)fonte
ip neigh | awk '{ print $1 }' | xargs -n1 host
ip n
abreviado. Talvez seja melhorip n | grep REACHABLE
.Não achei as respostas existentes satisfatórias o suficiente, então pensei em tentar. Afinal, o FAQ sugere fornecer contexto para os links .
nmap
é ótimo, se um pouco confuso de usar. Aqui está uma coisa que eu corro para descobrir dispositivos de rede local que são capazes de copiar e colar.nmap -sP
(ounmap -sn
) varre por ping . Existem outras opções para 'descoberta de host', como comnmap -sL
ounmap -Pn
.Caminho # 1.
Caminho # 2. Sei que isso funciona, mas não sei dizer se esse é o caminho certo a seguir.
Ficaria feliz em saber se existem maneiras mais eficazes. Até então, eu estou mantendo isso.
fonte
Você pode tentar executar ping em todas as sub-redes com um pequeno script de shell linux, por exemplo
fonte
ip n
falhei para todos.O Hunt é uma ferramenta de linha de comando capaz de criar uma lista de máquinas conforme elas transmitem pela rede para obter informações. Ele usa dados TCP, UDP, ICMP e ARP para criar uma lista de endereços MAC ativos em uma rede. É uma ferramenta passiva que funciona ouvindo no fio.
fonte
Para uma lista mais compacta de dispositivos conectados:
Explicação.
nmap -sL 192.168.0.*
listará todos os IPs na sub-rede e marcará aqueles com nome:Como todos os registros interessantes começam com parênteses
(
e dígitos1
, filtramos para isso com| grep \(1
(barra invertida é necessária para escapar dos parênteses)Quirk
Cuidado: se dois dispositivos tiverem o mesmo nome,
nmap
mostrarão apenas aquele que foi conectado ao roteador pela última vezfonte
Para verificar o status de um intervalo de endereços IP, isso é simples e agradável:
Onde:
Nota:
-sn
era conhecido como-sP
Eu fiz isso no Mac OS X (que é baseado no BSD). Não tenho certeza se a versão Linux tem alguma diferença.
fonte
Você pode usar o fping
sudo apt-get install fping
(em sistemas operacionais semelhantes ao debian).O fping é semelhante ao ping, mas com desempenho muito melhor ao executar ping em vários hosts. O sinalizador -r 1 informa ao fping para executar apenas uma rodada. A parte 2> 1 permite ao grep filtrar a saída.
Seria exibido algo como:
Há também um sinalizador interessante para o nmap que permite ver o fornecedor do MAC - se conhecido. Use com sudo para ver os endereços MAC.
Você obteria, por exemplo:
fonte
1. Solução alternativa se transmite e
nmap
não está disponível:2a ou pergunte ao seu servidor de nomes de domínio :
2b. sem awk
envia todos os dispositivos de rede pingáveis na sub-rede 192.168.2.0/24 em paralelo (para reduzir o tempo de execução). Depois
arp
deve exibir todos os dispositivos que responderam.não verifica se há conexões ativas ou atuais, mas lista todas as conexões que o serviço de domínio local mantém uma entrada, mesmo as realmente antigas.
Explicação mais detalhada:
seq 254
para criar todos os números de 1 a 254 (em todos os números de 100 a 150:seq 100 150
)xargs
chamaping
e substitui "IP" (-iIP
) peloseq
número de uence de stdin, então 192.168.2.IP muda para 192.168.2.1 para o primeiroseq
número,-P
especifica o número deping
processos simultâneos quexargs
devem ser iniciados, eu escolho a mesma quantidade +1 dos endereços ( = 254) estou interessado.ping
com o endereço IP modificado por xargs (192.168.2.IP
) e ping apenas uma vez (-c1
); você deve usar o mesmo identificador especificado para xargs sobre o-i
argumento nesse casoIP
grep time=
Para remover todas as linhas que contenham informações supérfluas, estamos interessados apenas em respostas, que fornecem um tempo de ida e volta (= obteve uma resposta)arp -a
para exibir pares de nomes válidos (ip)Eu chamo isso de meu comando pingall e o disponibilizei através de um alias em
~/.bashrc
:fonte