APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的!下面就让我们看看如何在Linux下获得一 些电信运营商的IP地址分配情况:
完 成上述编译安装工作后,我们开始获取IP地址段;
中国网通:
中 国电信:
中国铁通:
打 开获取后的文件可以看到里面的信息非常详细,甚至可以看到各个分公司的负责人、电话、电子邮件等等信息。如果想得到一份整齐干净的IP地址段文件,只要用 grep和awk简单过滤就可以了。
cnc,chinanet,Railcom
"""
import sys,math
_r_f=sys.argv[1]
def main():
rfp=open(sys.argv[1],'r')
_now_line=1
for line in rfp:
if line.find('inetnum:') == 0:
_now_line=_now_line+1
wtof(line)
elif line.find('route:') == 0:
_now_line=_now_line+1
print line.split(':')[1].split()[0]+str(";")
def mlen(cha):
m=8
while(m>0):
if math.pow(2,m) <= cha:
return 8-m
else:
m=m-1
def wtof(line):
_start=line.split(':')[1].split()[0]
_end=line.split(':')[1].split()[2]
i,mask=0,0
while(i<4):
if _start.split('.')[i] == _end.split('.')[i]:
i=i+1
else:
mask=i*8
_cha=int(_end.split('.')[i]) - int(_start.split('.')[i]) + 1
_vmlen=mlen(_cha)
mask=mask + _vmlen
i=i+1
print _start[0:]+"/"+str(mask)+str(";")
return(0)
if __name__ == "__main__":
main()
#!/bin/bash
FILE=./ip_apnic
rm -f $FILE
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
echo $ip:$cnt
mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt)
EOF)
echo $ip/$mask>> cn.net
NETNAME=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*: \(.*\)/\1/g' | sed -e 's/-.*//g'`
NETNAME=`echo $NETNAME | sed -e 's/cJ/ /g' | awk -F' ' '{ printf $1; }'`
case $NETNAME in
CNC)
echo $ip/$mask >> CNCGROUP
;;
CHINANET|CNCGROUP)
echo $ip/$mask >> $NETNAME
;;
CHINATELECOM)
echo $ip/$mask >> CHINANET
;;
*)
echo $ip/$mask >> OTHER
;;
esac
done
wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz
tar xzvf ripe-dbase-client-v3.tar.gz
cd whois-3.1
./configure
make
tar xzvf ripe-dbase-client-v3.tar.gz
cd whois-3.1
./configure
make
完 成上述编译安装工作后,我们开始获取IP地址段;
中国网通:
./whois3 -h whois.apnic.net -l -i mnt-by MAINT-CNCGROUP > /var/cnc
中 国电信:
./whois3 -h whois.apnic.net -l -i mnt-by MAINT-CHINANET > /var/chinanet
中国铁通:
./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CRTC > /var/crtc
打 开获取后的文件可以看到里面的信息非常详细,甚至可以看到各个分公司的负责人、电话、电子邮件等等信息。如果想得到一份整齐干净的IP地址段文件,只要用 grep和awk简单过滤就可以了。
其中已经包括了全国电信级网通和铁通IP地址分配段
[广东ip段北京网通ip段,辽宁ip段,网通ip段北京ip段,电信 ip段,浙江ip段,湖南ip段,广东电信ip段,浙江电信ip段,中国ip段,山东网通ip段,山东ip段,广州ip段,福建ip段,上海电信ip段, 铁通ip段,广西ip段,
太原ip段,辽宁网通ip段,北京电信ip段,adsl ip段,广东省ip段,河北ip段,黑龙江网通ip段,上海ip段,山西ip段,四川ip段,江西ip段,
河北网通ip段,四川电信ip段,广州 电信ip段,广西电信ip段,广东电信adsl的ip段,服务器ip段,地区ip段,中国网通ip段,联通ip段,公网ip段,成都ip段,河南ip段, 厦门ip段,
大连ip段,贵州ip段,陕西ip段,广州adsl ip段,济南ip段,电信adsl ip段,福州的ip段,河南网通ip段,黑龙江ip段,山东省ip段,四川网通ip段]
国外IP段如[美国ip段,韩国ip段,,日本 ip段,最新美国ip段,日本的ip段,]请到http://ftp.apnic.net/ 上查询
#!/usr/bin/python
cnc,chinanet,Railcom
"""
import sys,math
_r_f=sys.argv[1]
def main():
rfp=open(sys.argv[1],'r')
_now_line=1
for line in rfp:
if line.find('inetnum:') == 0:
_now_line=_now_line+1
wtof(line)
elif line.find('route:') == 0:
_now_line=_now_line+1
print line.split(':')[1].split()[0]+str(";")
def mlen(cha):
m=8
while(m>0):
if math.pow(2,m) <= cha:
return 8-m
else:
m=m-1
def wtof(line):
_start=line.split(':')[1].split()[0]
_end=line.split(':')[1].split()[2]
i,mask=0,0
while(i<4):
if _start.split('.')[i] == _end.split('.')[i]:
i=i+1
else:
mask=i*8
_cha=int(_end.split('.')[i]) - int(_start.split('.')[i]) + 1
_vmlen=mlen(_cha)
mask=mask + _vmlen
i=i+1
print _start[0:]+"/"+str(mask)+str(";")
return(0)
if __name__ == "__main__":
main()
#!/bin/bash
FILE=./ip_apnic
rm -f $FILE
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
echo $ip:$cnt
mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt)
EOF)
echo $ip/$mask>> cn.net
NETNAME=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*: \(.*\)/\1/g' | sed -e 's/-.*//g'`
NETNAME=`echo $NETNAME | sed -e 's/cJ/ /g' | awk -F' ' '{ printf $1; }'`
case $NETNAME in
CNC)
echo $ip/$mask >> CNCGROUP
;;
CHINANET|CNCGROUP)
echo $ip/$mask >> $NETNAME
;;
CHINATELECOM)
echo $ip/$mask >> CHINANET
;;
*)
echo $ip/$mask >> OTHER
;;
esac
done