今天给大家分享几个脚本,看看如何收集全网whois信息。首先了解一下whois.py这个基本程序。
whois程序
首先看一下程序的执行结果,如图:
看到结果之后我们大概讲一下原理,这个程序是根据linux下的whois程序来写的,其中有一个重要的文件:
config.cnf
这里的内容是不同的A段所属的whois服务器,截取部分如图:
程序关键函数
读取配置文件,将配置文件中的内容初始化到字典中:
获取参数,返回查询这个IP需要的whois服务地址:
def getWhoSrv(ip): key = ip.split(".")[0] return configdrct[key]
查询IP的whois信息:
如何获取全网whois信息
我的思路是通过输入一个初始IP,如:1.0.0.1,结果如图:
图中红色标注的地方有个IP段,获取其末尾IP然后加一,成为下一轮的whois参数,依次类推,就可以获取到全网的whois信息,由于不同的whois服务器返回的结果格式不尽相同,所以想要做的好,需要对不同的whois服务器返回的结果用不同的方式解析。
程序关键函数
有了基础whois程序后,第一步是要解析出结果中的IP段
我写的这个还是比较粗糙的,写了一个简单的正则来匹配IP段,其实大家可以根据不同的whois服务器来使用不同的函数解析出IP地址。我们看到上面的代码中有一个函数getSmallIpRange,这个函数的由来,是因为有些IP的whois结果中会有两个所属IP段,为了获取的更加准确,所以就选择范围比较小的IP段作为下一次whois的参数。具体实现如下:
还有一个关键函数是获取下一个whois的IP
到这里,关键的函数部分就解释的差不多了,想要看源码的可以点击原文链接查看,写的比较粗糙,大家凑和看看。
总结
这里大概讲了一下我是如何收集全网whois信息的,在freebuf上有个文章,说是可以下载whois信息,连接如下:
http://www.freebuf.com/articles/network/107372.html
大家可以看看,我下载过这些看了下,有些东西被打马了,所以就没有用他的。
大家还有什么好的建议或者意见请留言。