Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Можно ли обойти этот фильтр? (https://forum.antichat.xyz/showthread.php?t=458941)

MotherHacker 22.12.2017 02:02

PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]public function[/COLOR][COLOR="#0000BB"]GetUserIp[/COLOR][COLOR="#007700"](){

if
([/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]UserIP[/COLOR][COLOR="#007700"]==[/COLOR][COLOR="#DD0000"]"Undefined"[/COLOR][COLOR="#007700"]){

if
(isset([/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'HTTP_X_FORWARDED_FOR'[/COLOR][COLOR="#007700"]]) AND !empty([/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'HTTP_X_FORWARDED_FOR'[/COLOR][COLOR="#007700"]]))
{

[/COLOR][COLOR="#0000BB"]$client_ip[/COLOR][COLOR="#007700"]= ( !empty([/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REMOTE_ADDR'[/COLOR][COLOR="#007700"]]) ) ?[/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REMOTE_ADDR'[/COLOR][COLOR="#007700"]] : ( ( !empty([/COLOR][COLOR="#0000BB"]$_ENV[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REMOTE_ADDR'[/COLOR][COLOR="#007700"]]) ) ?[/COLOR][COLOR="#0000BB"]$_ENV[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REMOTE_ADDR'[/COLOR][COLOR="#007700"]] :[/COLOR][COLOR="#DD0000"]"unknown"[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$entries[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]split[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'[, ]'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'HTTP_X_FORWARDED_FOR'[/COLOR][COLOR="#007700"]]);

[/
COLOR][COLOR="#0000BB"]reset[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$entries[/COLOR][COLOR="#007700"]);

while
(list(,[/COLOR][COLOR="#0000BB"]$entry[/COLOR][COLOR="#007700"]) =[/COLOR][COLOR="#0000BB"]each[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$entries[/COLOR][COLOR="#007700"]))
{
[/
COLOR][COLOR="#0000BB"]$entry[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]trim[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$entry[/COLOR][COLOR="#007700"]);
if ([/COLOR][COLOR="#0000BB"]preg_match[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$entry[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$ip_list[/COLOR][COLOR="#007700"]) )
{

[/COLOR][COLOR="#0000BB"]$private_ip[/COLOR][COLOR="#007700"]= array(
[/
COLOR][COLOR="#DD0000"]'/^0\./'[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]'/^127\.0\.0\.1/'[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]'/^192\.168\..*/'[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/'[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]'/^10\..*/'[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]$found_ip[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]preg_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$private_ip[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$client_ip[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$ip_list[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]]);

if
([/COLOR][COLOR="#0000BB"]$client_ip[/COLOR][COLOR="#007700"]!=[/COLOR][COLOR="#0000BB"]$found_ip[/COLOR][COLOR="#007700"])
{
[/
COLOR][COLOR="#0000BB"]$client_ip[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$found_ip[/COLOR][COLOR="#007700"];
break;
}

}

}

[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]UserIP[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$client_ip[/COLOR][COLOR="#007700"];
return[/COLOR][COLOR="#0000BB"]$client_ip[/COLOR][COLOR="#007700"];

}else return ( !empty([/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REMOTE_ADDR'[/COLOR][COLOR="#007700"]]) ) ?[/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REMOTE_ADDR'[/COLOR][COLOR="#007700"]] : ( ( !empty([/COLOR][COLOR="#0000BB"]$_ENV[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REMOTE_ADDR'[/COLOR][COLOR="#007700"]]) ) ?[/COLOR][COLOR="#0000BB"]$_ENV[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REMOTE_ADDR'[/COLOR][COLOR="#007700"]] :[/COLOR][COLOR="#DD0000"]"unknown"[/COLOR][COLOR="#007700"]);

}else return[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]UserIP[/COLOR][COLOR="#007700"];

}[/COLOR][/COLOR



Время: 02:24