#hex-string #convert-hex #convert-string #hex #string #command-line-tool #convert

bin+lib hextool

一个简单的命令行工具,用于将十六进制转换为字符串,字符串转换为十六进制

4 个版本

0.1.3 2023 年 9 月 22 日
0.1.2 2023 年 9 月 21 日
0.1.1 2023 年 9 月 21 日
0.1.0 2023 年 9 月 20 日

5 in #convert-hex

MIT 许可证

17KB
210

hextool

一个简单的命令行工具,用于将字符串转换为十六进制,将十六进制转换为字符串。用 Rust 编写!

这是一个用于 CTF 的个人工具。我知道像 hexunhex 这样的工具已经存在。然而,我想加强我的 Rust 技能,因此,我决定自己实现,并最终将其发布到 crates.io

安装

目前,安装 hextool 命令行工具的唯一方法是使用 cargo

cargo install hextool

用法

Commandline tool to convert hex to string and string to hex

Usage: hextool <COMMAND>

Commands:
  hex    Change input to hex
  unhex  Change input from hex
  help   Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

hextool 作为库

hextool 也可以作为库用于您的 Rust 项目。您可以通过将其添加到您的 cargo.toml 来实现这一点

[dependencies]
hextool = { version = "version", default-features = false }

用法

使用 hextool,您可以使用 HexUnHex 将字符串从十六进制字符串转换,或将字符串转换为十六进制字符串。

转换特性

HexUnHex 都实现了此特性。此特性有一个名为 convert 的函数,它有以下参数。了解这些参数很重要,因为它会影响输出。

fn convert(input: &str, numeric: bool, split: bool) -> String
  • input - 要转换的输入
  • numeric - 如果设置为 true,输入将被视为数值。
    • 如果输入值最终是非数值,实现将返回包含匹配错误消息的字符串。
  • split - 如果设置为 true,输出将按字节分割。
    • 对于 Hex,这将分隔转换后的输入到字节。
      • aa -> 61 61
    • 对于 UnHex,这将分隔转换后的十六进制到单个 ASCII。
      • 6161 -> a a
将字符串转换为十六进制
use hextool::{Hex, Convert};

// Convert a string to hex
let hex = Hex::convert("hello", false, false);
println!("hello in hex: {}", hex); 
// #=> "hello in hex: 68656c6c6f"

// You can also split the output in bytes
let hex = Hex::convert("hello", false, true);
println!("hello in hex: {}", hex); 
// #=> "hello in hex: 68 65 6c 6c 6f"

// Convert a string with numeric flag. This will take the numerical value of the string.
// If the string is not a number, it will return an error.
let hex = Hex::convert("255", true, false);
println!("255 in hex: {}", hex); 
// #=> "255 in hex: {ff}"
将十六进制转换为字符串
use hextool::{UnHex, Convert};

// Convert a hex string to a string
let unhex = UnHex::convert("68656c6c6f", false, false);
println!("68656c6c6f in string: {}", unhex); 
// #=> "68656c6c6f in string: hello"

// Convert a hex string to a string with numeric flag. This will take the numerical value of the string.
let unhex = UnHex::convert("cafebabe", true, false);
println!("cafebabe in string: {}", unhex); 
// #=> "cafebabe in string: 3405691582"

// If numeric is set to false, only valid strings [0-9a-f] is accepted. If the string is not valid,
// it will return the string with the invalid string highlighted to red.
let unhex = UnHex::convert("aga", true, false);
println!("{}", unhex); 
// #=> "The highlighted chars can't be converted:\nag\u{1b}[31ma\u{1b}[0m."

依赖项

~3.5–5MB
~89K SLoC