前言:在以往hvv场景中使用Goby的过程总是存在一个痛点:时间短,目标多,只能盯着扫描进度结束后才能手动返回到初始界面开启下一个扫描任务(内心极度狂躁)。本次Goby更新后又开放了新的插件入口点以及API,使添加扫描任务步骤简洁化,随时可以将收集到的信息添加多个任务进行排序扫描,实现一种动态持续的队列效果。

 01

 插件效果1.1 插件使用

1.2 插件入口

Goby内测版1.8.230更新后,产品界面有了新变化,在产品右侧开放了新的插件入口点:工具栏。安装完Task Queue插件之后,可以在工具栏看到插件的按钮。

1.3 操作队列

点击按钮后会打开我们的自定义弹窗,分为两个页面:一个是添加扫描任务队列的页面;一个是查看队列的页面。

Task可以查看队列中的任务详情,还可以对队列中的任务进行修改删除操作。

 02

 插件开发2.1 确定功能的入口点

入口点选择在新开放的工具栏

"contributes": {        "views": {                "toolbar":[                    {                        "command": "addTask",                        "title": "Task Queue ",                        "icon": "src/assets/img/logo2.png",                        "tips":"Task Queue"                    }                ]        }}

2.2 任务队列数据的存储

为了避免Goby重新加载插件而导致插件数据丢失,所以会在当前插件目录下创建一个data.json的文件来保存数据

fs.writeFile(this.filePath,JSON.stringify({"data":[]}, null, 6),(err)=>{}

2.3 确定实现功能需要用到的API

2.3.1 获取扫描数据

添加队列需要用户自定义扫描信息,因此需要获取Goby内置的端口信息、POC信息以及扫描序列信息,要用到getPortList,getVulnerabilityList,getOrderList

goby.getPortList().then((res)=>{    config.port = res.data;    let con = ``;    for(let i in res.data){      con += `        ${res.data[i].type}      `;     }    $('.port').html(con);    form.render('select');    $('.portcontent').val(res.data[0].value);})goby.getVulnerabilityList().then((res)=>{    let con = ``;    for(let i in res.data){       con += `            ${res.data[i]}                `;      }      $('.vulnerability').html(con);      form.render('select');})goby.getOrderList().then((res)=>{      let con = ``;      for(let i in res.data){         con += `           ${res.data[i]}         `;      }      $('.order').html(con);      form.render('select');})

2.3.2 绑定事件通知bindEvent

在扫描结束后需要开启队列中下一个任务、扫描开始/暂停以及结束后刷新页面队列数据。

这里展示暂停后刷新页面。

//因为暂停后会涉及到操作队列文件,所以延迟1秒刷新页面goby.bindEvent('onPauseScan',(res)=>{        setTimeout(()=>{            init();        },1000)    })

2.3.3 开始扫描startScan

goby.startScan(queue.data[index]).then((res)=>{     queue.data[index].taskId = res.data.taskId;     queue.data[index].state = 1;     fs.writeFile(this.filePath,JSON.stringify(queue, null, 6),(err)=>{            if(err){                 reject(err);            }else{                 resolve(res);            }      })});

2.4  业务开发

因为要在自定义弹窗页面中操作队列,所以在extension.js中声明了全局队列对象实例

window.taskQueue = new taskQueue();

taskQueue 对象上存在添加队列,删除队列,开始扫描等方法,自定义弹窗中可以通过parent.taskQueue 来获取此实例,通过 parent.goby 获取Goby对象

let goby = parent.goby;let taskQueue = parent.taskQueue;

通过taskQueue实例来操作队列

例如:删除某个任务

$('.con').delegate('.delete','click',function(){        taskQueue.delete([$(this).parent().attr('queueId')]).then(()=>{             init();        });    })

 03

 小结这次写这个任务队列插件一路坎坷,首先就是队列任务数据的保存,本来准备保存在全局变量中,可是Goby重新加载插件时数据会丢失,所以将数据保存在了本地文件中。然后就是在自定义弹窗中操作队列文件,所以全局声明了一个新的taskQueue的实例,这样在自定义弹窗页面中就可以通过parent.taskQueue对象来操作队列文件。

最后我们还计划在本插件上线二期任务——定时扫描及拖拽排序,夜深人静的时候,你只管休息,Goby就替你工作啦~ 表哥们尽情期待~

插件开发文档及Goby开发版下载:

https://gobies.org/docs.html

本次插件案例解析及用到的API在B站都有详细的教学,欢迎大家到弹幕区合影~

  • https://www.bilibili.com/video/BV1ki4y1c7hm/

更多插件分享


• Faz | 如何半天玩转一个“ES未授权利用”

• Vanilla | 可以查看摄像头快照的“Hikvision”

• 李大壮 | 可以上传json文件的“Shodan”

• go0p | 可以进行web爬虫的Xray插件

• c1o2a3 | 可以变身的超级赛亚人主题

• Bacde | 可以查询子域名及同IP域名的RapidDNS

• Poc Sir | 可对网站进行一键扫描的Packer Fuzzer

如果表哥/表姐也想把自己上交给社区,戳这里领取一份插件任务?

https://github.com/gobysec/GobyExtension/projects

html排序按钮_插件分享 | 可进行排序扫描任务的Task Queue相关推荐

  1. js获取域名ip地址_插件分享 | 可在线查询子域名和同IP域名的RapidDNS

    前言:https://RapidDNS.io 是一个秒级在线子域名和同IP域名的查询工具.目前拥有25亿条DNS记录,支持A.AAAA.CNAME.MX4种DNS记录类型.由于Goby程序对子域名收集 ...

  2. excel筛选排序从小到大_三分钟学会Excel排序功能,为你节省时间,注意收藏!...

    写在前面 为了让大家能以轻松的心态阅读文章,所以采用了模拟场景对话的方式,来分享办公软件使用心得. 小简,职场新人. 大道,有一定办公软件操作技能,乐于助人. 正文开始 本期和下期两期内容,是网友&q ...

  3. 希尔排序是一种稳定的排序算法_全面解析十大排序算法之四:希尔排序

    点击上方蓝字关注我们吧 1. 十种排序算法的复杂度和稳定性 时间复杂度:一个算法消耗所需要的时间 空间复杂度:运行一个算法所需要的内存时间 稳定性:如一个排列数组:1.4.5.6.4.7. 此时有一对 ...

  4. 合并排序算法排序过程_基本算法:合并排序

    合并排序算法排序过程 每个程序员都需要了解他们的算法和数据结构. 在研究它们时,您需要确保确切了解它的功能,时间和空间的复杂性以及采用这种方式的原因,并且不仅能够对其进行编码,而且能够手动执行. 这就 ...

  5. 9个元素换6次达到排序序列_面试题精选(排序算法类)c/c++版 上篇

    1-1排序算法专题 0 常见排序算法总结 基础排序算法: 冒泡排序.选择排序.插入排序.归并排序.希尔排序.快速排序.堆排序 建议看不懂原理说明或图示时请看代码. 1. 冒泡排序 1.1 基本思想 冒 ...

  6. java 降序排序数字_如何按降序排序ArrayList Long?

    如何按降序排序ArrayList ? 如何按降序排序Java中的ArrayList? Tamara asked 2019-08-20T11:46:41Z 12个解决方案 230 votes 这是您的C ...

  7. iframe如何发送请求_插件分享 | 如何半天玩转一个“ES未授权利用”插件

    前言:Elasticsearch服务普遍存在一个未授权访问的问题,个人最近刚好在帮某企业梳理这方面的资产,但每次都是通过Goby扫描出来后再手动访问,比较麻烦.刚好看到Goby的内测版推出了开放式的插 ...

  8. layui第三方插件引入_插件分享 | 可以进行web爬虫的Xray插件(文章末尾有福利)...

    前言:Xray有多香想必大家应该是知道的(上星期在做某演练的时候就用Xray扫到了不少洞).所以,当时看见Github上有联动Xray的需求,就尝试着写了此插件.本次讲的会稍微仔(啰)细(嗦)一点,希 ...

  9. qq分享提示设备未授权_插件分享 | 如何半天玩转一个“ES未授权利用”插件

    前言:Elasticsearch服务普遍存在一个未授权访问的问题,个人最近刚好在帮某企业梳理这方面的资产,但每次都是通过Goby扫描出来后再手动访问,比较麻烦.刚好看到Goby的内测版推出了开放式的插 ...

最新文章

  1. rpm安装文件制作和使用
  2. base64 不一致_这几项超好用的云开发扩展能力,别说你还不知道!
  3. 支持蓝牙的模拟器_横竖都能玩的小鸡G6,蓝牙连接尽情享受手游乐趣
  4. c++标准库iostream
  5. thinkpad x230 换三星 msata ssd 860 EVO
  6. 杭州电子科技大学研究生计算机科学与技术,杭州电子科技大学-硕士研究生-计算机学院 2018级计算机科学与技术(中日合作)培养方案...
  7. 如何判断万能打印机的好坏呢?
  8. B端产品的筛选场景调研与设计优化实践
  9. perl中unicode属性
  10. tilemap 导入unity_Unity2019基础教程:TileMap搭建像素画场景关卡
  11. 简单方法适配IphoneXS Iphone XR IphoneXS MAX
  12. 一键反编译安卓apk文件
  13. 教你亲手制作一个虚拟数字人,超全步骤详解
  14. NONMEN 控制文件
  15. 【zz】dpdk全面分析
  16. bt客户端linux,Ubuntu 16.04安装BT客户端Transmission 2.84
  17. 领英如何高效加好友,领英一天最多可以发送多少条消息?
  18. 欧陆战争5设备系统时间与服务器时间不一致,欧陆战争5怎么领每日任务 每日任务数量与质量攻略...
  19. sphinx语音识别(1)-基本介绍
  20. Wind River风河公司vxWorks嵌入式操作系统开发平台系列

热门文章

  1. php网站点击按钮更新程序,php页面 点击按钮执行更新操作
  2. python做些什么项目_Python 的练手项目有哪些值得推荐
  3. 5 图片 渐变_AI教程!5分钟教你绘制超酷炫的字体效果
  4. NOIP模拟测试「简单的区间·简单的玄学·简单的填数·简单的序列」
  5. Web进程被kill掉后线程还在运行怎么办?
  6. 11.【原创】chrom文件上传后,手动释放内存
  7. os sys hashlib
  8. C# 获取对象 大小 Marshal.SizeOf (sizeof 只能在不安全的上下文中使用)
  9. ls 显示目录下的内容和文件相关属性信息
  10. 利用Python进行简单的图像识别(验证码)