转:获取电信,网通,铁通APNIC权威IP数据集[PHP源程序]

本文来自死性不改的博客 http://www.clxp.net.cn 转载请保留此申明!
其实我们可以通过whois查询电信网通铁通的官方权威IP集数据现写个程序,能生成三方IP集,及自动生成路由表

把下面的程序保存为 xxx.php 然后运行 php xxx.php需要PHP的环境,FreeBSD下测试的,在WINDOWS下跑不起来。

原文地址: http://bbs.routerclub.com/thread-33346-1-1.html
        $iplist=file_get_contents(" ftp://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest");
        $ipsplit=split("[/n]+",$iplist);
        foreach($ipsplit as $val){
                if(preg_match("/apnic/|CN/|ipv4/|/",$val)){
                list($nic,$CN,$ver,$ip,$mask)=preg_split("//|/",$val);
                $iparray['set'][]=array("ip"=>$ip,"mask"=>$mask);
                }
        }
        
        foreach($iparray['set'] as $val){
                echo $val['ip']."/t".(32-log($val['mask'],2))."/n";
                $flag=GetWhois($val['ip']);
                switch($flag){
                        case "CHINANET":
                                //$fpc=fopen("CHINANET.lst","a+");
                                //fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."/n");
                                $CHINANET[]=$val['ip']."/".(32-log($val['mask'],2));
                                break;
                        case "CNC":
                                //$fpc=fopen("CNC.lst","a+");
                                //fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."/n");
                                $CNC[]=$val['ip']."/".(32-log($val['mask'],2));
                                break;
                                break;
                        case "CRTC":
                                //$fpc=fopen("CRTC.lst","a+");
                                //fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."/n");
                                $CRTC[]=$val['ip']."/".(32-log($val['mask'],2));
                                break;

                        default:        
                                //$fpc=fopen("OTHERS.lst","a+");
                                //fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."/n");
                                $OTHERS[]=$val['ip']."/".(32-log($val['mask'],2));
                                break;
                }
                
                
                        
        }
        
        //去掉重复数据
                $CHINANET = array_unique($CHINANET);
                $CNC = array_unique($CNC);
                $CRTC = array_unique($CRTC);
                $OTHERS = array_unique($OTHERS);
                
                //生成IP集表 CHINANET
                $MaxCount = count($CHINANET);
                $fpc_lst=fopen("CHINANET.lst","a+");
                $fpc_routes_rsc=fopen("CHINANET_routes.rsc","a+");
                $fpc_address_rsc=fopen("CHINANET_address.rsc","a+");
                fwrite($fpc_routes_rsc,"/ ip route rule/n");
                fwrite($fpc_address_rsc,"/ ip firewall address-list/n");
                
                for ($iCount=0;$iCount< $MaxCount;$iCount++){
                        fwrite($fpc_lst,$CHINANET[$iCount]."/n");
                        fwrite($fpc_routes_rsc,"add  dst-address=".$CHINANET[$iCount]." action=lookup table=Route_ChinaNet disabled=no/n");
                        fwrite($fpc_address_rsc,"add list=ChinaNet address=".$CHINANET[$iCount]." disabled=no/n");
                }
                
                fclose($fpc_address_rsc);
                fclose($fpc_routes_rsc);
                fclose($fpc_lst);
                
                //生成IP集表 CNC
                $MaxCount = count($CNC);
                $fpc_lst=fopen("CNC.lst","a+");
                $fpc_routes_rsc=fopen("CNC_routes.rsc","a+");
                $fpc_address_rsc=fopen("CNC_address.rsc","a+");
                fwrite($fpc_routes_rsc,"/ ip route rule/n");
                fwrite($fpc_address_rsc,"/ ip firewall address-list/n");
                
                for ($iCount=0;$iCount< $MaxCount;$iCount++){
                        fwrite($fpc_lst,$CNC[$iCount]."/n");
                        fwrite($fpc_routes_rsc,"add  dst-address=".$CNC[$iCount]." action=lookup table=Route_CNC disabled=no/n");
                        fwrite($fpc_address_rsc,"add list=CNC address=".$CNC[$iCount]." disabled=no/n");
                }
                
                fclose($fpc_address_rsc);
                fclose($fpc_routes_rsc);
                fclose($fpc_lst);
                
                
                //生成IP集表 CRTC
                $MaxCount = count($CRTC);
                $fpc_lst=fopen("CRTC.lst","a+");
                $fpc_routes_rsc=fopen("CRTC_routes.rsc","a+");
                $fpc_address_rsc=fopen("CRTC_address.rsc","a+");
                fwrite($fpc_routes_rsc,"/ ip route rule/n");
                fwrite($fpc_address_rsc,"/ ip firewall address-list/n");
                
                for ($iCount=0;$iCount< $MaxCount;$iCount++){
                        fwrite($fpc_lst,$CRTC[$iCount]."/n");
                        fwrite($fpc_routes_rsc,"add  dst-address=".$CRTC[$iCount]." action=lookup table=Route_CRTC disabled=no/n");
                        fwrite($fpc_address_rsc,"add list=CRTC address=".$CRTC[$iCount]." disabled=no/n");
                }
                
                fclose($fpc_address_rsc);
                fclose($fpc_routes_rsc);
                fclose($fpc_lst);
                
                //生成IP集表 OTHERS
                $MaxCount = count($OTHERS);
                $fpc_lst=fopen("OTHERS.lst","a+");
                $fpc_routes_rsc=fopen("OTHERS_routes.rsc","a+");
                $fpc_address_rsc=fopen("OTHERS_address.rsc","a+");
                fwrite($fpc_routes_rsc,"/ ip route rule/n");
                fwrite($fpc_address_rsc,"/ ip firewall address-list/n");
                
                for ($iCount=0;$iCount< $MaxCount;$iCount++){
                        fwrite($fpc_lst,$OTHERS[$iCount]."/n");
                        fwrite($fpc_routes_rsc,"add  dst-address=".$OTHERS[$iCount]." action=lookup table=Route_OTHERS disabled=no/n");
                        fwrite($fpc_address_rsc,"add list=ChinaNet address=".$OTHERS[$iCount]." disabled=no/n");
                }
                
                fclose($fpc_address_rsc);
                fclose($fpc_routes_rsc);
                fclose($fpc_lst);        


        function GetWhois($IP){
                $rootwhois = 'whois.apnic.net';
                $buffer1 = ReadSocket($rootwhois,$IP);
                $flag="";
                $buffer_result=nl2br($buffer1);
                if(preg_match("/CHINANET/",$buffer_result)){
                        $flag="CHINANET";
                        return $flag;
                }
                if(preg_match("/CNC/",$buffer_result)){
                         $flag="CNC";
                         return $flag;
                }
                if(preg_match("/CRTC/",$buffer_result)){
                         $flag="CRTC";
                         return $flag;
                 }
                 if(!preg_match("/CHINANET|CRTC|CNC/",$buffer_result)){
                         $flag="OTHERS";
                         return $flag;
                 }
        }
function ReadSocket($whois,$ip)
{
  $buffer = '';
  if (!$sock = fsockopen( $whois, 43, $errNum, $errStr, 20))
{
        echo "Sorry,Can't fsockopen it";
  }
  else
  {
    fputs($sock,"$ip/n");
    //$buffer = fread($sock, 8192);
    while(!feof($sock))        $buffer.=fgets($sock, 8192);
    fclose($sock);
  }
  return $buffer;
}
?>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部