
我基於十六進制的組合做了這個小文件,它可以破壞 cat 和顯示帶有 cat 文件的終端;重置不再有效,它可能將貓置於某種循環中?請問有人可以解釋一下嗎?它不會引起任何問題,但不要在生產中運行它,因為它可能會產生一些我沒有看到的副作用:
執行指令“cat brocat”,你就會看到。
也許這是 cat 的安全性問題,它可以執行任意程式碼?
再例如:cat /usr/bin/vi 可以執行一些最後找不到的指令!
有沒有更安全的運行cat的方法?
答案1
您可以cat -v /usr/bin/vi
讓它將不可列印的字元列印為 ASCII 表示形式,而不是終端可能嘗試處理的實際控製字元。這能解決你的問題嗎?
答案2
你真的不應該“cat”任意檔。即使該文件不是惡意的,這也是一個壞主意。
您可以透過執行“檔案”程式來確定檔案“類型”,例如file /usr/bin/vi
。無論如何,使用“cat”都是低級的。也許嘗試使用“更多”或“更少”。當我嘗試時,more /usr/bin/vi
我得到了/usr/bin/vi: Not a text file
。
另外,您可以使用“reset(1)”命令重置終端,但resetC-J
如果終端最終處於原始模式,您可能必須鍵入 ,即字串“reset”後跟“control-J”。