Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
webscan — Scanner di rete basato su browser e rilevamento dell'IP locale | Kitploit
Strumenti/GitHubGitHub/samyk/webscan
OSINT (Open Source Intelligence)RicognizioneMappatura della ReteRaccolta Informazioni
GitHubsamyk/webscan

webscan

Scanner di rete basato su browser e rilevamento dell'IP locale

Vedi RepositorySito web
472675 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

webscan

webscan è uno scanner di rete basato su browser e un rilevatore IP locale. Rileva gli IP associati all'utente/vittima ascoltando su un canale dati RTP tramite WebRTC e rimandando indietro alla porta attraverso qualsiasi IP attivo, oltre a scoprire tutti gli indirizzi IP attivi su sottoreti valide monitorando i timeout istantanei (pacchetti TCP RST restituiti) da chiamate fetch() o tag img nascosti puntati a sottoreti/IP validi. Funziona su dispositivi mobili e desktop in tutti i principali browser e sistemi operativi. La versione beta è estensibile per permettere l'aggiunta di più tecniche.

webscan sfrutta il fatto che i socket dei tag img non reattivi possono essere chiusi per evitare la limitazione di velocità basata su browser e rete, modificando l'attributo src in un URI non socket (la rimozione dal DOM ironicamente non chiude il socket), oppure usando il supporto del segnale di fetch() tramite l'interfaccia AbortController().

prova webscan dal vivo qui
versione beta qui

di @SamyKamkar
rilasciato il 2020/11/07
altri progetti divertenti su samy.pl

webscan funziona così

  1. webscan prima scorre una lista di indirizzi gateway comuni
  2. per ogni IP, usa fetch() per fare una connessione HTTP finta a http://common.gateway.ip:1337
  3. se viene restituito un TCP RST, la promise di fetch() sarà rifiutata o l'onerror del tag img scatterà prima di un timeout, indicando un IP attivo
  4. per prevenire la limitazione di velocità del browser o della rete, i socket di fetch() non reattivi vengono chiusi tramite il segnale di AbortController(), mentre i tag img hanno il src reindirizzato a un URI non socket, chiudendo il socket
  5. quando viene rilevato un gateway attivo, i passaggi 1-3 vengono ripetuti per ogni IP sulla sottorete (es. 192.168.0.[1-255])
  6. viene aperto un canale dati WebRTC nel browser, aprendo una porta casuale sulla macchina della vittima
  7. per ogni IP trovato attivo sulla sottorete, viene effettuata una connessione al canale dati WebRTC verso quell'host
  8. se il canale dati WebRTC ha successo, sappiamo di aver appena stabilito una connessione al nostro stesso IP locale

implementazione

root@kitploit:~
// wait for scan to finish
let scanResults = await webScanAll()
 
// or get callbacks when ips are found with a promise
let ipsToScan = undefined // scans all pre-defined networks if null
let scanPromise = webScanAll(
  ipsToScan, // array. if undefined, scan major subnet gateways, then scan live subnets. supports wildcards
  {
    rtc: true,   // use webrtc to detect local ips
    logger: l => console.log(l),  // logger callback
    noRedirect: false, // if true, doesn't redirect from http to http - Chrome doesn't scan detect network IPs proprly on https atm
    localCallback:   function(ip) { console.log(`local ip callback: ${ip}`)   },
    subnetCallback:  function(ip) { console.log(`router ip callback: ${ip}`)  },
    networkCallback: function(ip) { console.log(`network ip callback: ${ip}`) },
  }
)

restituisce

root@kitploit:~
scanResults = {
  "local": ["192.168.0.109"], // local ip address
  "network": { // other hosts on the network and how fast they respond
    "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
  }
}

Da fare

  • usare iframe per eseguire scansioni a blocchi
    • quando il frame viene smantellato, presumo che ciò aiuti a garantire che le connessioni vengano chiuse
    • come funzionano più iframe che scansionano più blocchi? forse questo ci permette di bypassare la limitazione della velocità di connessione del browser
  • supportare sia fetch() che img come nuclei dello scanner (completato nella beta)
    • Safari
      • nota: il tag img funziona molto bene in alcuni browser come Safari
      • avvertenza: cambiare .src non sembra interrompere la connessione
      • soluzione potenziale: vedi nota su iframe sopra
    • Chrome
      • avvertenza: Chrome non interrompe la connessione se rimuovi l'img dal DOM
      • soluzione: Chrome interrompe la connessione di un img se modifichi .src, ottimo!
      • avvertenza: cambiare img.src in '#' effettua un'altra richiesta alla stessa pagina madre
      • avvertenza: cambiare img.src in 'about:' produce un avviso nella console, c'è qualcos'altro da usare che non faccia una richiesta?
  • usare il timing di img come meccanismo di rilevamento IP locale

Testato su

  • 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)
  • mobile Safari (iOS)
  • mobile Chrome (iOS)
Scarica lo strumento