SHARE
TWEET

The PHP code to find the coordinates from GSM cells

XyberSec Nov 25th, 2012 598 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.   <head>
  4.     <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  5.     <title>Tracking cell by Boris Landoni Example</title>
  6.        
  7.  
  8.        
  9.         <?php
  10.  
  11.  
  12.  
  13. function geturl()
  14. {
  15.  
  16.         if ($_REQUEST["myl"] != "") {
  17.           $temp = split(":", $_REQUEST["myl"]);
  18.           $mcc = substr("00000000".($temp[0]),-8);
  19.           $mnc = substr("00000000".($temp[1]),-8);
  20.           $lac = substr("00000000".($temp[2]),-8);
  21.           $cid = substr("00000000".($temp[3]),-8);       
  22.         } else {
  23.           $hex = $_REQUEST["hex"];
  24.           //echo "hex $hex";
  25.           if ($hex=="1"){
  26.                         //echo "da hex to dec";
  27.                         $mcc=substr("00000000".hexdec($_REQUEST["mcc"]),-8);
  28.                         $mnc=substr("00000000".hexdec($_REQUEST["mnc"]),-8);
  29.                         $lac=substr("00000000".hexdec($_REQUEST["lac"]),-8);
  30.                         $cid=substr("00000000".hexdec($_REQUEST["cid"]),-8);
  31.                        
  32.                         $nlac[0]=substr("00000000".hexdec($_REQUEST["lac0"]),-8);
  33.                         $ncid[0]=substr("00000000".hexdec($_REQUEST["cid0"]),-8);                      
  34.                         $nlac[1]=substr("00000000".hexdec($_REQUEST["lac1"]),-8);
  35.                         $ncid[1]=substr("00000000".hexdec($_REQUEST["cid1"]),-8);
  36.                         $nlac[2]=substr("00000000".hexdec($_REQUEST["lac2"]),-8);
  37.                         $ncid[2]=substr("00000000".hexdec($_REQUEST["cid2"]),-8);
  38.                         $nlac[3]=substr("00000000".hexdec($_REQUEST["lac3"]),-8);
  39.                         $ncid[3]=substr("00000000".hexdec($_REQUEST["cid3"]),-8);
  40.                         $nlac[4]=substr("00000000".hexdec($_REQUEST["lac4"]),-8);
  41.                         $ncid[4]=substr("00000000".hexdec($_REQUEST["cid4"]),-8);
  42.                         $nlac[5]=substr("00000000".hexdec($_REQUEST["lac5"]),-8);
  43.                         $ncid[5]=substr("00000000".hexdec($_REQUEST["cid5"]),-8);
  44.                        
  45.           }else{
  46.                         //echo "lascio dec";   
  47.                         $mcc = substr("00000000".$_REQUEST["mcc"],-8);
  48.                         $mnc = substr("00000000".$_REQUEST["mnc"],-8);
  49.                         $lac = substr("00000000".$_REQUEST["lac"],-8);
  50.                         $cid = substr("00000000".$_REQUEST["cid"],-8);
  51.                        
  52.                         $nlac[0]=substr("00000000".($_REQUEST["lac0"]),-8);
  53.                         $ncid[0]=substr("00000000".($_REQUEST["cid0"]),-8);                    
  54.                         $nlac[1]=substr("00000000".($_REQUEST["lac1"]),-8);
  55.                         $ncid[1]=substr("00000000".($_REQUEST["cid1"]),-8);
  56.                         $nlac[2]=substr("00000000".($_REQUEST["lac2"]),-8);
  57.                         $ncid[2]=substr("00000000".($_REQUEST["cid2"]),-8);
  58.                         $nlac[3]=substr("00000000".($_REQUEST["lac3"]),-8);
  59.                         $ncid[3]=substr("00000000".($_REQUEST["cid3"]),-8);
  60.                         $nlac[4]=substr("00000000".($_REQUEST["lac4"]),-8);
  61.                         $ncid[4]=substr("00000000".($_REQUEST["cid4"]),-8);
  62.                         $nlac[5]=substr("00000000".($_REQUEST["lac5"]),-8);
  63.                         $ncid[5]=substr("00000000".($_REQUEST["cid5"]),-8);
  64.           }
  65.         }
  66.         //echo "MCC : $mcc <br> MNC : $mnc <br>LAC : $lac <br>CID : $cid <br>";
  67.         return array ($mcc, $mnc, $lac, $cid, $nlac, $ncid);
  68. }
  69. function decodegoogle($mcc,$mnc,$lac,$cid)
  70. {
  71.  
  72.  
  73.         $mcch=substr("00000000".dechex($mcc),-8);
  74.         $mnch=substr("00000000".dechex($mnc),-8);
  75.         $lach=substr("00000000".dechex($lac),-8);
  76.         $cidh=substr("00000000".dechex($cid),-8);
  77.        
  78.         echo "<tr><td>Hex </td><td>MCC: $mcch </td><td>MNC: $mnch </td><td>LAC: $lach </td><td>CID: $cidh </td></tr></table>";
  79.  
  80. $data =
  81. "\x00\x0e". // Function Code?
  82. "\x00\x00\x00\x00\x00\x00\x00\x00". //Session ID?
  83. "\x00\x00". // Contry Code
  84. "\x00\x00". // Client descriptor
  85. "\x00\x00". // Version
  86. "\x1b". // Op Code?
  87. "\x00\x00\x00\x00". // MNC
  88. "\x00\x00\x00\x00". // MCC
  89. "\x00\x00\x00\x03".
  90. "\x00\x00".
  91. "\x00\x00\x00\x00". //CID
  92. "\x00\x00\x00\x00". //LAC
  93. "\x00\x00\x00\x00". //MNC
  94. "\x00\x00\x00\x00". //MCC
  95. "\xff\xff\xff\xff". // ??
  96. "\x00\x00\x00\x00"  // Rx Level?
  97. ;
  98.  
  99.  
  100.  
  101.  
  102. $init_pos = strlen($data);
  103. $data[$init_pos - 38]= pack("H*",substr($mnch,0,2));
  104. $data[$init_pos - 37]= pack("H*",substr($mnch,2,2));
  105. $data[$init_pos - 36]= pack("H*",substr($mnch,4,2));
  106. $data[$init_pos - 35]= pack("H*",substr($mnch,6,2));
  107. $data[$init_pos - 34]= pack("H*",substr($mcch,0,2));
  108. $data[$init_pos - 33]= pack("H*",substr($mcch,2,2));
  109. $data[$init_pos - 32]= pack("H*",substr($mcch,4,2));
  110. $data[$init_pos - 31]= pack("H*",substr($mcch,6,2));
  111. $data[$init_pos - 24]= pack("H*",substr($cidh,0,2));
  112. $data[$init_pos - 23]= pack("H*",substr($cidh,2,2));
  113. $data[$init_pos - 22]= pack("H*",substr($cidh,4,2));
  114. $data[$init_pos - 21]= pack("H*",substr($cidh,6,2));
  115. $data[$init_pos - 20]= pack("H*",substr($lach,0,2));
  116. $data[$init_pos - 19]= pack("H*",substr($lach,2,2));
  117. $data[$init_pos - 18]= pack("H*",substr($lach,4,2));
  118. $data[$init_pos - 17]= pack("H*",substr($lach,6,2));
  119. $data[$init_pos - 16]= pack("H*",substr($mnch,0,2));
  120. $data[$init_pos - 15]= pack("H*",substr($mnch,2,2));
  121. $data[$init_pos - 14]= pack("H*",substr($mnch,4,2));
  122. $data[$init_pos - 13]= pack("H*",substr($mnch,6,2));
  123. $data[$init_pos - 12]= pack("H*",substr($mcch,0,2));
  124. $data[$init_pos - 11]= pack("H*",substr($mcch,2,2));
  125. $data[$init_pos - 10]= pack("H*",substr($mcch,4,2));
  126. $data[$init_pos - 9]= pack("H*",substr($mcch,6,2));
  127.  
  128. if ((hexdec($cid) > 0xffff) && ($mcch != "00000000") && ($mnch != "00000000")) {
  129.   $data[$init_pos - 27] = chr(5);
  130. } else {
  131.   $data[$init_pos - 24]= chr(0);
  132.   $data[$init_pos - 23]= chr(0);
  133. }
  134.  
  135.  
  136.  
  137. $context = array (
  138.         'http' => array (
  139.             'method' => 'POST',
  140.             'header'=> "Content-type: application/binary\r\n"
  141.                 . "Content-Length: " . strlen($data) . "\r\n",
  142.             'content' => $data
  143.             )
  144.         );
  145.  
  146.  
  147.        
  148. $xcontext = stream_context_create($context);
  149. $str=file_get_contents("http://www.google.com/glm/mmap",FALSE,$xcontext);
  150.  
  151.  
  152.  
  153. if (strlen($str) > 10) {
  154.   $lat_tmp = unpack("l",$str[10].$str[9].$str[8].$str[7]);
  155.   $lat = $lat_tmp[1]/1000000;
  156.   $lon_tmp = unpack("l",$str[14].$str[13].$str[12].$str[11]);
  157.   $lon = $lon_tmp[1]/1000000;
  158.   $raggio_tmp = unpack("l",$str[18].$str[17].$str[16].$str[15]);
  159.   $raggio = $raggio_tmp[1]/1;
  160.   } else {
  161.   echo "Not found!";
  162.   $lat = 0;
  163.   $lon = 0;
  164.   }
  165.   return array($lat,$lon,$raggio);
  166.  
  167.  
  168. }
  169.  
  170.  
  171.  
  172.  
  173. list($mcc,$mnc,$lac,$cid, $nlac, $ncid)=geturl();
  174.  
  175.  
  176. echo "<table cellspacing=30><tr><td>Dec</td><td>MCC: $mcc </td><td>MNC: $mnc </td><td>LAC: $lac </td><td>CID: $cid </td></tr>";
  177.  
  178.  
  179.  
  180.  
  181.  
  182. list ($lat,$lon,$raggio)=decodegoogle($mcc,$mnc,$lac,$cid);
  183.  
  184.   echo "<br>Google result for the main Cell<br>";
  185.   echo "Lat=$lat <br> Lon=$lon <br> Range=$raggio m<br>";
  186.   echo "<a href=\"http://maps.google.it/maps?f=q&source=s_q&hl=it&geocode=&q=$lat,$lon&z=14\" TARGET=\"_blank\" >See on Google maps</a> <BR> <br>";
  187.  
  188.  
  189.   for ($contatore=0; $contatore < (count($nlac)); $contatore++) {
  190.         if ($nlac[$contatore]==0) {
  191.                 //echo "trovato campo vuoto al contatore $contatore<BR>";
  192.                 $ncelle=$contatore;
  193.                 break;
  194.         }      
  195. }
  196.  
  197. for ($contatore=0; $contatore < ($ncelle); $contatore++) {
  198.         echo "LAC: $nlac[$contatore]\t CID: $ncid[$contatore]<BR>";
  199.         list ($nlat[$contatore],$nlon[$contatore],$nraggio[$contatore])=decodegoogle($mcc,$mnc,$nlac[$contatore],$ncid[$contatore]);
  200.         echo "<br>Google result for the Neighbor Cell $contatore <br>";
  201.         echo "nLat=$nlat[$contatore] <br> nLon=$nlon[$contatore] <br> nRaggio=$nraggio[$contatore] m<br><br>";
  202. }
  203.  
  204.  
  205.  
  206.   echo "<div id=\"map\" style=\"width: 100%; height: 700px\"></div>";
  207.   echo "<script type=\"text/javascript\">";
  208.   echo "var latgoogle=$lat;";
  209.   echo "var longoogle=$lon;";
  210.   echo "var raggio=$raggio;";
  211.  
  212.  
  213. //creo un file contenente le coordinate delle celle ****  
  214.         $stringa_xml_doc = " <markers>\n\t";
  215.         $stringa_xml_doc =$stringa_xml_doc. "<marker lat=\"$lat\" lng=\"$lon\" rag=\"$raggio\" html=\"Main cell\" ico=\"antred\" label=\"Main\" />";
  216.                 for($contatore= 0; $contatore < $ncelle; $contatore++)
  217.                 {
  218.                         if ($nlat[$contatore]!=0) {
  219.                                 $stringa_xml_doc =$stringa_xml_doc. "<marker lat=\"$nlat[$contatore]\" lng=\"$nlon[$contatore]\" rag=\"$nraggio[$contatore]\" html=\"Cell $contatore\" ico=\"antbrown\" label=\"Marker $contatore\" />";
  220.                         }
  221.                        
  222.                 }
  223.         $stringa_xml_doc =$stringa_xml_doc."\n </markers>";
  224.          
  225.                                                  
  226.         echo ($stringa_xml_doc);
  227.         //$stringa_xml = $stringa_xml_dtd.$stringa_xml_doc;
  228.         $stringa_xml = $stringa_xml_doc;
  229.  
  230.         $file_name = "celle_xml.xml";
  231.         $file = fopen ($file_name,"w");
  232.         $num = fwrite ($file, $stringa_xml);
  233.  
  234.         fclose($file);
  235.  
  236.         echo("File XML creato con successo!!");
  237.  
  238. //***
  239.  
  240.  
  241.   echo "nLat=new Array();";
  242.   echo "nLon=new Array();";
  243.   echo "nraggio=new Array();";
  244.   for ($contatore=0; $contatore < ($ncelle); $contatore++)
  245.             {
  246.   echo "        nLat [$contatore]   =$nlat[$contatore];
  247.                                 nLon [$contatore]   =$nlon[$contatore];
  248.                                 nraggio [$contatore]=$nraggio[$contatore];";
  249.                                
  250.                                
  251.             }
  252.  
  253.   echo "</script>";
  254.  
  255. ?>
  256.  
  257.  
  258.                 <center>
  259.                 <br>
  260.                 <br>
  261.                 <center>
  262.                         <br>
  263.                         <br>
  264.                         <iframe width='100%' height='540' marginwidth='0' marginheight='0' scrolling='no' frameborder='0'  src='http://open-electronics.org/fb/' ></iframe>
  265.                 </center>
  266. <br>
  267. <br>
  268. </center>
  269.  
  270.         <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAIJFMStkxCl4SCny-4ljyrBRkrgiUOwoahV4KonZmGOdSmhVVVBTizYtL9IQMT4sND3EJvMdlOrIA8g" type="text/javascript"></script>
  271.  
  272.   </head>
  273.  
  274.  
  275.  
  276.  
  277.  <body onunload="GUnload()">
  278.  
  279.                 <center>
  280.                 <br>
  281.                 <br>
  282.                 <script type="text/javascript"><!--
  283. google_ad_client = "ca-pub-5248152858136551";
  284. /* OE Link Banner post */
  285. google_ad_slot = "3312240372";
  286. google_ad_width = 468;
  287. google_ad_height = 60;
  288. //-->
  289. </script>
  290. <script type="text/javascript"
  291. src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
  292. </script>
  293. <br>
  294. <br>
  295. </center>
  296.        
  297.  
  298.  
  299.         <script type="text/javascript">
  300.        
  301.        
  302.        
  303.    //function initialize() {
  304.       if (GBrowserIsCompatible()) {
  305.                 //alert("boris2");
  306.  
  307.                
  308.      
  309.     //}
  310.        
  311.         // This function picks up the click and opens the corresponding info window
  312.       function myclick(i) {
  313.         GEvent.trigger(gmarkers[i], "click");
  314.       }
  315.        
  316.        
  317.             var map = new GMap2(document.getElementById("map"));
  318.         //map.setCenter(new GLatLng(37.4419, -122.1419), 13);
  319.         map.setUIToDefault();  
  320.        
  321.         function cursore() {
  322.                 alert("boris");
  323.                 var pointg = new GLatLng(latgoogle,longoogle);
  324.                 alert(pointg);
  325.     }
  326.        
  327.  
  328.          
  329.          
  330.           // A function to create the marker and set up the event window
  331.       function createMarker(point,name,html,icona) {           
  332.         var marker = new GMarker(point,markerOptions);
  333.         GEvent.addListener(marker, "click", function() {
  334.           marker.openInfoWindowHtml(html);
  335.         });
  336.         return marker;
  337.       }
  338.          
  339.          
  340.          
  341. // Read the data from example.xml
  342.       GDownloadUrl("celle_xml.xml", function(doc) {
  343.         var xmlDoc = GXml.parse(doc);
  344.         var markers = xmlDoc.documentElement.getElementsByTagName("marker");
  345.          
  346.         for (var i = 0; i < markers.length; i++) {
  347.           // obtain the attribues of each marker
  348.           var lat = parseFloat(markers[i].getAttribute("lat"));
  349.           var lng = parseFloat(markers[i].getAttribute("lng"));
  350.           var raggio = parseFloat(markers[i].getAttribute("rag"));
  351.                   var icona = markers[i].getAttribute("ico");
  352.                   var Icon = new GIcon(G_DEFAULT_ICON);
  353.                         Icon.image = icona + ".png";
  354.                        
  355.                         // Set up our GMarkerOptions object
  356.                        
  357.                                 markerOptions = { icon:Icon };
  358.                        
  359.                        
  360.                   var point = new GLatLng(lat,lng);
  361.                  
  362.           var html = markers[i].getAttribute("html");
  363.           var label = markers[i].getAttribute("label");
  364.                  
  365.           // create the marker
  366.                         if (icona=="antred") {
  367.                                 var color="#FF0000";
  368.                                 var fillColor="#FF6600";
  369.                         }
  370.                         else {
  371.                                 var color="#FF6699";
  372.                                 var fillColor="#FF99CC";
  373.                         }
  374.                   var thickness=4;
  375.                   var opacity=0.4;
  376.                  
  377.                   var fillOpacity=0.2;
  378.  
  379.                   var polyCircle=drawCircle(point, raggio, color, thickness, opacity, fillColor, fillOpacity);         
  380.                   map.addOverlay(polyCircle);
  381.           var marker = createMarker(point,label,html,markerOptions);
  382.           map.addOverlay(marker);
  383.         }
  384.                         map.setCenter(point, 13);
  385.         // put the assembled side_bar_html contents into the side_bar div
  386.         //document.getElementById("side_bar").innerHTML = side_bar_html;
  387.       });
  388.        
  389.  
  390.  
  391.         function drawCircle(center, radius, color, thickness, opacity, fillColor, fillOpacity)
  392.         {
  393.                
  394.                         radiusMiles=radius*0.000621371192;
  395.                         //alert(radiusMiles);
  396.             var degreesPerPoint = 8;
  397.             var radiusLat = radiusMiles * (1/69.046767); // there are >> >> > 69.046767 miles per degree latitude
  398.             var radiusLon = radiusMiles * (1/(69.046767 * Math.cos(parseFloat(center.lat()) * Math.PI / 180)));
  399.             var points = new Array();
  400.             //Loop through all degrees from 0 to 360
  401.             for(var i = 0; i < 360; i += degreesPerPoint)
  402.             {
  403.                 var point = new GLatLng(parseFloat(center.lat()) + (radiusLat * Math.sin(i * Math.PI / 180)), parseFloat(center.lng()) + (radiusLon * Math.cos(i * Math.PI / 180)));
  404.                                         points.push(point);
  405.             }
  406.             points.push(points[0]);     // close the circle
  407.  
  408.             polyCircle = new GPolygon(points, color, thickness, opacity, fillColor, fillOpacity)
  409.             return polyCircle;
  410.         }
  411.  }
  412.  
  413.         </script>
  414.        
  415.        
  416. <script type="text/javascript">
  417.        
  418.   //cursore();  //carica il marcatore
  419.  
  420. </script>
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.   </body>
  428. </html>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top