Swissknife:脚本化的数据生成与篡改VSCode扩展 – 作者:Alpha_h4ck

图片[1]-Swissknife:脚本化的数据生成与篡改VSCode扩展 – 作者:Alpha_h4ck-安全小百科

关于Swissknife

Swissknife是一个脚本化的VSCode扩展,可以帮助广大研究人员生成或修改数据,并防止在Web页面中泄露敏感数据。

当前可用的脚本

Base64解码

Base64编码

二进制转文本

Bip39助记符

CSV转Markdown

字符计数

单词计数

加密货币值

日期转时间戳

椭圆曲线密钥对

生成密码

HTML编码(全部)

十六进制解码

十六进制编码

十六进制转RGB

标识哈希

JWT解码

Markdown转HTML

Md5哈希

新Swissknife脚本(JS)

新Swissknife脚本(TS)

密码长度

RGB转十六进制

RSA密钥对

随机字符串

请求获取

SHA1哈希

SHA256哈希

SHA512哈希

自签名证书

启动本地HTTP服务器

启动本地HTTPS服务器

停止HTTP服务器

文本转二进制

文本转字符串

时间戳转日期

驼峰命名

小写命名

摩斯密码

大写命名

UUIDv4

Unicode解码

Unicode编码(js格式)

Unix/Linux转人类可读

Url解码

Url编码

Url编码(所有字符)

Url缩短

Url扩展

工具使用

在Windows系统或macOS上,你可以使用ctrl+shift+9调用专用命令pallete。默认配置下,仅会对选定的文本进行转换。如果未选择任何文本,则将使用编辑器的全部内容。它支持多重选择,并将为每个选择单独运行脚本。

如果你的电脑配有Macbook Touchbar的话,也可以直接从Macbook的Touchbar调用Swissknife扩展:

图片[2]-Swissknife:脚本化的数据生成与篡改VSCode扩展 – 作者:Alpha_h4ck-安全小百科

部分脚本细节

加密货币值

使用Cryptonator的API,你可以直接转换文本内容,比如说:

1btc to eur

识别哈希

操作的结果可能返回多个值,因为来自不同算法的哈希具有相同的输出格式。我们仍然按照最相关的顺序从上到下组织哈希。

HTTPS(S)服务器

服务器会将接收到的所有请求记录到VSCode的“Output”窗口中(你可以通过进入菜单中的view->Output来查看)。然后可以在窗口的右侧(通常有“Tasks”值),按“Swissknife Server”过滤。

脚本开发

Swissknife将自动加载其用户脚本文件夹中的所有脚本,你可以通过执行命令找到所需的脚本。打开命令行窗口,然后输入“Open swissknife users script folder”,或者按照命令提示建议进行输入。

如需启动新的脚本,还可以使用扩展提供的命令。打开Swissknife Picker,,然后输入“New swissknife script”即可。

脚本模板

你可以根据自己的需要来选择TS或JS版本,TS比较复杂,因为我们需要将其转译为JS。这里我们使用JavaScript,下面给出的是脚本的基本结构:

Object.defineProperty(exports, "__esModule", { value: true });

 

exports.doSomething = async (text, context) => {

  return new Promise((resolve, reject) => {

 

    resolve(text.replace(/a/g, "b"));

 

  });

}

const scripts = [

  {

    title: "My Script",

    detail: "This script does something",

    cb: (context) => context.replaceRoutine(exports.doSomething)

  },

]

 

exports.default = scripts;

这是创建脚本的基本模板。在这个文件中,我们创建了一个名为“My Script”的脚本。每个文件可以有任意数量的脚本,这只是一种组织方式。脚本的结构由3个属性组成:title、detail和cb。其中的cb是脚本运行时将调用的代码。

更多样本

Object.defineProperty(exports, "__esModule", { value: true });

 

//Uses the context.modules to reuse existing code. Starts an http server

exports.startServer = async (context) => {

  context.modules.lib.server.start({ port: 1234 })

}

 

//uses context.userModules to invoke another user script

//there will be an entry in context.userModules with the name of the file with scripts loaded

//all exported methods are accessible...

//If  invoking a script remember to send the right params, like the context

exports.anotherUserScript = async (context) => {

  context.modules.othermodule.hellowWorld(context);

}

 

//Ask user for input

exports.askInput = async (context) => {

  return new Promise((resolve, reject) => {

    context.vscode.window.showInputBox({ prompt: "Say something" }).then(answer => {

      resolve(answer);

    });

  });

}

const scripts = [

  {

    title: "Ask Input",

    detail: "Asks user input and adds it to the editor",

    cb: (context) => context.insertRoutine(this.askInput)

  },

  {

    title: "Start server on port 1234",

    detail: "Starts a server on port 1234",

    cb: (context) => this.startServer(context)

  },

  {

    title: "Call Another User script",

    detail: "Calls Another User script",

    cb: (context) => context.insertRoutine(this.anotherUserScript)

  },

]

 

exports.default = scripts;

项目地址

Swissknife:https://github.com/luisfontes19/vscode-swissknife/

来源:freebuf.com 2021-04-25 13:14:18 by: Alpha_h4ck

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论