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

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


源码和编译好的exe都在压缩包里面,exe用upx压缩了一下,编译系统是win10x64,32位系统可能用不了
解压密码:90sec
aliyundbburst.zip (1.3 MB)

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

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

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

麻烦加个cs shellcode,谢谢

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

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

#!/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脚本可以但是还是要自己处理,相当于没用。

# 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文件方便进一步筛选目标。 明天试试看看能不能pass出反向代理的和cdn的ip。

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

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

1 个赞

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

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

# 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()

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

Excel 删除重复值 一个不留

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

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

1分钟内也没出到结果啊

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

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

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