ทำไม `cat / dev / urandom` ถึงทำลายเครื่องของคุณ?


คำตอบ:


21

ในขณะที่มีอักขระ ASCII ปกติที่พิมพ์ได้ของคุณที่ส่งไปมาบนเทอร์มินัล แต่ก็มีอักขระที่ไม่สามารถพิมพ์ได้จำนวนมากที่ใช้สำหรับระบบเพื่อสื่อสารกับเทอร์มินัล ตัวอย่างเช่นหากโปรแกรมส่งอักขระ0x07("อักขระ ASCII Bell") เทอร์มินัลของคุณควรจะส่งเสียงบี๊บ

ลำดับพิเศษอื่น ๆ สามารถนำมาใช้เพื่อเปลี่ยนสีของข้อความที่จะแสดงทิศทางที่มันจะแสดงชื่อของหน้าต่างขนาดของหน้าต่าง ฯลฯ ในหมู่สิ่งอื่น ๆ

เมื่อคุณ

cat /dev/urandom

กลุ่มของอักขระสุ่มจะถูกเทเทอร์มินัลของคุณและเทอร์มินัลไม่สามารถบอกได้ว่ามันไม่ใช่รหัสควบคุมจริง

เนื่องจากโปรแกรมกำลังส่งคำสั่งสุ่มไปยังเทอร์มินัลอย่างมีประสิทธิภาพเทอร์มินัลจะสิ้นสุดลงในสถานะสุ่มซึ่งมักใช้ไม่ได้


4

เอาต์พุตแบบสุ่มบางส่วนจะเป็นรหัสหลบหนี ANSI ( http://en.wikipedia.org/wiki/ANSI_escape_code ) ซึ่งสามารถทำสิ่งสนุก ๆ เช่นซ่อนเคอร์เซอร์หรือเลือกแบบอักษรอื่น ความเป็นไปได้อีกอย่างคือลำดับของยูนิโค้ด: การทดสอบแบบสุ่มจะไม่ถูกต้อง UTF-8 และอาจเป็นไปได้ว่าเทอร์มินัล unicode ที่รับรู้ทั้งหมดอาจจัดการได้อย่างงดงาม


1

cat /dev/urandomจะให้กระแสข้อมูลแบบสุ่มไบต์ระหว่าง0และ255ไม่ใช่ค่าทั้งหมดที่เป็นอักขระข้อความที่ถูกต้อง เนื่องจากหน้าต่างเทอร์มินัลเป็นฟีดข้อมูลที่ไม่ถูกต้องจึงไม่เคยคาดหวังว่าจะสามารถจัดการแอปพลิเคชันเทอร์มินัลให้อยู่ในสถานะ "เสีย"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.