使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理! |
您所在的位置:网站首页 › 灯塔的定义 › 使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理! |
前言 MD!写的时候忘记记录了...现在你们看到的是我根据我的记忆来写的文章... 因为最近项目有点多,信息搜集耗时有点慢,所以想到之前用到一个工具 “ARL灯塔”!但是每次都要登陆WEB端点点点就很费时间,所以 开发 代码语言:javascript复制from re import S from cryptography.hazmat.primitives.asymmetric.ec import BrainpoolP256R1 import requests import readline import json from prettytable import PrettyTable import urllib3 from os import system, name import urllib.requestjson库就是拿来解析返回结果的,prettytable是拿来美观输出结果的,urllib3和requests就是拿来做请求的。 其他的我也忘记都是干啥的了~ 代码语言:javascript复制apikey = "ff44256c-fa2b-483f-9956-b0a84e153ade"灯塔的API请求需要一个key,这个key是在 “config-docker.yaml” 文件内配置的,然后我们把我们配置的key赋值给一个变量就好了。 代码语言:javascript复制def task(): table = PrettyTable(['任务名称', '目标地址', '当前状态', '开始时间', '结束时间', '任务ID']) headers = { 'accept': 'application/json', 'Token': apikey } ceshi = requests.get("https://IP:5003/api/task/", headers=headers, verify=False) good = ceshi.text res = json.loads(good.encode('latin-1').decode('unicode_escape')) for i in res['items']: table.add_row([i['name'],i['target'],i['status'],i['start_time'],i['end_time'],i['_id']]) else: print(table) table.clear_rows()key配置好之后我们定义一个任务列表获取功能,这里可以看到我们的任务列表,效果就是下图这样子 ![]() 灯塔的任务下发接口我感觉不如用策略下发功能,所以我这里用的是策略下发功能,策略下发需要获取策略ID! 首先我们需要新建策略: ![]() 然后我们访问:https://IP:5003/api/doc ![]() 点击右侧绿色按钮填入自己的KEY值后点击绿色按钮即可 ![]() ![]() 然后拉到最下面可以点开“策略信息“一栏,然后选择“策略信息查询“一栏,最后点击右侧灰色按钮 ![]() 不需要填写任何信息,直接点击蓝色按钮 ![]() 往下拉可以看到返回结果,"_id"参数为我们要获取的策略ID ![]() 整体功能其实就是这样完成的,其他功能自行摸索吧,剩下的就是把调用函数实现功能就好了,自行看下面的代码吧.. 代码语言:javascript复制xunhuan = 1 while xunhuan == 1: a = input("\033[1;31m>> \033[0m") if a == 'ls': task() if a == 'addfile': name = input('\033[1;34m[+] >> 任务名称:\033[0m') file = input('\033[1;34m[+] >> 目标文件:\033[0m') with open(file, 'r', encoding='utf-8') as file1: for readFile in file1: #逐行读取 add(name.encode("utf-8","ignore").decode("latin-1"), readFile) if a == 'add': print('\033[1;31m[+] 任务目标英文逗号分割!例:1.2.3.4,4.3.2.1\033[0m') print('\033[1;32m--------------------------------------------------\033[0m') name = input('\033[1;34m[+] >> 任务名称:\033[0m') target = input('\033[1;34m[+] >> 任务目标:\033[0m') add(name.encode("utf-8","ignore").decode("latin-1"), target) if a == 'c': clear() if a == 'e': break结尾 本来想做成类似MSF那样子的等待命令输入的交互式,但是没有找到相关库,也不知道怎么写,所以就写了个死循环然后输入的内容判断来实现的那种效果。 替换脚本内url地址的时候要像下图这样替换掉IP,否则可能会报错! ![]() addfile其实就是通过读取指定文件然后逐行读取循环下发任务给add函数。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |