让 Cryptsetup Benchmark --cipher 遍历所有密码的列表

让 Cryptsetup Benchmark --cipher 遍历所有密码的列表

我正在尝试运行cryptsetup benchmark --cipher./proc/crypto

/proc/crypto我通过执行以下操作获得了列表:

cd ./Documents/; cat /proc/crypto | grep "name" | cut -c 16- | tee ciphers.txt

现在,我正在尝试找到一种方法将每个密码一个接一个地传递到cryptsetup.我的第一次尝试很简单cat ciphers.txt | cryptsetup benchmark --cipher,但现在我想我可能需要将我创建的列表转换为 .CSV 文件并通过循环传递它for

有没有一种方法可以使用ciphers.txt我创建的列表,而不需要太多的努力,就可以传递到cryptsetup

答案1

您的问题与 dm_crypt 无关。这是一个简单的shell编程问题。

首先,你承诺 虐待猫。而不是cat /proc/crypto | grep "name",只需写grep name /proc/crypto(不需要引号)。

您还可以将 grep 和 cut 组合成一个sed命令。不一定更容易阅读:sed -n '/^name/s/.*: //p' /proc/crypto但需要一个命令而不是两个命令。默认情况下-n阻止sed打印行。该程序找到以“name”开头的行,并删除该行的第一部分,直到冒号后面的空白。p确保随后将其打印出来。

现在我们来解答您的问题。我知道该--cipher选项需要一个密码。这意味着您必须运行cryptsetup benchmark多次,每个密码运行一次。这需要一个循环,例如:

for cipher in $(<cipher.txt)
do cryptsetup benchmark --cipher "$cipher"
done

由于某些密码名称包含特殊字符(例如括号),因此引号是必需的。

如果您不需要该文件cipher.txt,您可以一次性完成所有这些操作:

for cipher in $(grep name /proc/crypto | cut -c 16-)
do cryptsetup benchmark --cipher "$cipher"
done

相关内容