![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ściągnąłem sobie dodatek do Mozilli o nazwie Proctor umożliwiający ukrycie faktycznego IP i zastąpienie go wymyślonym. I faktycznie działa, z jednym wyjatkiem - gdy ktoś korzysta z poniższego skryptu:
[php:1:c074073f37]<?php function fetchip() { //get useful vars: $client_ip = $_SERVER['HTTP_CLIENT_IP']; $x_forwarded_for = $_SERVER['HTTP_X_FORWARDED_FOR']; $remote_addr = $_SERVER['REMOTE_ADDR']; // then the script itself if (!empty ($client_ip) ) { $ip_expl = explode('.',$client_ip); $referer = explode('.',$remote_addr); if($referer[0] != $ip_expl[0]) { $ip=array_reverse($ip_expl); $return=implode('.',$ip); } else { $return = $client_ip; }; } elseif (!empty($x_forwarded_for) ) { if(strstr($x_forwarded_for,',')) { $ip_expl = explode(',',$x_forwarded_for); $return = end($ip_expl); } else { $return = $x_forwarded_for; }; } else { $return = $remote_addr; }; unset ($client_ip,$x_forwarded_for,$remote_addr,$ip_expl,); return $return; }; $ip=fetchip(); ?>[/php:1:c074073f37] Forum phpBB nie wykrywa prawdziwego adresu tylko pokazuje moje 123.123.123.123 - a ten skrypt nie? Czemu? Mocno mnie to zaciekawiło ale nie mogę rozpracować zbytnio tego skryptu - pomożecie? Przebija sie przez proxy w3cache i proctora? W jaki sposób? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 23.08.2003 Skąd: Olsztyn, Polska Ostrzeżenie: (0%) ![]() ![]() |
A ja napisałem skrypt, który potrafi obejść Proctora i to bez jakichś zbędnych zamian adresów od końca i wogóle. BTW: Ten skrypt, który jest na pierwszym poście pochodzi z php.NET i tam koleś wytłumaczył po co jest ta zamiana miejscami...
Oto skrypt wraz z opisem: [php:1:72ea7b1b62] // Funkcja sprawdza prawdziwy adres IP uzytkownika, oczywiscie nie jest najlepszym rozwiazaniem i moze okazac sie rownoczescnie strasznie kiepskim, ale testy pokaza // string get_ip(void); function get_ip() { // dla ustawionych zmiennych globalnych w tablicy $_SERVER if(isset($_SERVER)) { // wsprawdzamy czy polaczyl sie przez proxy if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && (isset($_SERVER['HTTP_VIA']) || isset($_SERVER['FORWARDED']))) { // je¶li tak to sprawdzimy czy przypadkiem nagłowek HTTP_VIA oraz FORWARDED nie sa podrobione $sProxy_Host_Pattern = @gethostbyaddr($_SERVER['REMOTE_ADDR']); $sProxy_Host_Pattern = "|".$sProxy_Host_Pattern."|i"; if(preg_match($sProxy_Host_Pattern,$_SERVER['HTTP_VIA']) || preg_match($sProxy_Host_Pattern,$_SERVER['FORWARDED'])) { // je¶li się zgadza to znaczy ze w HTTP_X_FORWARDED_FOR znajduje sie Twój adres IP (i moze dodatkowo spoofing) // ale najpierw sprawdzimy czy nie ma przecnikow $aSpoofing_Test = explode(",",$_SERVER['HTTP_X_FORWARDED_FOR']); // jesli jest tam przecinek to znaczy ze poxy server dokleil adres rzeczywisty if(isset($aSpoofing_Test[1])) { $sGet_IP = ltrim($aSpoofing_Test[1]); // wiec zwroc adres prawdziwy } else { $sGet_IP = $aSpoofing_Test[0]; // w przeciwny wypadku zwroc } // END else } // end if(preg } else { // end if(isset $sGet_IP = $_SERVER['REMOTE_ADDR']; } // end else } else { // end if($_SERVER // wsprawdzamy czy polaczyl sie przez proxy if(($http_x_forwarded_for = getenv('HTTP_X_FORWARDED_FOR')) && (($http_via = getenv('HTTP_VIA')) || ($forwarded = getenv('FORWARDED')))) { // je¶li tak to sprawdzimy czy przypadkiem nagłowek HTTP_VIA oraz FORWARDED nie sa podrobione $sProxy_Host_Pattern = @gethostbyaddr(getenv('REMOTE_ADDR')); $sProxy_Host_Pattern = "|".$sProxy_Host_Pattern."|i"; if(preg_match($sProxy_Host_Pattern,$http_via) || preg_match($sProxy_Host_Pattern,$forwarded)) { // je¶li się zgadza to znaczy ze w HTTP_X_FORWARDED_FOR znajduje sie Twój adres IP (i moze dodatkowo spoofing) // ale najpierw sprawdzimy czy nie ma przecnikow $aSpoofing_Test = explode(",",$http_x_forwarded_for); // jesli jest tam przecinek to znaczy ze poxy server dokleil adres rzeczywisty if(isset($aSpoofing_Test[1])) { $sGet_IP = ltrim($aSpoofing_Test[1]); // wiec zwroc adres prawdziwy } else { $sGet_IP = $aSpoofing_Test[0]; // w przeciwny wypadku zwroc } // END else } // end if(preg } else { // end if(isset $sGet_IP = getenv('REMOTE_ADDR'); } // end else } // end else return $sGet_IP; // zwracamy wartosc IP'ka wyliczonego przez funkcje } // end get_ip() [/php:1:72ea7b1b62] Kod jest oczywiście open source. Testowany na proxy na squid'zie i mozilli z proctorem. Jeśli ktoś wie jak go obejść to prosze napisać - mi się wydaje, że stawnowi jakąś wartość, ale mogę się mylić. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 13:39 |