#xor #command-line #command-line-tool #utility #file #file2 #file1

应用 xorfiles

命令行工具,用于对两个文件进行异或操作

2 个版本

0.1.1 2020年2月28日
0.1.0 2020年2月28日

#14 in #xor

GPL-3.0-or-later

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