GVKT站点域名/IP侦察器-结合云API

GVKT站点域名/IP侦察器

GVKT是一个开源项目,作者倾旋。

该工具结合了Bing接口和本地DNS解析器、MySQL数据库等服务实现了对域名的子域名爆破、结果存储、分析。
此工具开发的初衷就是方便Linux下渗透测试,针对结果去分析目标网络架构。
可以从数据库调用之前扫描的结果
目前主要做了API这一块

一、运行环境

  • python3.x以上(Linux)
  • 后续将采用本地数据来存储网络扫描结果(MySQL 5.X)
  • 客户机必须联网

二、加载步骤

  1. 判断是否连接数据库
  2. 接收命令行参数
  3. 判断必须参数
  4. 获取必须参数值
  5. 判断参数且执行动作

三、具备功能

  • 获取站点IP
  • 获取子域名
  • 查询旁站
  • 条件保存 单独获取IP | 域名 存储数据库 | 文本
  • 查询IP段内网站

四、参数说明

help.png
  • [+] --update 从远程服务器下载最新字典到本地
  • [+] --domain|t|target=0nlis.com 调用本地字典爆破
  • [+] --domain=0nlis.com --dic=/usr/share/gvkt_scan/dic.txt 调用本地任意位置字典
  • [+] --add=new_dic --name=提交者名称

五、 爆破演示

爆破ALIYUN:


creak.png

更新字典:

update.png

-u --update都可以,单开关参数,很方便!!

提交新词:

submit.png

目前服务器已经有将近三千条词典:

number.png

六、 扩展API接口

七、 关于我

我将在后期着重开发此工具的插件,使其支持数据库保存,报告生产,目标探测,若有机会,将会结合其他开源扫描工具完成扫描任务。 感谢支持,我的邮箱 payloads#aliyun.com

八 、 开源一下

import socket
import urllib.request
import urllib.parse
import os
import sys
import getopt
import json

class Scaner:
    def __init__(self):
        pass
    def local_scan(self,target,dic_path=None):
        try:
            scan_log = []
            fp=open(dic_path,'r')
        except:
            print('[-]The dic cant read...')
            sys.exit(0)
        for start in fp.readlines():
                start = start.replace('\n','')
                domain = start+'.'+target
                print("[+]Try to %s\r"%domain,)
                result = self.sock_dns(domain)
                if not result == None:
                    scan_log.append(result)
                    print('[+]'+result)
        fp.close()
        path_index = dic_path.rfind('/')
        try:
            fp = open(dic_path[0:path_index]+'/'+target+'.log','w+')
        except:
            print('[-]Can not create scan log.')
            sys.exit(0)
        for x in scan_log:
            fp.write(x+"\n")
        print('[+]scan log save to : '+dic_path[0:path_index]+'/'+target+'.log')
        fp.close()
        sys.exit(0)
    def http_request(self,url,method,data):
        url = url+'?'+urllib.parse.urlencode(method)+'&'+urllib.parse.urlencode(data)
        req = urllib.request.urlopen(url)
        print("[+]"+url)
        if req.getcode()==200:
            print('[+]New Dictionary is '+data['domain'])
            print('[+]Dictionary submited success ! Thank You '+data['user'])
            sys.exit(0)
        else:
            print(req.info())
            print('[-]Dirctionary Submited error!!')
            sys.exit(0)
    def sock_dns(self,domain):
        try:
            host = socket.gethostbyname(domain)
        except:
            pass
            return None
        return domain+' => '+host
# dic_list 字典列表
config = {'url':'http://0nlis.com/api.php','local':'/usr/share/gvkt_scan/','save_name':'dic.txt'}
method = {'method':None}
target = {'target':None,'dic':None}
new_dic ={'user':None,'domain':None}
opts,args = getopt.getopt(sys.argv[1:],"hvut:d:",["help","version","update","target=","add=","name=","dic="])
for op1,op2 in opts:
    if op1 in ("-h","--help"):
       print("""
  '#'   -------------------------
#.   .#   \033[1;31;40m GVKT - SCAN DOMAIN \033[0;m
'#.   .#'  ===================
 /'#.  .#'   .#'\   \ %^ oO8
 _\\'#.   .#'//_  #'.  Oo o8O  Oo%
  (########'#'(___))) $ oO' #. oO
[+]--update | Connect to Could API get new dic.
[+]--domain 0nlis.com --dic /root/dic/domain.dic | Read local dic to blast domain
[+]--domain 0nlis.com       | Read local default dic to blast domain
[+]--add manager --name GVKT | Sumbit new dic to remote server
[+]--version | Show version
        """);sys.exit(0)
    if op1 in ("-v","--version"):
        print("""
  '#'   -------------------------
#.   .#   \033[1;31;40m GVKT - SCAN DOMAIN \033[0;m
'#.   .#'  ===================
 /'#.  .#'   .#'\   \ %^ oO8
 _\\'#.   .#'//_  #'.  Oo o8O  Oo%
  (########'#'(___))) $ oO' #. oO

Version : GVSCAN/0.1
""");sys.exit(0)
    if op1 in ("-u","--update"):
        print('[+]Update GVSCAN ....')
        method['method']='dic_list'
        try:
            req = urllib.request.urlopen(config['url']+'?'+urllib.parse.urlencode(method))
            print("[+]Content to "+req.geturl())
        except:
            print("\033[1;31;20m[-]The host can not connect ...\033[0m")
            sys.exit(0)
        print("\033[1;32;20m[+]Get dict success !!! Please waite make new dict...\033[0m")
        if(not os.path.exists(config['local'])):
            os.mkdir(config['local'])
        print('[+]DIR IS :'+config['local']+config['save_name'])
        fp = open(config['local']+config['save_name'],'w+')
        datas = req.readlines()
        for x in datas:
            fp.writelines(x.decode('utf8'))
        fp.close()
        print("[+]Update success !!!")
        sys.exit(0)
    if op1 in ("-t","--target"):
        target['target'] = op2
    if op1 in ("-d","--dic"):
        target['dic']  = op2
    if op1 in ("-a","--add"):
        new_dic['domain']  = op2
    if op1 in ("-n","--name"):
        new_dic['user'] = op2
scan = Scaner()
if not target['target'] == None:
    if not target['dic']==None:
        scan.local_scan(target['target'],target['dic'])
    else:
        scan.local_scan(target['target'],config['local']+config['save_name'])
if new_dic['domain']!= None and new_dic['user']!=None:
    method['method']='input'
    scan.http_request(config['url'],method,new_dic)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,056评论 25 707
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,569评论 2 57
  • 俗话说得好,你不是风儿我也不是沙,再缠绵也到不了天涯,放下那些不能帮助你前行的过去,现实是什么呢?现实就...
    百里长文阅读 648评论 1 4
  • 急切的想做出一个网页的我,在折腾了一天的bootstrap框架后的感想。 bootstrap框架是用class选择...
    东到西歪阅读 212评论 0 1