ตามชื่อเรื่องฉันต้องการใช้แป้นพิมพ์ระยะไกลในพื้นที่ แป้นพิมพ์ระยะไกลควรใช้งานใน TTY และถ้าเป็นไปได้ใน X-Server เช่นกัน มีไดรเวอร์ (โมดูลเคอร์เนล) เลียนแบบแป้นพิมพ์ "ปลอม" ด้วยความโปร่งใสของเครือข่ายหรือไม่?
ตามชื่อเรื่องฉันต้องการใช้แป้นพิมพ์ระยะไกลในพื้นที่ แป้นพิมพ์ระยะไกลควรใช้งานใน TTY และถ้าเป็นไปได้ใน X-Server เช่นกัน มีไดรเวอร์ (โมดูลเคอร์เนล) เลียนแบบแป้นพิมพ์ "ปลอม" ด้วยความโปร่งใสของเครือข่ายหรือไม่?
คำตอบ:
ฉันพบมันด้วยตัวเอง
ก่อนอื่นตรวจสอบให้แน่ใจว่าคุณได้โหลดโมดูลเคอร์เนลevdevบนเครื่องทั้งสอง
บนเครื่องรีโมตที่คุณรัน:
$ cat /dev/input/by-path/platform-i8042-serio-0-event-kbd | nc <IP> 4444
และลูกค้า:
$ nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd
(หมายเหตุ: หากคุณกำลังใช้ netcat จาก netcat-openbsd เช่นใน Ubuntu หรือ Fedora อย่าใช้ '-p')
มันทำงานได้อย่างสมบูรณ์ไม่ว่าฉันจะอยู่ใน TTY หรือใน X.org และมันจะทำงานโดยไม่ชักช้า!
น่าเสียดายที่มีการพิมพ์ปุ่มทั้งหมดบนเครื่องระยะไกลเช่นกัน มีวิธีการปิดใช้งานชั่วคราวขณะที่ nc กำลังทำงานอยู่หรือไม่? ฉันคิดว่าบางคนชอบวิ่ง "cat -" บนเครื่องระยะไกล แต่ Ctrl-C จะทำให้จบแน่นอน
ซินเนอร์จี้จะแชร์แป้นพิมพ์ผ่านเครือข่ายระหว่างเครื่องหลายเครื่อง ถ้ามันไม่ได้ทำในสิ่งที่คุณต้องการโดยตรงฉันแน่ใจว่ามีรหัสอยู่ที่นั่นซึ่งจะทำให้คุณติดตั้งได้ง่าย
ซินเนอร์จี้เป็นซอฟต์แวร์ฟรีและโอเพ่นซอร์สที่ให้คุณแชร์เมาส์และคีย์บอร์ดระหว่างคอมพิวเตอร์หลาย ๆ เครื่องที่คอมพิวเตอร์แต่ละเครื่องมีจอแสดงผลของตัวเอง ไม่จำเป็นต้องใช้ฮาร์ดแวร์พิเศษเพียงคุณมีเครือข่ายท้องถิ่น สนับสนุนการทำงานร่วมกันบน Windows, Mac OS X และ Linux การเปลี่ยนเส้นทางเมาส์และคีย์บอร์ดทำได้ง่ายดายเพียงเลื่อนเมาส์ออกจากขอบหน้าจอของคุณ
คำแนะนำข้างต้นของการใช้ nc (netcat) ไม่ทำงานสำหรับฉัน
ฉันสามารถเปิดสตรีมอินพุตโดยใช้คำสั่งนี้:
nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd
ฉันได้รับอนุญาตปฏิเสธแม้ว่าฉันจะทำมันเป็น sudo เครื่องเป้าหมายมีการติดตั้ง linux ที่เก่าแก่มากดังนั้นไฟล์ / dev / input อาจจะเป็นแบบอ่านอย่างเดียวเมื่อ
อย่างไรก็ตามฉันสามารถแก้ไขปัญหานี้ได้ด้วยการใช้ x2x และผลลัพธ์นั้นใช้ง่ายมาก
คุณต้องทำ "xhost +" บนเครื่องเป้าหมายและใช้ gdmsetup เพื่อเปิดใช้งานการเชื่อมต่อระยะไกล (สิ่งนี้จะลบแฟล็ก -nolisten สำหรับ X ในครั้งถัดไปที่ gdm เรียกใช้งานเซสชัน X)
หลังจากนั้น xserver ของคุณจะเปิดกว้างสำหรับการเชื่อมต่อระยะไกลและ x2x สามารถเชื่อมต่อกับมันได้จากเครื่องต้นทาง (แป้นพิมพ์)
x2x -to 192.168.1.3:0
สิ่งที่ยอดเยี่ยมเกี่ยวกับ x2x คือมันช่วยให้คุณมีหน้าต่างควบคุมเล็กน้อยบนเครื่องต้นทางและเหตุการณ์แป้นพิมพ์จะถูกส่งไปยังเป้าหมายเมื่อหน้าต่างนั้นถูกโฟกัสเท่านั้น นี่เป็นวิธีที่สะดวกมากในการทำ (ฉันกำลังพิมพ์คำตอบนี้จากเครื่องต้นทางในตอนนี้และไม่มีการกดปุ่มจรจัดถึงเครื่องเป้าหมายเพราะฉันไม่มีการเน้นหน้าต่างควบคุม) นอกจากนี้การคลิกที่กึ่งกลางของหน้าต่างควบคุมจะเริ่มส่งต่อเหตุการณ์เมาส์เช่นกันและการคลิก 2 ปุ่มจะสิ้นสุดการส่งกิจกรรมเมาส์ นอกจากนี้เมื่อคุณเปิดใช้งานการส่งต่อเมาส์ด้วยการคลิกในหน้าต่างควบคุมเหตุการณ์แป้นพิมพ์ทั้งหมดจะถูกส่งไปยังเป้าหมายและไม่มีไปยังแหล่งที่มา ดังนั้น ALT-TAB จะถูกส่งไปยังเป้าหมายโดยไม่ทำการเบลอหน้าต่างควบคุมบนเครื่องต้นทาง
ฉันเปิดใช้งานเดสก์ท็อปเสมือนบนเครื่องต้นทางดังนั้นฉันจึงติดหน้าต่างควบคุม x2x บนเดสก์ท็อประยะไกลและไปที่นั่นเมื่อฉันต้องการควบคุมเครื่องเป้าหมายเท่านั้น
โซลูชันรุ่นนี้อยู่ที่ระดับ X ซึ่งคำตอบข้างต้นอยู่ที่ระดับอุปกรณ์ linux แน่นอนว่าสิ่งนี้จะไม่ทำงานเลยหากคุณไม่ได้ใช้ X บนทั้งเป้าหมายและแหล่งที่มา
nc -l 4444
-p
ตามman nc
, เป็นสิ่งต้องห้ามอย่างชัดเจนในการรวมกันกับ-p
-l
มิฉะนั้นนี้เป็นวิธีการแก้ปัญหาที่ยอดเยี่ยมและเป็นเพียงแค่สิ่งที่ฉันต้องการ :)