前言:我大概是接触 Goby 比较早的一波人,偶然间看到 Goby 很是惊艳,也幸运的被表姐拉到当时只有 9 人的 Goby中国区交流1群。白嫖了那么久也想为社区做点贡献,于是在插件功能发布后,打算写一个好玩或者很实用的插件。同时也问了亦凡大兄弟,矿泉水表哥和 Jr.D 表哥。但是构想了很久也没找到,和矿泉水表哥聊天的过程中发现表姐有在催他写插件,我这才发现,他们太过分了——都在私下里偷偷找表姐聊天!忍不住的我一顿私聊,表姐切换了多个角色(产品经理和用户)与我讨论,推荐了表哥们反馈多次的一个重量级功能需求和Shodan。考虑到自己前端小白,就定下了相对简单的 Shodan 。没想到还是遇到不小困难,不愧是Shodan。
Hikvision-Webs country:"IN" city:"Tirunelveli"
shodan download hikvision-in Hikvision-Webs country:"IN"
gzip -d hikvision-in.json.gz
0x002 开发流程
package.json
、extension.js
、fofa.html
。其中 fofa.html
增删了js,其他地方基本都是替换工作。唯一原创的工作大概是上传功能。设计思路是加载本地文件,然后按行读取(shodan下载的 json 文件是每行一条 json 数据)。本着不造轮子的思想,我在网上找了一段按行读取的代码直接拿来使用,真正写的代码大概就是调用这段 js :var lr = new LineReader();
var file = $('#shodan-files').get(0).files[0];
var totalCount = 0;
lr.on('line', function (line, next) {
singleAssert = JSON.parse(line)
results.push({
"ip_str": singleAssert.ip_str,
"port": singleAssert.port
})
htmlTable += `<tr><td>${singleAssert.ip_str}</td>
<td>${singleAssert.port}</td>
<td>${singleAssert.org}</td>
<td>${singleAssert.location.country_name}</td></tr>`
// console.log(htmlTable)
totalCount++;
if (totalCount % 10 == 0) {
$("#ip-table tbody").html(htmlTable);
}
$("#shodan-export-btn").text("导入/" + totalCount + "条")
next();
});
lr.on('error', function (err) {
console.log(err);
});
lr.on('end', function () {
$(".loading").hide();
$("#ip-table tbody").html(htmlTable);
console.log('Read complete!');
});
lr.read(file);
3. 发布
把改造后的文件压缩成 zip 后通过登录客户端上传:
提示:更新插件不是新建插件,而是通过已经发布的插件右侧小时钟图标上传新版本号。
插件开发文档:https://github.com/gobysec/GobyExtension
本文来源于互联网
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论