Todos os IPs do Brasil em PHP
<?php
/*
Desenvolvido por Silvio Garbes
Em: 17/03/2015
Todos os IPs do Brasil em PHP
Exemplo do arquivo da lacnic
2|lacnic|20150316|18066|19870101|20150316|-0300
lacnic|*|ipv4|*|9609|summary
lacnic|*|ipv6|*|3528|summary
lacnic|*|asn|*|4929|summary
lacnic|AR|ipv4|24.232.0.0|65536|19970602|allocated
lacnic|TT|ipv4|64.28.128.0|4096|20000111|assigned
lacnic|DO|ipv4|64.32.64.0|16384|20010206|allocated
lacnic|AR|ipv4|66.60.0.0|16384|20001226|allocated
*/
$conteudo = file_get_contents('ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest');
$linha = explode("\n",$conteudo);
// Iniciar a leitura na linha 4
for($i=4;$i<count($linha);$i++){
$coluna = explode("|",$linha[$i]);
if(($coluna[1] == "BR") && ($coluna[2] == "ipv4")){
$mascara = (32 - log($coluna[4],2));
$ips['mascara_binaria'][] = $coluna[3]."/".$mascara;
switch ($mascara){
case ($mascara >= 24) :
$decimal = 256 - pow(2,32-$mascara);
$mascara = "255.255.255.".$decimal;
break;
case ($mascara >= 16):
$decimal = 256 - pow(2,24-$mascara);
$mascara = "255.255.".$decimal.".0";
break;
case ($mascara >= 8):
$decimal = 256 - pow(2,16-$mascara);
$mascara = "255.".$decimal.".0.0";
break;
case ($mascara >= 0):
$decimal = 256 - pow(2,8-$mascara);
$mascara = $decimal.".0.0.0";
break;
}
$ips['mascara_decimal'][] = $coluna[3]."/".$mascara;
}
}
echo "<pre>";
print_r($ips);
echo "</pre>";
?>