
Scanner de rede baseado em navegador & detecção de IP local
webscan é um scanner de IP de rede baseado em navegador e detector de IP local. Ele detecta IPs vinculados ao usuário/vítima ouvindo um canal de dados RTP via WebRTC e retornando à porta através de quaisquer IPs ativos, além de descobrir todos os endereços IP ativos em sub-redes válidas monitorando timeouts imediatos (pacotes TCP RST retornados) de chamadas fetch() ou tags img ocultas apontadas para sub-redes/IPs válidos. Funciona em dispositivos móveis e desktop em todos os principais navegadores e sistemas operacionais. A versão beta é extensível para permitir a adição de múltiplas técnicas.
O webscan aproveita o fato de que sockets de tags img não responsivas podem ser fechados para evitar limitação de taxa baseada no navegador e na rede, alterando o atributo src para uma URI não-socket (remover do DOM, ironicamente, não fecha o socket), ou usando o suporte a sinal de fetch() da interface AbortController().
experimente o webscan ao vivo aqui
versão beta aqui
por @SamyKamkar
lançado em 2020/11/07
mais projetos divertidos em samy.pl
O webscan funciona assim
// aguardar o fim da varredura
let scanResults = await webScanAll()
// ou obter callbacks quando IPs são encontrados com uma promise
let ipsToScan = undefined // varre todas as redes pré-definidas se for nulo
let scanPromise = webScanAll(
ipsToScan, // array. se indefinido, varre gateways de sub-rede principais, depois varre sub-redes ativas. suporta curingas
{
rtc: true, // usar webrtc para detectar ips locais
logger: l => console.log(l), // callback de logger
noRedirect: false, // se true, não redireciona de http para http - Chrome não detecta IPs de rede corretamente via https no momento
localCallback: function(ip) { console.log(`callback de ip local: ${ip}`) },
subnetCallback: function(ip) { console.log(`callback de ip roteador: ${ip}`) },
networkCallback: function(ip) { console.log(`callback de ip rede: ${ip}`) },
}
)
retorna
scanResults = {
"local": ["192.168.0.109"], // endereço IP local
"network": { // outros hosts na rede e quão rápido eles respondem
"192.168.0.1": 97,
"192.168.0.2": 82,
"192.168.0.100": 46,
"192.168.0.109": 0,
"192.168.0.117": 74,
"192.168.0.113": 17,
"192.168.0.112": 21,
"192.168.0.114": 25,
"192.168.0.116": 25,
"192.168.0.115": 25,
"192.168.0.105": 57,
"192.168.0.107": 63,
"192.168.0.103": 64,
"192.168.0.108": 31
}
}
A fazer
Testado em