更多 L337 翻译
Dave 继续他的 shell 脚本 L33t 翻译器。
在我的上一篇文章中,我谈到了黑客和计算机极客的内部行话,被称为“Leet Speak”或者简称“Leet”。 当然,这是 Elite (精英)一词的缩写,最好写作 L33T 或者可能是 L337,这样才够酷。 但是,我不会评判。
上次我研究了一系列简单的字母替换,可以将“I am a master hacker with great skills”这样的句子转换为类似这样的内容
I AM A M@ST3R H@XR WITH GR3@T SKILLZ
事实证明,我错过了一些 Leet 的细微之处,并没有意识到最常见的情况是字母 "a" 实际上会被转换为 "4",而不是 "@",虽然与关于行话的一切一样,这有点随机。
实际上,字母表中的每个字母都可以随机调整和更改,有时是从单个字母到两个或三个符号的序列。 例如,"a" 的另一个变体是 "/-\"(希望视觉上很明显)。
继续这种思路,"B" 可以变成 "|3","C" 可以变成 "[","I" 可以变成 "1",我最喜欢的之一是 "M" 可以变成 "[]V[]"。 这需要很多工作,但由于目标之一是拥有一种其他人无法理解的语言,我明白了。
还有其他的替换:单词尾部的 "S" 可以替换为 "Z",尾部的 "ED" 可以变成 "'D" 或者仅仅是 "D",另一个有趣的替换是包含 "and"、"anned" 或者 "ant" 的单词可以将该序列替换为 & 符号。
让我们添加所有这些 L337 过滤器,看看脚本的成型情况。
首先,一些随机性由于许多这些转换都将具有随机元素,让我们首先生成一个 1-10 之间的随机数,以确定是否执行一个或另一个动作。 这很容易通过 $RANDOM
变量完成
doit=$(( $RANDOM % 10 )) # random virtual coin flip
现在假设后缀 -ed 有 50% 的几率会更改为 "'D",有 50% 的几率会变为 "D",代码如下所示
if [ $doit -ge 5 ] ; then
word="$(echo $word | sed "s/ed$/d/")"
else
word="$(echo $word | sed "s/ed$/'d/")"
fi
让我们添加额外的转换,但不要每次都执行。 让我们根据转换本身,赋予它们 70-90% 的发生概率。 这里有一些例子
if [ $doit -ge 3 ] ; then
word="$(echo $word | sed "s/cks/x/g;s/cke/x/g")"
fi
if [ $doit -ge 4 ] ; then
word="$(echo $word | sed "s/and/\&/g;s/anned/\&/g;
s/ant/\&/g")"
fi
因此,这是第二个翻译,稍微复杂一些
$ l33t.sh "banned? whatever. elite hacker, not scriptie."
B&? WH4T3V3R. 3LIT3 H4XR, N0T SCRIPTI3.
请注意,它还没有意识到 "elite" 应该变成 L337 或 L33T,但因为它应该相当随机,所以让我们保持这个脚本原样。 Kk? 真酷。
如果您想扩展它,一个有趣的编程问题是将每个单词分解为单个字母,然后随机地将小写更改为大写,反之亦然,这样您就可以获得那些很棒的勒索信风格的 WeiRD LeTtEr pHrASes。
下次,我计划继续前进,并研究出色的命令行工具 youtube-dl,探索如何使用它来下载视频,甚至只是将音轨下载为 MP3 文件。