#cybersecurity #decode #cracking #encode #security #decode-base64 #system-information

bin+lib mercy

慈悲是一个开源的Rust包和CLI,用于构建网络安全工具、评估项目和测试基础设施

15个版本 (9个稳定)

2.0.2 2024年4月15日
2.0.1 2023年10月9日
2.0.0 2023年5月14日
1.2.22 2023年3月14日
0.1.8 2022年10月17日

#180 in 密码学


用于 2 crates

BSD-2-Clause

210KB
405

📚 文档

Workflow

慈悲是一个开源的Rust包和CLI,用于构建网络安全工具、评估项目和测试。项目的目标是使Rust中的安全工具创建更加容易和可持续,无需复杂的算法。

用法

由于慈悲是一个标准包,它可以很容易地用于任何已经使用Cargo初始化的项目。只需将以下行添加到您的 Cargo.toml 文件中

mercy = "2.0.2"

更新 Cargo.toml 文件后,您可以通过运行 cargo run 来导入包并使用提供的方法。以下提供了许多不同的示例。

密码学过程

以下是一个使用base64协议进行解码和编码的快速示例

use mercy::{ decode, encode };

fn main() {
    // Encode string "battleoverflow"
    encode("base64", "battleoverflow");
    
    // Decode string "YXphemVsbGFicw=="
    decode("base64", "YXphemVsbGFicw==");
}

十六进制转储

以下是使用慈悲在单行中转储十六进制值的方法

use mercy::hex;

fn main() {
    hex("hex_dump", "/Location/of/file");
}

恶意软件/恶意检测

您可以使用InQuest API检查域名(例如example.com)是否目前被分类为恶意

use mercy::malicious;

fn main() {
    malicious("status", "example.com");
}

其他方法

包括一些额外的方法以帮助数据收集。您可以收集主机系统的内部IP地址,消除URL或IP地址的威胁,运行WHOIS域名查找,或转储由用户指定的主机系统信息。

use mercy::extra;

fn main() {
    // Contains the internal ip address of the user's system
    // Second parameter MUST be an empty string to work
    extra("internal_ip", "");

    // This method is extensive, but the "all" parameter allows the user to dump everything
    extra("system_info", "all");

    // Defang an ip address or domain
    extra("defang", "example.com");

    // Run a WHOIS lookup on a domain
    extra("whois", "example.com");

    // Attempt to identify an unknown string
    extra("identify", "UCrlEbqe4ppk5dVIHzdxtC7g");

    // Attempt to crack an encrypted string
    extra("crack", "YXphemVsbTNkajNk");
}

您还可以使用以下参数,替换 system_info 下的 "all" 关键字

  • hostname
  • cpu_cores
  • cpu_speed
  • os_release
  • proc

还有一个实验方法,这意味着您将通过stdout接收所有内容,而无需 println!()

use mercy::experimental;

fn main() {
    // Shuffle a provided string to construct a domain name
    experimental("domain_gen", "example.com");
}

现在您也可以在脚本或通过CLI提取zip文件。这是一种只打印到stdout的方法。

use mercy::experimental;

fn main() {
    experimental("zip", "/Users/name/Downloads/archive.zip");
}

更多信息

如果有任何疑问,请随时运行此特殊函数以显示有关crate的更多信息。

use mercy::source;

fn main() {
    source();
}

CLI

虽然Mercy可以作为crate提供,但它也兼职作为命令行界面。这允许您通过Cargo正常安装crate,并使用所有可用的方法,而无需构建自己的评估工具。

以下是一些使用CLI的示例。

您可以使用以下语法运行CLI工具

mercy -m <METHOD> -p <PROTOCOL> -i <STRING/FILE>

如果您需要刷新可用的参数,也可以运行帮助命令

mercy -h

以下列出了可用的选项

-i, --input     Encoded/Plaintext string for decoding/encoding or location of the file for hex_dump

-m, --method    Chosen method for data manipulation (ex: decode)

-p, --protocol  Chosen protocol for data manipulation (ex: base64)

-e, --extended  View every available option within Mercy

示例

以下是一些快速使用案例

如果您需要使用base64协议解码字符串。

mercy -m decode -p base64 -i <EncodedString>

打印主机系统信息,例如主机名、CPU核心等。

mercy -m sys -p system_info -i all

使用MD5散列将明文字符串进行编码。

mercy -m hash -p md5 -i <PlaintextString>

打印主机系统的内部IP地址。

mercy -m ip -p internal_ip

快速检查域名是否恶意。

mercy -m mal -p status -i "example.com"

提取zip文件。

mercy -m zip_e -p zip -i "/Users/name/Downloads/archive.zip"

如果您遇到困难,可以使用此选项从Mercy学习每个可用的命令。

mercy -e

依赖项

~29–43MB
~649K SLoC