2 个版本
0.1.1 | 2020年2月28日 |
---|---|
0.1.0 | 2020年2月28日 |
#14 in #xor
18KB
79 行
xorfiles
命令行工具,用于对两个文件进行异或操作。适用于某些类型的CTF挑战。
用法
./xorfiles文件1 文件2
特性
- 对两个文件进行异或操作:
xorfiles 文件1 文件2
- 将一个文件与标准输入进行异或:
xorfiles 文件1 < 文件2
- 与 Python 和 Ruby 实现相比,吞吐量更高
安装
从 Github 安装
git clone https://github.com/sciguy16/xorfiles
cargo build --release
cargo run --release -- -h
从 Crates.io 安装
cargo install xorfiles
路线图/待办事项
- 可选:循环较短的文件(如多字节异或)
- 限制读取/写入的字节数
- 输出到文件
- 输入和输出阶段的十六进制转储
- 与 C 实现进行基准测试
- 进一步优化 Ruby 和 Python 的基准测试以获得更好的竞争
基准测试
基准测试使用 1 GB 的文件与自身进行异或操作,使用 dd if=/dev/zero of=big_file bs=1M count=1000
生成。Rust 版本在两种操作模式下进行了测试:对两个文件进行异或操作以及将一个文件与标准输入进行异或。
以下命令用于测量吞吐量
<implementation> big_file big_file | pv > /dev/null
实现 | 大约吞吐量 |
---|---|
Rust(文件) | 6.5 MiB/s |
Rust(标准输入) | 6.4 MiB/s |
Ruby | 2.45 MiB/s |
Python | 4.7 MiB/s |
依赖关系
~3MB
~51K SLoC