yaklang

module
v1.2.5-sp1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2023 License: AGPL-3.0

README

CDSL-Yaklang: Cybersecurity Domain-Specific Language

为了加速安全产品和安全工具的工程化研发,我们创建了一门新的语言(Yaklang),并且同时实现了一个栈虚拟机(YakVM)。

In order to improve the development process of security products and hacking tools, we have created a new language ( Yaklang) and implemented a stack-based virtual machine (YakVM) for this language.

Yaklang 是一门图灵完备的编程语言,其语法由上下文无关文法定义。它运行在 YakVM 上。

Yaklang is a Turing-complete procedural language defined by context-free grammar. It runs on YakVM.

为什么要做 DSL? (Why DSL?)

  1. 提高生产力。DSL 设计简洁高效,专注于解决特定问题,可以大大提高开发效率和生产力。

  2. 改善抽象能力。DSL 可以帮助开发者利用高层抽象构建解决方案,不需要处理底层细节,提高开发效率。

  3. 可维护性好。DSL 语言简单明了,代码也更加清晰易读,这有利于代码的维护和扩展。

  4. 可靠性高。DSL 专注一定领域,语言和语义都更加精确,这有助于编写出更加可靠的程序。

  5. 易于嵌入。DSL可以很容易地嵌入到一门宿主语言中,实现起来非常方便。

Translation:

Improved productivity. DSL is designed to be concise and efficient, focusing on solving specific problems, which can greatly improve development efficiency and productivity.

Improved abstraction. DSL can help developers build solutions using high-level abstractions without dealing with low-level details, improving development efficiency.

High maintainability. DSL languages are simple and clear, and the code is also more readable, which is beneficial for code maintenance and expansion.

High reliability. DSL focuses on a certain field, the language and semantics are more precise, which helps to write more reliable programs.

Easy to embed. DSL can be easily embedded in a host language, which is very convenient to implement.

项目架构 / Project Architecture

yaklang-architecture

快速开始 / Quick Start

(推荐中文用户)通过 Yakit 来使用 Yaklang / Use Yaklang via Yakit

Yakit (https://github.com/yaklang/yakit) 是 Yaklang.io 团队官方出品的开源 Yaklang IDE,它可以帮助你快速上手 Yaklang 语言。

Yakit (https://github.com/yaklang/yakit) is the official open source Yaklang IDE released by the Yaklang.io team. It can help you get started with the Yaklang language quickly.

同时 Yakit 也能将绝大部分安全工程师需要的核心功能图形化。他是免费的,你可以通过 下载安装 Yakit,来开始使用 Yaklang。

At the same time, Yakit can also visualize most of the core functions needed by security engineers. It is free, you can start using Yaklang by [downloading and installing Yakit] (https://www.yaklang.com/products/download_and_install).

通过命令行来安装使用

通过命令行来安装使用 Yaklang 请遵循:https://www.yaklang.com/https://www.yaklang.io/ 的指引,或直接执行

Install and use Yaklang via the command line, please follow: https://www.yaklang.com/ or https://www.yaklang.io/, or directly execute

MacOS / Linux
bash <(curl -sS -L http://oss.yaklang.io/install-latest-yak.sh)
Windows
powershell (new-object System.Net.WebClient).DownloadFile('https://yaklang.oss-cn-beijing.aliyuncs.com/yak/latest/yak_windows_amd64.exe','yak_windows_amd64.exe') && yak_windows_amd64.exe install && del /f yak_windows_amd64.exe

社区 / Community

  1. 你可以在 yaklang 或者 yakit 的 issues 中添加你想讨论的内容或者你想表达的东西,英文或中文均可,我们会尽快回复
  2. 国内用户可以使用 WeChat 加入群组
  3. 国际用户可以使用 Discord 加入社区
Translation
  1. You can add the topics you want to discuss or express in Yaklang or Yakit's issues, in either English or Chinese, and we will reply as soon as possible.
  2. Chinese users can join the group through WeChat.
  3. International users can join the community through Discord.

贡献你的代码 / Contribute your code

这是一个高级话题,在贡献你的代码之前,确保你对 Yaklang 整个项目结构有所了解。

This is an advanced topic. Before contributing your code, make sure you have an understanding of the entire Yaklang project structure.

在贡献代码时,如果你希望修改 Yaklang 或 YakVM 本身的核心语法部分,最好与研发团队取得联系。

When contributing code, if you want to modify the core syntax part of Yaklang or YakVM itself, it is best to contact the R&D team.

如果您仅仅想要增加库的功能,或者修复一些库的 Bug,那么您可以直接提交 PR,当然 PR 中最好包含对应的单元测试,这很有助于提升我们的代码质量。

If you just want to add functionality to the library, or fix some bugs in the library, then you can submit a PR directly. Of course, the PR should preferably include the corresponding unit test, which is very helpful to improve our code quality.

项目成员 / Project Members

Maintainer

v1ll4n: Yak Project Maintainer.

yaklang 核心开发者 / Active yaklang core developers
  1. z3
  2. Longlone
  3. Go0p
  4. Matrix-Cain
  5. bcy2007
  6. naiquan
  7. Rookie-is

开源许可证 / Open Source LICENSE

本仓库代码版本使用 AGPL 开源协议,这是一个严格的开源协议,且具有传染性,如果您使用了本仓库的代码,那么您的代码也必须开源。

  1. 强制开源网络服务:要求提供网络服务的源代码必须开源。保证开源理念在网络环境下的实践。
  2. 其他条款与 GPL 相同:开源免费、开源修改、衍生开源等。

本项目开源仓库仅应该作为个人开源和学习使用。

The code version in this repository uses the AGPL open source license, which is a strict open source license and is infectious. If you use the code in this repository, your code must also be open source.

  1. Mandatory open source network services: Requires the source code of network services to be open source. Ensures the practice of open source philosophy in network environments.
  2. Other terms are the same as GPL: open source free, open source modification, derived open source, etc.

This open source repository should only be used for personal open source and learning.

鸣谢 / Acknowledgments

本项目经由电子科技大学张小松(网络空间安全学院)教授学术指导。

This project is academically guided by Professor Zhang Xiaosong (scse.uestc.edu.cn), University of Electronic Science and Technology of China.

基础理论学科 / Basic theoretical disciplines
  1. Alonzo Church, "A set of postulates for the foundation of logic", Annals of Mathematics, 33(2), 346-366, 1932.
  2. Dana Scott, Christopher Strachey, "Toward a mathematical semantics for computer languages", Proceedings of the Symposium on Computers and Automata, Microwave Research Institute Symposia Series Vol. 21, New York, 1971.
  3. Henk Barendregt, Wil Dekkers, Richard Statman, lambda Calculus with Types, Perspectives in Logic. Cambridge University Press, 2013.
工程技术 / Engineering Technology
  1. Terence Parr, "The Definitive ANTLR 4 Reference", Pragmatic Bookshelf, 2013.
  2. Terence Parr, "Simplifying Complex Networks Using Temporal Pattern Mining: The Case of AT&T's Observed Data Network", Dissertation, 1995.
  3. Terence Parr, Russell Quong, "ANTLR: A Predicated-LL(k) Parser Generator", Journal of Software Practice and Experience, July 1995.
  4. Google Ins, "Protocol Buffers", https://developers.google.com/protocol-buffers, 2020.
  5. Google Ins, "gRPC", https://grpc.io/, 2020.
  6. Microsoft Ins, "Monaco Editor", https://microsoft.github.io/monaco-editor/, 2020.

Directories

Path Synopsis
common
crawlerx
Package crawlerx @Author bcy2007 2023/7/13 11:10
Package crawlerx @Author bcy2007 2023/7/13 11:10
crawlerx/cmd
Package cmd @Author bcy2007 2023/7/14 11:11
Package cmd @Author bcy2007 2023/7/14 11:11
crawlerx/tools
Package tools @Author bcy2007 2023/7/12 16:40
Package tools @Author bcy2007 2023/7/12 16:40
crawlerx/tools/config
Package config https://github.com/unknwon/goconfig
Package config https://github.com/unknwon/goconfig
cuckoo
Package cuckoo ...
Package cuckoo ...
cve
fp
geo
Package geoip2 provides an easy-to-use API for the MaxMind GeoIP2 and GeoLite2 databases; this package does not support GeoIP Legacy databases.
Package geoip2 provides an easy-to-use API for the MaxMind GeoIP2 and GeoLite2 databases; this package does not support GeoIP Legacy databases.
gmsm/gmtls
add sm2 support
add sm2 support
gmsm/gmtls/gmcredentials/echo
Package echo is a generated protocol buffer package.
Package echo is a generated protocol buffer package.
gmsm/pkcs12
Package go-pkcs12 implements some of PKCS#12.
Package go-pkcs12 implements some of PKCS#12.
gmsm/x509
crypto/x509 add sm2 support
crypto/x509 add sm2 support
ja3
javascript/otto
Package otto is a JavaScript parser and interpreter written natively in Go.
Package otto is a JavaScript parser and interpreter written natively in Go.
javascript/otto/ast
Package ast declares types representing a JavaScript AST.
Package ast declares types representing a JavaScript AST.
javascript/otto/dbg
Package dbg is a println/printf/log-debugging utility library.
Package dbg is a println/printf/log-debugging utility library.
javascript/otto/file
Package file encapsulates the file abstractions used by the ast & parser.
Package file encapsulates the file abstractions used by the ast & parser.
javascript/otto/parser
Package parser implements a parser for JavaScript.
Package parser implements a parser for JavaScript.
javascript/otto/registry
Package registry is an expirmental package to facillitate altering the otto runtime via import.
Package registry is an expirmental package to facillitate altering the otto runtime via import.
javascript/otto/token
Package token defines constants representing the lexical tokens of JavaScript (ECMA5).
Package token defines constants representing the lexical tokens of JavaScript (ECMA5).
jsonpath
Package jsonpath implements Stefan Goener's JSONPath http://goessner.net/articles/JsonPath/
Package jsonpath implements Stefan Goener's JSONPath http://goessner.net/articles/JsonPath/
log
martian/v3
Package martian provides an HTTP/1.1 proxy with an API for configurable request and response modifiers.
Package martian provides an HTTP/1.1 proxy with an API for configurable request and response modifiers.
martian/v3/fifo
Package fifo provides Group, which is a list of modifiers that are executed consecutively.
Package fifo provides Group, which is a list of modifiers that are executed consecutively.
martian/v3/filter
Package filter provides a modifier that executes a given set of child modifiers based on the evaluated value of the provided conditional.
Package filter provides a modifier that executes a given set of child modifiers based on the evaluated value of the provided conditional.
martian/v3/h2
Package h2 contains basic HTTP/2 handling for Martian.
Package h2 contains basic HTTP/2 handling for Martian.
martian/v3/h2/grpc
Package grpc contains gRPC functionality for Martian proxy.
Package grpc contains gRPC functionality for Martian proxy.
martian/v3/header
Package header provides utilities for modifying, filtering, and verifying headers in martian.Proxy.
Package header provides utilities for modifying, filtering, and verifying headers in martian.Proxy.
martian/v3/mitm
Package mitm provides tooling for MITMing TLS connections.
Package mitm provides tooling for MITMing TLS connections.
martian/v3/parse
Package parse constructs martian modifiers from JSON messages.
Package parse constructs martian modifiers from JSON messages.
martian/v3/proxyutil
Package proxyutil provides functionality for building proxies.
Package proxyutil provides functionality for building proxies.
martian/v3/verify
Package verify provides support for using martian modifiers for request and response verifications.
Package verify provides support for using martian modifiers for request and response verifications.
mq
rpa
s5
sca
simulator/extend
Package extend @Author bcy2007 2023/6/8 11:17
Package extend @Author bcy2007 2023/6/8 11:17
simulator/httpbrute
Package httpbrute @Author bcy2007 2023/6/20 14:54
Package httpbrute @Author bcy2007 2023/6/20 14:54
t3
twofa
Package dgoogauth implements the one-time password algorithms supported by Google Authenticator This package supports the HMAC-Based One-time Password (HOTP) algorithm specified in RFC 4226 and the Time-based One-time Password (TOTP) algorithm specified in RFC 6238.
Package dgoogauth implements the one-time password algorithms supported by Google Authenticator This package supports the HMAC-Based One-time Password (HOTP) algorithm specified in RFC 4226 and the Time-based One-time Password (TOTP) algorithm specified in RFC 6238.
utils
Package bytefmt contains helper methods and constants for converting to and from a human-readable byte format.
Package bytefmt contains helper methods and constants for converting to and from a human-readable byte format.
main.go
rfb.go
utils/htmlquery
Package htmlquery provides extract data from HTML documents using XPath expression.
Package htmlquery provides extract data from HTML documents using XPath expression.
utils/lowhttp/lowhttp2
Package http2 implements the HTTP/2 protocol.
Package http2 implements the HTTP/2 protocol.
utils/lowhttp/lowhttp2/hpack
Package hpack implements HPACK, a compression format for efficiently representing HTTP header fields in the context of HTTP/2.
Package hpack implements HPACK, a compression format for efficiently representing HTTP header fields in the context of HTTP/2.
utils/netutil/netroute
Originally found in https://github.com/google/gopacket/blob/master/routing/routing.go
Originally found in https://github.com/google/gopacket/blob/master/routing/routing.go
utils/spacengine/go-shodan
Package shodan is an interface for the Shodan API
Package shodan is an interface for the Shodan API
utils/tlsutils/go-pkcs12
Package pkcs12 implements some of PKCS#12 (also known as P12 or PFX).
Package pkcs12 implements some of PKCS#12 (also known as P12 or PFX).
utils/tlsutils/go-pkcs12/rc2
Package rc2 implements the RC2 cipher
Package rc2 implements the RC2 cipher
yak
yso

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL