1

好吧,所以最近我遇到过几次如果有人会echo 'G1o=' | base64 -d在终端上运行,你会得到 username@hostname:~$62;9;c

我认为这与语言环境有关,但是将其置于命令输出之后是“正常”行为吗?

4

2 回答 2

1

base64G1o=解码为十六进制1B 5a,即ESC Z. 这就是DECID转义序列,在终端实际上​​不是计算机的一部分,而是通过串行电缆连接的设备的时代,这是计算机可以询问终端到底是什么的方式。(这实际上不是标准;它是由 DEC 制造的终端实现的私有代码;因此是 DEC IDentification。DEC 代表数字设备公司,以制造可能是第一台台式计算机 PDP-8 的机器而著称,这是我拥有的机器在我十几岁的时候学习编码的乐趣。)

奇怪的是,终端仿真器仍然支持这些东西,所以如果你将 ESC-Z 写入终端程序,它会通过告诉你它模糊地伪装成什么样的历史终端来响应。例如,如果您要在 Linux 控制台中执行此操作,它会响应:ESC [ ? 6 c这是 DEC VT-102 的代码。

(顺便说一句,您的终端仿真器显然正在响应ESC [ ? 62;9 c,这是具有各种扩展“国家替换字符”集的 VT-220 的代码——这就是其中的;9一部分。)

于 2013-08-18T03:44:00.953 回答
0

取决于您认为“正常”的内容。所有程序都设置为 0 和 1,按特殊顺序排列。显然,'G' 和 '1' inbase64分别是 'enter' 和 'end of line'。要确认这一点,只需将序列更改为任何其他序列。

于 2013-08-18T00:02:12.080 回答