Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Proctor a IP
spenalzo
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
delorian
post
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&para;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&para;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&para;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&para;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ć.
Go to the top of the page
+Quote Post

Posty w temacie
- spenalzo   Proctor a IP   3.06.2003, 22:52:02
- - Project   Nic nowego... polecam zajrzec do manuala http://p...   4.06.2003, 10:05:45
- - spenalzo   Ja wiem, że to są zmienne serwera, ale chodzi mi o...   4.06.2003, 17:25:35
- - FiDO   Sorki, ze odrzewam, ale przypadkiem znalazlem Cy...   23.08.2003, 21:58:39
- - adwol   CytatJa wiem, że to są zmienne serwera, ale chodzi...   24.08.2003, 00:14:19
- - adwol   CytatAha.. bylbym wdzieczny jakby ktos mi napisal ...   24.08.2003, 00:15:44
- - xeonderator   Re: Proctor a IP   24.08.2003, 09:08:39
- - orson   witam ... jak chcecie sobie poogladac wszystki mo...   24.08.2003, 09:50:48
- - adwol   Cytatwitam ... jak chcecie sobie poogladac wszyst...   24.08.2003, 11:39:00
- - FiDO   CytatCytatAha.. bylbym wdzieczny jakby ktos mi nap...   24.08.2003, 20:55:16
- - orson   witam CytatKtos mnie przebije? ja !! <? phpi...   24.08.2003, 21:28:26
- - FiDO   Ejj... ale miedzy wierszami bylo napisane, ze w ph...   24.08.2003, 21:47:42
- - kurtz   hejCytatCytatKtos mnie przebije?ja !! <? phpin...   25.08.2003, 09:21:14
- - FiDO   skubany...   26.08.2003, 07:21:01
- - spenalzo   CytatJaki sens ma porównywanie pierwszego członu R...   26.08.2003, 21:53:16
- - kubatron   dosyć to ciekawe lecz mało praktyczne i niedopraco...   10.09.2003, 16:33:24
- - orson   witam ... i te skrypty napisane skryptem na stron...   10.09.2003, 17:28:38
- - spenalzo   Cytatdosyć to ciekawe lecz mało praktyczne i niedo...   10.09.2003, 18:33:00
- - kubatron   to niewidzisz co pisze napisałem że ten skrypt moż...   11.09.2003, 13:40:29
- - spenalzo   Cytatto niewidzisz co pisze napisałem że ten skryp...   11.09.2003, 13:43:38
- - orson   witam Cytatto niewidzisz co pisze napisałem że t...   11.09.2003, 14:41:04
- - delorian   A ja napisałem skrypt, który potrafi obejść Procto...   12.09.2003, 18:06:01
- - adwol   CytatA ja napisałem skrypt, który potrafi obejść P...   12.09.2003, 22:36:18
- - delorian   CytatSkrypt można w łatwy sposób oszukać. Prosze ...   12.09.2003, 22:52:25
- - adwol   CytatProsze o przykład. Używając oczywiście samego...   12.09.2003, 23:19:01
- - delorian   Jeśli ktoś podrasowywałby proctora, żeby obejść mó...   12.09.2003, 23:37:23
- - stal-sw   No wiec z tym skrpytem jak i moim ktorego uzywam j...   1.04.2004, 15:15:03
- - Ozzy   a sprawdźcie jak sobie radzi coś takiego: http://p...   2.04.2004, 07:58:31
- - voytar   Ozzy: udostepnisz swoj skrypt? jako jedyny z tego...   2.04.2004, 12:43:27
- - Ozzy   to nie mój nawet, ale pokazać mogę;) <?php ...   2.04.2004, 16:20:26
- - v1ru5   To niech ktoś wyśle żądanie o stronę przez to http...   18.02.2008, 11:27:42


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 13:39