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
17KB
210 行
hextool
一个简单的命令行工具,用于将字符串转换为十六进制,将十六进制转换为字符串。用 Rust 编写!
这是一个用于 CTF 的个人工具。我知道像 hex
和 unhex
这样的工具已经存在。然而,我想加强我的 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
,您可以使用 Hex
和 UnHex
将字符串从十六进制字符串转换,或将字符串转换为十六进制字符串。
转换特性
Hex
和 UnHex
都实现了此特性。此特性有一个名为 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