IP-Domain映射关系


前言:

一般情况,ping域名可以获得ip地址,但是通过ip地址很多时候是没有办法获得对应域名,尤其是在判断虚拟主机的情况下,往往需要知道一个ip上绑定的所有域名列表。

早年都是利用bing的服务,直接输入ip:地址,即可获得bing收录的该ip对应的所有域名信息。但是bing已经将接口,进行了处理,需要注册、登录才能使用对应的api,还有次数限制,非常麻烦。因此,想做一个自己的api,功能很简单,输入ip,获得对应的所有域名信息。即:

功能1:

输入:IP

输出: ip对应的所有域名列表

对一个域名进行渗透测试,往往是收集其子域名,寻找最弱的薄弱站点,因此对一个域名的所有子域名收集,是非常有帮助的,因此功能2:

输入:域名

输出: 该域名所有的子域名信息

设计:

利用有限资源处理大数据,基本思想,大数据化小,分而治之

  1. 收集所有的域名列表,包括网络和自身抓取过的
  2. 将域名遍历一遍,取域名主域名为key(过滤掉无效域名),多级域名为value,输入到bsddb中存储
  3. 遍历数据库中主域名,取出所有子域名 和 子域名列表进行并操作,生成待判断ip的域名列表,加入到队列中
  4. 整合https://github.com/ring04h/wydomain/blob/wydomain2/dnsburte.py 实现完全自动化探测,将结果保存到文件中
  5. 整个扫描结束后,将ip和域名对应关系,域名和子域名对应关系,分别保存到两个bsddb数据库中,ip由于列表较大,可能分为255个数据库
  6. 更新api接口的数据库指向,完成自动切换到最新数据库
  7. goto 1 进行循环抓取

    进行中:

    一、整理目前的所有域名列表(ok)

    F:\share

    提取两部分域名,为最终所有的域名列表,保存到文本文件中(ok)

    二、域名遍历
    去掉重复域名

    将子域名

将域名和ip关系遍历一遍 保存地址 f:\ip\domain下面

分两部分,ip列表 放到 f:\iplist 下每个ip1为一个文件,保存根据ip存储的信息,后期会做成根据ip找域名功能

   f:\alldomain\alldomaindb.db

  f:\alldomain\newdb.db

  保存以域名\\(反序\\)为key的记录信息,主要为子域名服务。最终保存成,主域名为key,子域名为value形式,主要作为子域名查询功能

详细设计:

  1. 输入文件夹 input,每个文件每行一个有效的域名

  2. 功能1:遍历input,读完每个文件每行,1kw条记录为一个bsddb文件存储(dbfiles),包括去重,和域名反序为key保存,对域名实现初步去重,更加快速

  3. 功能2:遍历dbfiles 分别从每个db取一个域名,获得最小主域名(注意反序), 依次读取其它db文件该域名的子域名或主域名,(类似外部排序), 直到获得当前域名所有子域名为止,

  4. 功能3:当前域名子域名列表和扫描域名的子域名列表,生成当前域名待扫描域名完整域名列表送入扫描队列,等待扫描

  5. 功能4:开始多线程,获得域名对应ip地址,结果为每个ip,域名 一行的文件

  6. 功能5: 结果文件进行处理,ip分别存入iplist文件夹下,每个ip1为文件名,域名每1kw 反序存入一个db文件(dbfiles)

  7. 功能6:将iplist下文件生成本次的ip查询域名库,将dbfiles 下文件存入db,作为本次域名查询子域名的db文件list goto3

参考文献:

Top3000子域名

http://www.219.me/posts/2822.html

子域名暴力破解

https://github.com/ring04h/wydomain

dnspython python查询dns库

http://blog.csdn.net/u013246898/article/details/51999975

results matching ""

    No results matching ""