我经常在控制台上使用cat来查看文件的内容,偶尔我会不小心 cat 一个二进制文件,它基本上会产生乱码和系统哔哔声。但是今天我遇到了 cat 实用程序的输出被重定向到控制台输入的情况,所以我得到了这样的东西:
-bash: 2c: command not found
-bash: 1: command not found
-bash: 1: command not found
-bash: 112: command not found
-bash: 112: command not found
-bash: 1: command not found
-bash: 0x1: command not found
-bash: 2c1: command not found
-bash: 2c: command not found
-bash: 1: command not found
-bash: 1: command not found
-bash: 112: command not found
-bash: 112: command not found
-bash: 1: command not found
-bash: 0x1: command not found
-bash: 2c1: command not found
-bash: 2c1: command not found
-bash: 2c1: command not found
-bash: 2c1: command not found
……
_
这让我想到一个专门制作的二进制文件会在系统上造成相当混乱?!...现在我确实意识到像这样鲁莽地使用 cat 并不是特别聪明,但我实际上想知道这里发生了什么。什么字符会产生突然将内容转储到标准输入的效果...
注意:我在 Mac OS X 终端中执行此操作时,我实际上调用了diff -a来比较两个固件 rom 映像并将差异打印出来(我认为只有几个字节的差异,但那里几乎 8 MB打印到屏幕上的差异)后来我故意尝试对其中一个文件进行分类并获得与我粘贴在这里相同的效果。
- 更新 - - 更新 - - 更新 -
我昨天深夜在这里发布了这个,今天早上我试图复制这种行为,但我做不到。不幸的是,我无法确定是否某些转义字符导致二进制文件中的乱码自动在控制台上执行,或者是否在 cat 结束时我只剩下一堆字符(好像我已经粘贴了它们)命令行,我可能不小心按了 Enter 以获得清晰的线条......
当我现在尝试 cat 有问题的文件时,我会在它完成时得到它(向右滚动查看):
D?k(Fli9p?s?HT?78=!g??Ès3?&é?? =??7??K?̓Kü<ö????z(;???????j??>??ö?Ivans-MacBook-Pro:FI9826W-2.11.1.5-20140121 NA ivankovacevic$ 1;2c1;2c1;2;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c;1;1;112;112;1;0x1;2c1;2c;1;1;112;112;1;0x1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c
我的实际提示是:
Ivans-MacBook-Pro:FI9826W-2.11.1.5-20140121 NA ivankovacevic$
在哪里:
FI9826W-2.11.1.5-20140121 NA
是当前的工作目录。正如你所看到的,它被伪装在二进制乱码中,我可能已经反射性地按下了输入或其他东西。这本身就是 cat 有点错误,因为显然我的提示可能会更好地“伪装”。但它没有我最初想象的那么严重。虽然我仍然不能 100% 确定昨晚我尝试时它没有自动执行,因为在此之前,昨晚还发生了另一件奇特的事情。我在另一个非常相似的文件上调用了 cat ,导致终端应用程序退出:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00007fcb9a3ffffa
现在我在想这两个事件的组合可能导致控制台上自动执行乱码。但我无法再次复制这种行为。
有问题的文件是 Foscam IP 摄像机的固件,链接如下:
国际站点:
http
://foscam.com/Private/ProductFiles/FI9826W-2.11.1.5-20140120.zip
然后里面的文件:FI9826W_app_ver1.11.0.40_OneToAll.bin
在那个上调用 cat 将导致终端退出。
美国站点:
http
://foscam.us/downloads/FI9826W-2.11.1.5-20140121%20NA.zip
然后文件:FI9826W_app_ver1.11.0.40_OneToAll_A.bin
cat-ing 会导致在命令行上粘贴 1;2c1;2c1;2;2c1;2c1;2c1;2c1;2c1;2c1;2c1;2c.... 字符