# 阿里云外网数据库地址查询工具

**URL:** <https://forum.90sec.com/t/topic/1914>\
**Category:** 工具资源\
**Created:** [2021 年11 月 5 日 13:33 UTC](https://forum.90sec.com/t/topic/1914 "2021-11-05T13:33:08Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

作者： ![6time](https://forum.90sec.com/user_avatar/forum.90sec.com/6time/32/5194_2.png) [@6time](https://forum.90sec.com/u/6time)\
发布日期： [2021 年11 月 5 日 13:33 UTC](https://forum.90sec.com/t/topic/1914/1 "2021-11-05T13:33:08Z")

</div>

没啥好讲的，发现大家都由python转go了，自己最近也在学，所以根据文章  
[实战过程中关于阿里云数据库连接问题 - 技术文章 - 90Sec](https://forum.90sec.com/t/topic/1872)  
写的一个小工具练练手，目前没有支持批量功能，按文章方法实测了几个，最快几秒，最多1分钟出结果（这种就是目标地址已经不存在了）

 ![阿里云外网数据库地址查询](https://forum.90sec.com/uploads/default/original/2X/a/af2c5aa5623654839bda5022a36ae7a69091b93f.png)  
源码和编译好的exe都在压缩包里面，exe用upx压缩了一下，编译系统是win10x64，32位系统可能用不了  
解压密码：90sec  
[aliyundbburst.zip](https://forum.90sec.com/uploads/short-url/xtzLl3OfxMtfMq777aGxvJvcSqh.zip) (1.3 MB)

---

<div class="post-metadata">

作者： ![BLUE](https://forum.90sec.com/letter_avatar_proxy/v4/letter/b/3bc359/32.png) [@BLUE](https://forum.90sec.com/u/BLUE)\
发布日期： [2021 年11 月 5 日 14:17 UTC](https://forum.90sec.com/t/topic/1914/2 "2021-11-05T14:17:06Z")

</div>

ping 都出来的东西 我好奇为什么要写一个工具呢？

---

<div class="post-metadata">

作者： ![6time](https://forum.90sec.com/user_avatar/forum.90sec.com/6time/32/5194_2.png) [@6time](https://forum.90sec.com/u/6time)\
发布日期： [2021 年11 月 5 日 14:30 UTC](https://forum.90sec.com/t/topic/1914/3 "2021-11-05T14:30:55Z")

</div>

1、自己最近学go，写一下练练手。2、减轻测试操作步骤。

---

<div class="post-metadata">

作者： ![Admin\_Poker](https://forum.90sec.com/letter_avatar_proxy/v4/letter/a/ba8739/32.png) [@Admin\_Poker](https://forum.90sec.com/u/Admin_Poker)\
发布日期： [2021 年11 月 17 日 02:03 UTC](https://forum.90sec.com/t/topic/1914/4 "2021-11-17T02:03:59Z")

</div>

大哥大哥，这打包的exe，里面有马没，没马我不点啊

---

<div class="post-metadata">

作者： ![Admin\_Poker](https://forum.90sec.com/letter_avatar_proxy/v4/letter/a/ba8739/32.png) [@Admin\_Poker](https://forum.90sec.com/u/Admin_Poker)\
发布日期： [2021 年11 月 17 日 02:04 UTC](https://forum.90sec.com/t/topic/1914/5 "2021-11-17T02:04:12Z")

</div>

麻烦加个cs shellcode，谢谢

---

<div class="post-metadata">

作者： ![6time](https://forum.90sec.com/user_avatar/forum.90sec.com/6time/32/5194_2.png) [@6time](https://forum.90sec.com/u/6time)\
发布日期： [2021 年11 月 17 日 02:16 UTC](https://forum.90sec.com/t/topic/1914/6 "2021-11-17T02:16:24Z")

</div>

害怕就拿源码自己编译一下，顺便可以添个批量功能，没有cs，干用

---

<div class="post-metadata">

作者： ![82303224](https://forum.90sec.com/letter_avatar_proxy/v4/letter/8/bbe5ce/32.png) [@82303224](https://forum.90sec.com/u/82303224)\
发布日期： [2022 年6 月 9 日 14:11 UTC](https://forum.90sec.com/t/topic/1914/7 "2022-06-09T14:11:15Z")

</div>

我觉得还可以改进下 如果数据库不让ping的时候 取值address，用python脚本也可以。

```nohighlight
#!/usr/bin/env python
#coding:utf-8

from socket import gethostbyname
DOMAIN= "url.txt"

with open(DOMAIN,'r') as f:

     for line in f.readlines():
        try:
            host = gethostbyname(line.strip('\n')) #域名反解析得到的IP
        except Exception as e:
            with open('error.txt','a+') as ERR: #error.txt为没有IP绑定的域名
                ERR.write(line.strip()+ '\n')
        else:
            with open('result.txt','a+') as r: #result.txt里面存储的是批量解析后的结果
                r.write(line.strip('\n') + ' ') #显示有ip绑定的域名，用空格隔开
                r.write(host + '\n')

```

现在遇到个问题就是处理  
子域名域名中出现一个多个解析ip，反向代理和cdn要去掉，  
有python脚本可以但是还是要自己处理，相当于没用。

```nohighlight
# BY KinFang
import os
import csv
import subprocess

file = './domain.txt'
# dst_file = 'd:/domain_result.txt'
dst_file = './domain_result.csv'

# 去重
def DeDuplication(old_list):
    new_list = [list(t) for t in set(tuple(_) for _ in old_list)] # 将源列表转换成集合，去重
    # print(new_list)
    sorted_list = sorted(new_list)
    with open(dst_file, 'w', encoding='utf-8', newline='') as f:
        csvwrite = csv.writer(f)
        csvwrite.writerows(sorted_list)

def find_domain(domain, result_list):
    if dns == '':
        ret = subprocess.getoutput(f'nslookup {domain}')
    else:
        ret = subprocess.getoutput(f'nslookup {domain} {dns}')
    lst = ret.split('\n') # str转为list
    # print(lst)

    for item in lst[6:]: # 从第7个元素开始循环
        if item.startswith('Aliases'): # 循环到列表中的Aliases开头就停止循环
            break
        else:
            if item.startswith('Address') or item.startswith('\t'): # 匹配ip地址，有以address开头，有以\t开头
                if 'Address' in item:
                    newline = item.split(': ')[1].strip()
                else:
                    newline = item.split(': ')[0].strip()
                result_list.append([domain] + [newline])

def readconfig(result_list):
    with open(file, 'r', encoding='utf-8') as f:
        for line in f:
            if line.startswith('#'):
                continue
            new_line = line.strip()
            find_domain(new_line, result_list)

def main():
    result_list = []
    # 读取域名文件
    print('-' * 30)
    print(f'每个域名将执行{num}遍')
    print('-'*30)
    for i in range(1, num + 1):
        print(f'第{i}遍开始执行...')
        readconfig(result_list)
    # print(result_list)
    print('-' * 30)
    print('结果处理中...')
    print('-' * 30)
    # 对数据进行去重
    DeDuplication(result_list)

if __name__ == ' __main__':
    if not os.path.exists(file):
        print('domain.txt文件不存在，请先创建文件')
        os.system('pause')
        exit()
    for i in range(3):
        try:
            dns = input('请输入DNS地址（不输入将采用本机默认DNS）：').strip()
            num = input('输入需要循环几次（默认3次）：').strip()
            if num == '':
                num = 3
            else:
                num = int(num)
            main()
            print('执行完成!!!')
            print()
            break
        except:
            print('输入有误，请重输！')
    os.system('pause')
    exit()

```

这个批量解析子域名 [GitHub - StudyCat404/domain2ip: 批量解析子域名，获取IP地址、所在地、ISP、ASN网段、ASN描述信息、简单端口扫描、尝试获取HTTP状态码、httpserver及网页标题，并保存到csv文件方便进一步筛选目标。](https://github.com/StudyCat404/domain2ip) 明天试试看看能不能pass出反向代理的和cdn的ip。

---

<div class="post-metadata">

作者： ![6time](https://forum.90sec.com/user_avatar/forum.90sec.com/6time/32/5194_2.png) [@6time](https://forum.90sec.com/u/6time)\
发布日期： [2022 年6 月 10 日 02:21 UTC](https://forum.90sec.com/t/topic/1914/8 "2022-06-10T02:21:47Z")

</div>

表哥试试dnspython库，指定多个不同地方的dns服务器来解析域名（A记录），还可以通过去重ip判断cdn，因为存在内网统一单ip映射，所以不能100%准确

---

<div class="post-metadata">

作者： ![6time](https://forum.90sec.com/user_avatar/forum.90sec.com/6time/32/5194_2.png) [@6time](https://forum.90sec.com/u/6time)\
发布日期： [2022 年6 月 10 日 02:24 UTC](https://forum.90sec.com/t/topic/1914/9 "2022-06-10T02:24:12Z")

</div>

工具用的dns解析来判断，因为云数据库域名属于“稀有”类型，基本不纯在复用可能性，如果存在必然有一个解析

---

<div class="post-metadata">

作者： ![82303224](https://forum.90sec.com/letter_avatar_proxy/v4/letter/8/bbe5ce/32.png) [@82303224](https://forum.90sec.com/u/82303224)\
发布日期： [2022 年6 月 10 日 02:31 UTC](https://forum.90sec.com/t/topic/1914/10 "2022-06-10T02:31:11Z")

</div>

昨天遇到一个站，数据库解析不出外网ip，之前的批处理，好像不能处理禁ping和主机关机，然后使用你的exe也没解析出来，以为哪里出了问题，  
看了一下禁ping也没有问题。

整好又有任务：需要批量搞站，想过滤掉cdn和反向代理的 ip， 然后在跑ip的端口。域名只跑80和443,  
发现输入需要循环几次（默认3次） 这个脚本可以处理。

```auto
# BY KinFang
import os
import csv
import subprocess

file = './domain.txt'
# dst_file = 'd:/domain_result.txt'
dst_file = './domain_result.csv'

# 去重
def DeDuplication(old_list):
    new_list = [list(t) for t in set(tuple(_) for _ in old_list)] # 将源列表转换成集合，去重
    # print(new_list)
    sorted_list = sorted(new_list)
    with open(dst_file, 'w', encoding='utf-8', newline='') as f:
        csvwrite = csv.writer(f)
        csvwrite.writerows(sorted_list)

def find_domain(domain, result_list):
    if dns == '':
        ret = subprocess.getoutput(f'nslookup {domain}')
    else:
        ret = subprocess.getoutput(f'nslookup {domain} {dns}')
    lst = ret.split('\n') # str转为list
    # print(lst)

    for item in lst[6:]: # 从第7个元素开始循环
        if item.startswith('Aliases'): # 循环到列表中的Aliases开头就停止循环
            break
        else:
            if item.startswith('Address') or item.startswith('\t'): # 匹配ip地址，有以address开头，有以\t开头
                if 'Address' in item:
                    newline = item.split(': ')[1].strip()
                else:
                    newline = item.split(': ')[0].strip()
                result_list.append([domain] + [newline])

def readconfig(result_list):
    with open(file, 'r', encoding='utf-8') as f:
        for line in f:
            if line.startswith('#'):
                continue
            new_line = line.strip()
            find_domain(new_line, result_list)

def main():
    result_list = []
    # 读取域名文件
    print('-' * 30)
    print(f'每个域名将执行{num}遍')
    print('-'*30)
    for i in range(1, num + 1):
        print(f'第{i}遍开始执行...')
        readconfig(result_list)
    # print(result_list)
    print('-' * 30)
    print('结果处理中...')
    print('-' * 30)
    # 对数据进行去重
    DeDuplication(result_list)

if __name__ == ' __main__':
    if not os.path.exists(file):
        print('domain.txt文件不存在，请先创建文件')
        os.system('pause')
        exit()
    for i in range(3):
        try:
            dns = input('请输入DNS地址（不输入将采用本机默认DNS）：').strip()
            num = input('输入需要循环几次（默认3次）：').strip()
            if num == '':
                num = 3
            else:
                num = int(num)
            main()
            print('执行完成!!!')
            print()
            break
        except:
            print('输入有误，请重输！')
    os.system('pause')
    exit()

```

然后使用这个,得到的结果这样：

 ![1](https://forum.90sec.com/uploads/default/original/2X/e/ea1ec275a2239862ee097e451524f933c27b64a5.png)

# Excel 删除重复值 一个不留

假设你的数据在A列  
在B1输入公式  
=if(countif(a:a,a1)\>1,"删除","")  
双击B1右下角的实心小黑点完成全列填充  
选择AB两列后按B列排序,把要删除的排在一起,批量删除掉即可

这个能处理掉，结果成这样。

 ![2](https://forum.90sec.com/uploads/default/original/2X/a/aa68582ecca6224b6d3eadebb3b311e4c98c45c1.png)

 ![3](https://forum.90sec.com/uploads/default/original/2X/1/16c1b7f65f4c555a941b6782da7ef750585351c7.png)

---

<div class="post-metadata">

作者： ![Manhin](https://forum.90sec.com/letter_avatar_proxy/v4/letter/m/a183cd/32.png) [@Manhin](https://forum.90sec.com/u/Manhin)\
发布日期： [2022 年6 月 22 日 07:32 UTC](https://forum.90sec.com/t/topic/1914/11 "2022-06-22T07:32:56Z")

</div>

1分钟内也没出到结果啊

---

<div class="post-metadata">

作者： ![6time](https://forum.90sec.com/user_avatar/forum.90sec.com/6time/32/5194_2.png) [@6time](https://forum.90sec.com/u/6time)\
发布日期： [2022 年7 月 12 日 03:21 UTC](https://forum.90sec.com/t/topic/1914/12 "2022-07-12T03:21:11Z")

</div>

那就是没有，表哥，而且没用多线程，可以自己改改

---

<div class="post-metadata">

作者： ![SYN](https://forum.90sec.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@SYN](https://forum.90sec.com/u/SYN)\
发布日期： [2022 年8 月 9 日 04:15 UTC](https://forum.90sec.com/t/topic/1914/13 "2022-08-09T04:15:10Z")

</div>

同在学go，源码可以分享吗师傅

---

<div class="post-metadata">

作者： ![6time](https://forum.90sec.com/user_avatar/forum.90sec.com/6time/32/5194_2.png) [@6time](https://forum.90sec.com/u/6time)\
发布日期： [2022 年8 月 9 日 14:33 UTC](https://forum.90sec.com/t/topic/1914/14 "2022-08-09T14:33:14Z")

</div>

源码和编译好的exe都在压缩包里面哈
