Skip to main content

旅程伊始:Yak 语言环境安装与搭建环境

Yak 语言环境有两种使用方法:

  1. 【推荐】使用 Yakit 内置的 Yak 引擎 使用 Yak 语言环境
  2. 直接使用 Yak 引擎,使用命令行调用 yak [your-script].yak 执行代码

【推荐】在 Yakit 中使用内置的 Yak 引擎#

Yakit 是 Yak 的衍生项目,Yak 语言核心提供了非常强大的安全能力,但是限于使用形式,用户必须学习 Yak 语言并同时具备对安全的一定理解。

为了让 Yak 本身的安全能力更容易贴近大家的实际使用,我们在为 Yak 编写了 gRPC 服务器, 并使用这个服务器实现 / 构建了一个客户端:Yakit。

Yakit 是一个高度集成化的 Yak 语言安全能力的输出平台。

下载 Yakit 客户端#

安装 Yakit 客户端#

针对 MacOS 12 版本或高版本 Silicon-Chip 系列的 "Yakit 已损坏" 的处理办法

在新版本的 MacOS 或 M1 芯片的系统下,安装会提示问题:

当遇到这个问题的时候,在 Terminal 中执行

sudo xattr -r -d com.apple.quarantine /Applications/Yakit.app

即可

使用 Yakit 下载核心 Yak 引擎#

使用 Yakit 中 Runner 来执行 Yak 代码#

推荐使用 Yak Runner 来编写代码

Yak 代码的自动补全已在 Yak Runner 中内置,通过直接和引擎通信来调度代码和产生补全,能保证在多平台下统一的 Yak 编程体验。

【专家】在系统中使用 Yak 引擎#

以下步骤是把核心引擎安装在系统中,可通过系统命令执行 Yak 脚本
可能需要面对的依赖问题

Yak 中的 SYN 扫描技术需要用到 github.com/google/gopacket

我们在捕获数据包的时候,需要使用 libpcap 作为外部依赖,所以如果遇到 pcap 依赖问题,用户可以通过执行以下命令来安装 libpcap。

brew install libpcap

在 MacOS 下,使用 Yak 是非常简单的事情,直接执行:

bash <(curl -sS -L http://oss.yaklang.io/install-latest-yak.sh)

即可安装完成:

bash <(curl -sS -L http://oss.yaklang.io/install-latest-yak.sh)
Install for Darwin(MacOS) intel/m1 fit-------------------------------------Downloading for yak_darwin_amd64--2021-07-20 14:41:42--  https://yaklang.oss-cn-beijing.aliyuncs.com/yak/latest/yak_darwin_amd64.........yak_darwin_amd64                          100%[====================================================================================>]  43.64M  1.63MB/s  用时 28s
2021-07-20 14:42:11 (1.54 MB/s) - 已保存 “yak_darwin_amd64” [45756184/45756184])
Chmod +x yak_darwin_amd64Start install yak_darwin_amd64 (ADD Yak to ENV PATH)Password:Sorry, try again.Password:[INFO] 2021-07-20 14:42:22 +0800 [default:log.go:178] current yak binary: /Users/v1ll4n/Projects/yaklang/yak_darwin_amd64[INFO] 2021-07-20 14:42:22 +0800 [default:log.go:178] installed yak... now you can exec `yak version` to check...Yak Language Build Info:    Version: v0.9.7a2-ff28a9389f7bd7538de20468b4a096258dfe3ce6    GoVersion: go version go1.15.13 darwin/amd64    GitHash: ff28a9389f7bd7538de20468b4a096258dfe3ce6    BuildTime: Mon Jul 19 17:45:48 2021 +0800
Cleaning cache file...Finished

安装 VSCODE 并使用 Yak 插件#

VSCode 插件维护程度和维护的频度不高

确保 Yak 安装完毕#

当我们 Yak 引擎安装完毕之后,通过在命令行执行 yak version

yak version
Yak Language Build Info:    Version: v0.9.7a2-ff28a9389f7bd7538de20468b4a096258dfe3ce6    GoVersion: go version go1.15.13 darwin/amd64    GitHash: ff28a9389f7bd7538de20468b4a096258dfe3ce6    BuildTime: Mon Jul 19 17:45:48 2021 +0800

安装 VSCODE 并使用 Yaklang VSCODE 插件#

虽然我们努力让编写 Yak 脚本是一件简单的事情,但是我们仍然需要一些辅助工具来帮助大家更快的编写脚本。

tip

虽然 Yak 语言本身的语法非常简单,但是如果想要使用 Yak 各种内置库的时候,还是需要一些提示,可能可以有效的避免用户频繁查阅官方文档。

因此我们基于 Vscode 研发了一个简易的 Yak 语言插件。

如果想要使用这个语言插件,我们可以先安装 VSCODE

在安装成功之后,我们在插件页搜索 yaklang 即可搜索到相关插件

安装好插件之后,我们就可以在任何地方开始编写你的 Yak 脚本了!

在 VSCode 中,我们的插件如何帮助我们编写 Yak 脚本?
  1. 当你的代码文件以 .yak 为后缀结尾时,会自动启动代码高亮
  2. 当你输入的一个内置库的名称后跟 . 的时候,将会自动提示代码补全,内容为这个库可用的接口。
  3. 动态语言猜测字段,当输入了一个变量名,并不是内置库,插件会自动提示出可能可用的字段名,或者函数名/方法名,虽然不一定完全准确,但是用户可根据这个筛选出自己想要的内容

由于研发精力有限,作者并不能完全投入过多精力来完善语言中的自动提示和补全,欢迎有志之士帮助我们完善 Yak 的生态。

安装失败?常见安装问题 Q&A:#

Yak 安装的原理是啥?#

  1. 安装脚本托管在阿里云OSS上,大家可以通过下载 http://oss.yaklang.io/install-latest-yak.sh 这个脚本查看具体的安装方法。
  2. 安装脚本会下载 yak 主程序到本地
  3. yak 程序会把自己的二进制复制到可执行的目录中(例如:/usr/local/bin 或者 C:\Windows\System32\),然后执行 yak version 来验证自己的安装过程。

如何删除 Yak ?#

找到 Yak 的安装路径,删除即可。

例如:which yak*unix 系统下可以找到安装路径

安装失败应该如何操作?#

  1. 手动下载最新版本的 Yak 发行程序(选择合适自己的)。
  2. 在本机的管理员权限/root权限下,执行 yak_{{GOOS}}_amd64 install 命令。
  3. 执行成功之后,查看 yak version 命令是否能成功执行。

pcap/libpcap 依赖出现问题?#

  1. 不同平台的解决方式不一样,但是 *unix 操作系统下,一般来说 brew/apt/yum install libpcap 即可解决。
  2. windows 平台下,大家可以通过下载并安装 npcap for Common Windows Version 来解决。

手动下载 / 安装#

danger

如果遇到 pcap 依赖问题,请遵循上面的步骤解决。

点击这里下载 yak_darwin_amd64

在下载完成之后,执行

chmod +x yak_darwin_amd64 && ./yak_darwin_amd64 install

即可安装;

在确认 yak version 命令执行成功之后,一般来说即可删除下载的文件 ./yak_darwin_amd64