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>";

?>