更多 L337 翻译

作者:Dave Taylor

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 文件。

Dave Taylor 在 UNIX 和 Linux 系统上破解 shell 脚本已经很长时间了。 他是Learning Unix for Mac OS XWicked Cool Shell Scripts 的作者。 你可以在 Twitter 上找到他,账号是 @DaveTaylor,你也可以通过他的技术问答网站联系他:Ask Dave Taylor

加载 Disqus 评论