Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
webscan — Scanner de rede baseado em navegador & detecção de IP local | Kitploit
Ferramentas/GitHubGitHub/samyk/webscan
OSINT (Inteligência de Fontes Abertas)ReconhecimentoMapeamento de RedeColeta de Informações
GitHubsamyk/webscan

webscan

Scanner de rede baseado em navegador & detecção de IP local

Ver RepositórioSite
47267há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

webscan

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

  1. Primeiro, o webscan itera por uma lista de endereços IP de gateway comuns
  2. Para cada IP, usa fetch() para fazer uma falsa conexão HTTP para http://common.gateway.ip:1337
  3. Se um TCP RST retornar, a promise do fetch() será rejeitada ou o onerror da tag img será acionado antes de um timeout, indicando um IP ativo
  4. Para evitar limitação de taxa do navegador ou da rede, sockets fetch() não responsivos são fechados via sinal AbortController(), enquanto tags img têm o src redirecionado para uma URI não-socket, fechando o socket
  5. Quando um gateway ativo é detectado, as etapas 1-3 são repetidas para cada IP na sub-rede (ex.: 192.168.0.[1-255])
  6. Um canal de dados WebRTC é aberto no navegador, abrindo uma porta aleatória na máquina da vítima
  7. Para quaisquer IPs encontrados ativos na sub-rede, uma conexão de canal de dados WebRTC é feita para aquele host
  8. Se o canal de dados WebRTC for bem-sucedido, sabemos que acabamos de estabelecer uma conexão com nosso próprio IP local

implementação

root@kitploit:~
// 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

root@kitploit:~
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

  • usar iframe para realizar varreduras em blocos
    • quando o frame é destruído, presumo que isso ajuda a garantir que as conexões sejam encerradas
    • como múltiplos iframes varrendo múltiplos blocos funcionam? talvez isso nos permita contornar a limitação de taxa de conexão do navegador
  • suportar tanto fetch() quanto img como núcleos de varredura (concluído no beta)
    • Safari
      • nota: a tag img funciona muito bem em alguns navegadores como Safari
      • ressalva: alterar o .src parece não abortar a conexão
      • solução potencial: ver nota do iframe acima
    • Chrome
      • ressalva: o Chrome não aborta a conexão se você remover a img do DOM
      • solução: o Chrome aborta a conexão de uma img se você ajustar o .src, isso é ótimo!
      • ressalva: alterar o img.src para '#' faz outra requisição para a mesma página pai
      • ressalva: alterar o img.src para 'about:' produz um aviso no console, há algo mais para usar que não faça requisição?
  • usar timing de img como mecanismo de detecção de IP local

Testado em

  • Chrome 87.0.4280.47 (macOS)
  • Edge 86.0.622.63 (Windows)
  • Firefox 82.0.2 (macOS)
  • Firefox 82.0.2 (Windows 10)
  • Safari 13.1.2 (macOS)
  • Safari móvel (iOS)
  • Chrome móvel (iOS)
Baixar ferramenta