
Scanner réseau basé sur le navigateur & détection d'IP locale
webscan est un scanner d'adresses IP réseau basé sur le navigateur et un détecteur d'IP locale. Il détecte les IP liées à l'utilisateur/victime en écoutant sur un canal de données RTP via WebRTC et en bouclant sur le port à travers toutes les IP actives, ainsi qu'en découvrant toutes les adresses IP actives sur des sous-réseaux valides en surveillant les expirations immédiates (paquets TCP RST renvoyés) lors d'appels fetch() ou de balises img cachées pointant vers des sous-réseaux/IP valides. Fonctionne sur mobile et desktop sur tous les principaux navigateurs et systèmes d'exploitation. La version bêta est extensible pour permettre l'ajout de plusieurs techniques.
webscan tire parti du fait que les sockets de balises img non réactives peuvent être fermées pour éviter les limitations de débit du navigateur et du réseau en modifiant l'attribut src vers un URI non socket (la suppression du DOM n'ironiquement pas fermer le socket), ou en utilisant le support de signal de fetch() via l'interface AbortController().
essayez webscan en direct ici
version bêta ici
par @SamyKamkar
publié le 2020/11/07
plus de projets amusants sur samy.pl
webscan fonctionne comme suit
// 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}`) },
}
)
retourne
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
}
}
À faire
Testé sur