html排序按钮_插件分享 | 可进行排序扫描任务的Task Queue
前言:在以往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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 拉起服务_技术开发者应该如何构
- 下一篇: cpu序列号唯一吗_怎么看电脑硬件是不是