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

2021-05-20 16:16:32 浏览数 (1)

关于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扩展:

部分脚本细节

加密货币值

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

代码语言:javascript复制
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,下面给出的是脚本的基本结构:

代码语言: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是脚本运行时将调用的代码。

更多样本

代码语言:javascript复制
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/

0 人点赞