• XSS.stack #1 – первый литературный журнал от юзеров форума

GeoIP

ammok

(L1) cache
Пользователь
Регистрация
13.12.2005
Сообщения
793
Реакции
7
MaxMind GeoIP

Думаю всем известно и в описании не нуждается...

http://www.maxmind.com/app/ip-location

MaxMind GeoIPCity [full]

формат: cvs
обновление: 01.10.2010

Старовата, но по сей день актуальна, за год не многое изменилось (во всяком случае все провайдеры с которыми я имею дело адреса не меняли).
В этой базе более 5ти миллионов записей, для сравнения, в бесплатной около 3х миллионов.

http://www.sendspace.com/file/x29rvo

p.s. было бы не плохо перезалить файл на более живучий ресурс

Ну и дабы окончательно раскрыть тему с MaxMind я написал простенький php скрипт для получения данных с сайта (те же данные что и в базе GeoIPCity), т.к. на сайте доступна самая актуальная информация.

Для корректной работы скрипта нужен модуль curl для php (лень было с сокетами марочиться, а так еще и socks5 поддерживает  :) ).

Код:
<?php

if(!function_exists('curl_version')) die("'php_curl' module not installed");

$ip = "209.85.148.147";  //google =)

if(isset($_GET['ip']) and @ereg('([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})',$_GET['ip'],$ip)) $ip = $_GET['ip'];

echo "<form method='get'><input type='text' name='ip' value='".$ip."'><input type='submit' value='>>'></form>"; 

list($country_c,$country_n,$region,$region_n,$city,$postal,$lat,$lon,$isp,$org) = geoIp($ip);

echo "<pre>
IP Adress: ".$ip."
Country Code: ".$country_c."
Country Name: ".$country_n."
Region: ".$region."
Region Name: ".$region_n."
City: ".$city."
Postal Code: ".$postal."
Latitude: ".$lat."
Longitude: ".$lon."
Internet Service Provider: ".$isp."
Organization: ".$org."
</pre>";


/*
  Получение geoip данных с сайта www.maxmind.com.

  IN $ip - string, адресс.

  Return - array, geoip данные.
*/
function geoIp($ip)
{
  $url = "http://www.maxmind.com/app/locate_demo_ip";
  $post = "ips=".$ip."&type=&u=&p=";

  $page = loadPage($url,false,10,false,$post);

  $s_pos = strpos($page,$ip);
  $e_pos = strpos($page,'</tr>',$s_pos);
  
  $content = explode("<font size=\"-1\">",substr($page,$s_pos,$e_pos-$s_pos));
  
  $geoip = array();

  for($i=1;$i<11;$i++){
    $temp = substr($content[$i],0,strpos($content[$i],'<',1));
    $geoip[] = ($temp == "</font>" ? "--" : $temp);
  }

  return $geoip;
}

/*
  Оснастка для curl.

  IN $url     - url для запроса.
  IN $socks   - socks.
  IN $timeout - таймаут запроса.
  IN $cookies - кукисы.
  IN $post    - post данные.
  IN $headers - заголовки.
  IN $referer - источник.
  IN $ua      - заголовок UserAgent.
  IN $ssl     - ключи для https запроса.


  Return - string - в случаи успеха, результат.
           false - в случаи ошибки.
*/
function loadPage($url,$socks=false,$timeout=10,$cookie=false,$post=false,$headers=false,$referer=false,$ua=false,$ssl=false)
{
  $scheme=parse_url($url);
  $scheme=$scheme['scheme'];
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_HEADER,false);
  curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
  curl_setopt($ch,CURLOPT_FAILONERROR,false);
  curl_setopt($ch,CURLOPT_VERBOSE,false);
  curl_setopt($ch,CURLOPT_NOPROGRESS,true);
  curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
  curl_setopt($ch,CURLOPT_USERAGENT,($ua?$ua:"Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"));
  if($headers)curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
  if($cookie)curl_setopt($ch,CURLOPT_COOKIE,$cookie);
  if($socks){
    curl_setopt($ch,CURLOPT_PROXY,$socks);
    curl_setopt($ch,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);
  }
  if($scheme=="https"){
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
    if($ssl){
      curl_setopt($ch,CURLOPT_SSLKEYPASSWD,$ssl['cert_pass']);
      curl_setopt($ch,CURLOPT_SSLCERT,$ssl['cert_file'].'.cer');
      curl_setopt($ch,CURLOPT_SSLKEY,$ssl['cert_file'].'.key');
    }
  }
  curl_setopt($ch,CURLOPT_REFERER,($referer?$referer:$url));
  if($post){
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$post); 
  }
  curl_setopt($ch,CURLOPT_URL,$url);
  $result = curl_exec($ch);
  $error = curl_errno($ch);
  curl_close($ch);
  if(!$error) return $result;
  else return false;
}

?>

Добавляйте если есть чего интересного.
 
спс, но хотелось бы посвежее конечно , если есть у кого возможность подсмотрите тут
http://exploit.in/forum/index.php?showtopic=52737
 
Risk, Вам сюда, а так же, если на сервере линукс, желательно установить модуль к PHP, код для установки:

Код:
sudo apt-get update
sudo apt-get install php5-geoip

Первая строка гугла:

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html>  
<head>  
<title>Где я?, куда я попал....?</title>  
</head>  
<body>  
<?php  
include "geoipcity.inc";  
$gi = geoip_open("GeoLiteCity.dat", GEOIP_STANDARD);  
$res = GeoIP_record_by_addr($gi,$_SERVER['REMOTE_ADDR']);  
geoip_close($gi);  
foreach ($res as $key => $val)  
{  
    print "$key = $val
\n";  
}  
?>  
</body>  
</html>
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх