Farbrausch 的“fuenf”中的 95cd 21eb fc 如何翻译成

问题描述 投票:0回答:2

2001年,德国现场乐队Farbrausch发布了一个名为“fuenf”(在你脸上)的演示。 pouet.net 它包含一个 5 字节的可执行文件,与其说是演示,不如说它是一种巨魔方法。如果您运行它,您会听到奇怪的声音,并且可能会使您的计算机崩溃。至少它能发出声音。无论如何。

十六进制内容为:

95cd 21eb fc

二进制表示为:

10010101 11001101 00100001 11101011 11111100

使用 xxd 我还从内容中获取可打印字符,它们是:

..!..

这让我有点困惑。查找 ASCII 表中的值(例如此处),我得到以下结果:

•Í!ëü

至少感叹号是正确的。

但是95cd21ebfc如何翻译成..!..

旁注:

file -bi fuenf.com 表示编码未知:

charset=unknown-8bit

并且 iconv -f ISO-8859-1 -t UTF-8 fuenf.com 返回

Í!ëü

这导致了这样的假设:XXD 根本无法解码内容,因此只使用默认结果,例如点?

hex xxd demoscene
2个回答
0
投票

首先,这不是一个文本文件,因此将其视为文本文件是没有意义的。这是说明。

其次,即使它可以解释为文本,您也需要知道编码。它绝对不是 ASCII,因为它只定义 0-127 范围内的符号(这里的第三个字节是该范围内的唯一一个,映射到“!”)。您链接到的“扩展 ASCII”表只是为 128-255 之间的值赋予含义的许多可能的代码页之一,但这些代码页有很多。称其为“扩展 ASCII”是一种误导,因为它表明 ASCII 为此创建了更新的标准,但事实并非如此。有一段时间,计算机供应商只是对这些附加字符为所欲为,其中一些由于被包含在 DOS、Windows 等中而成为准标准。或者它们被 ISO 标准化(你尝试过 iso-8859-1 ,这是一个这样的标准)。


0
投票

这是一个 MS-DOS 演示。没有标题 - 文件直接包含代码。

拆解为:

0:  95       xchg   ax,bp
1:  cd 21    int    0x21
3:  eb fc    jmp    0x1

int 0x21
调用 MS-DOS 操作系统功能。 哪个功能由
ah
寄存器(
ax
的上半部分)决定。 在大多数版本的 DOS 上
ah
开始时包含数字 0。DOS 函数 0 结束程序。那会很无聊。

因此,我们将其替换为一个更有趣的寄存器,根据同一张表,其上半部分通常包含 9。 INT 0x21 函数 9 将字符串打印到屏幕(参见 Ralf Brown 的中断列表)。哪个字符串?没有足够的字节来决定一个,所以无论发生什么,都已经被偶然设置了。在 MS-DOS 中,你不能通过读取无效的内存地址来使程序崩溃,因此它会打印某种垃圾,直到它偶然找到字符串结尾标记。

然后重复。

声音可能是由字符串碰巧包含(偶然)ASCII 响铃字符引起的 - 这是早期打字机的遗物,它带有实际的响铃,因此当程序完成时计算机可以响铃。 MS-DOS 可能通过蜂鸣声模拟了这一点。

© www.soinside.com 2019 - 2024. All rights reserved.