Sniff พอร์ตอนุกรมบน Linux


25

ฉันจะดมกลิ่นแพ็คเก็ตสื่อสารผ่านพอร์ตอนุกรมบน Linux ได้อย่างไร


1
หากมีคำตอบให้คำตอบสำหรับคำถามของคุณคุณควรตอบรับ ( meta.serverfault.com/questions/1033/… )
Olli

คำตอบ:


27

มีตัวเลือกน้อย:

  • sersniffเป็นโปรแกรมง่าย ๆ ในการ tunnel / sniff ระหว่าง 2 พอร์ตอนุกรม

  • Serial to Network Proxy (ser2net)เป็นช่องทางให้ผู้ใช้เชื่อมต่อจากการเชื่อมต่อเครือข่ายไปยังพอร์ตอนุกรม

  • SerialSpyทำหน้าที่เป็นอุปกรณ์การส่งผ่านแบบอนุกรม มันรับฟังข้อมูลที่เข้ามาในสองพอร์ตอนุกรมและส่งต่อไปเพื่อให้อุปกรณ์ทำหน้าที่ราวกับว่าพวกเขาเชื่อมต่อโดยตรง นอกจากนี้ยังบันทึกข้อมูลในขณะที่เคลื่อนผ่านพอร์ต

  • sercdเป็นตัวเปลี่ยนเส้นทางพอร์ตอนุกรมที่เข้ากันได้กับ RFC 2217 ช่วยให้คุณแบ่งปันพอร์ตอนุกรมผ่านเครือข่าย มันขึ้นอยู่กับความน่าเบื่อ โปรโตคอล RFC2217 เป็นส่วนขยายของ telnet และอนุญาตให้เปลี่ยนพารามิเตอร์พอร์ตการสื่อสาร

  • SerLooKเป็นแอพพลิเคชั่น KDE สำหรับตรวจสอบข้อมูลผ่านสายอนุกรม สามารถทำงานเป็นเทอร์มินัลไบนารีที่ส่งและรับข้อมูลผ่านพอร์ตที่กำหนด (โหมด Point to Point) และแสดงผลในมุมมองที่แยกต่างหาก แต่ละมุมมองสามารถกำหนดค่าให้แสดงข้อมูลเป็นเลขฐานสิบหกทศนิยมฐานแปดไบนารีและ ASCII แบบดิบ นอกจากนี้ยังสามารถดำเนินการ I / O ผ่านมุมมองการจำลองเทอร์มินัลและกำหนดพอร์ตที่สองและตรวจสอบการรับส่งข้อมูลระหว่างโฮสต์ภายนอกสองเครื่องโดยใช้สายเคเบิล "Y" (โหมด Snooper)

  • nullmodemสร้างเครือข่ายเสมือนของเทอร์มินัลเทียม มันสามารถใช้เป็นอะแดปเตอร์เพื่อเชื่อมต่อสองโปรแกรมที่ปกติต้องใช้การ์ดเชื่อมต่อแบบอนุกรม

  • จอภาพttywatchบันทึกและมัลติมิเตอร์ I / O ของเทอร์มินัล มันมีการหมุนบันทึกในตัวเต็มรูปแบบและสามารถใช้ telnet เช่นเดียวกับพอร์ต TTY ท้องถิ่น

  • Sniffer บรรทัดอนุกรม (slsnif) เป็นยูทิลิตี้การบันทึกพอร์ตอนุกรม มันฟังพอร์ตอนุกรมที่ระบุและบันทึกข้อมูลทั้งหมดผ่านพอร์ตนี้ในทั้งสองทิศทาง


2
คุณสามารถบรรลุนี้กับเครื่องมือมาตรฐานที่ใช้และsocat 1)tee เอาท์พุทจะทำให้คุณสองพอร์ตsocat -d -d pty,raw,echo=0 pty,raw,echo=0 ...N PTY is /dev/pts/27... N PTY is /dev/pts/282) sudo cat /dev/ttyS0 | tee /dev/pts/27และใน sudo cat /deb/pts/27 | tee /dev/ttyS0terminal สุดท้าย 3) /dev/tty/28การเชื่อมต่อโปรแกรมของคุณจะ คำสั่งทีสองจะดัมพ์ทั้งสองทิศทางไปยังคอนโซลและส่งต่อไปยัง / จากพอร์ตอนุกรมจริง โปรดทราบว่าการตั้งค่าพอร์ตเช่น baudrate ต้องถูกกำหนดค่าไว้ล่วงหน้า
jtpereyda

คุณสามารถบันทึกสิ่งทีไปยังแฟ้มเกินไปcat /dev/pts/27 | sudo tee /dev/ttyS0 serial-capsและจะช่วยถ้าเป็นโปรโตคอลไบนารี:xxd cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd
jtpereyda

@jtpereyda ดูเหมือนว่าขั้นตอนที่ 3 ของคุณควรจะเชื่อมต่อโปรแกรมกับ / dev / ttyS0 เช่นเมื่อฉันเชื่อมต่อ PUTTY ที่นั่นไปที่ / dev / ttyS0 มันแสดงให้ฉันเห็นอย่างถูกต้องว่าการส่งออกในขั้นตอนที่ 2 ในขณะที่ยังสื่อสารกับบอร์ดฝังตัวจริง BTW คุณมีการพิมพ์ผิดควรจะเป็น/deb/pts/27 /dev/pts/27ก็cat /deb/pts/27 | tee /dev/ttyS0ควรจะเป็นcat /dev/pts/27 | sudo tee /dev/ttyS0
กระตือรือร้น

คำตอบนี้เก่ามากโปรดพิจารณา interceptty สำหรับการดมกลิ่นพอร์ตอนุกรม
46717

1
คุณสามารถระบุได้ว่าเป็นคำตอบอื่น @CharlesB อธิบายว่าทำไมมันถึงดีกว่าก็จะดีเช่นกัน
ลูกไก่

12

ฉันพยายามสกัดกั้น ( คัดลอกที่ GitHub ) และประสบความสำเร็จในการใช้งาน ครั้งแรกที่ฉันวิ่งบนพอร์ตที่น่าสนใจ:

interceptty /dev/ttyACM0 

จากนั้นฉันเชื่อมต่อโปรแกรมภายใต้การทดสอบกับเทอร์มินัลหลอก/dev/pts/5ที่สร้างการดักฟัง


ฉันพยายามใช้slsnifแต่ฉันพบว่ามีข้อผิดพลาด:

Failed to open a pty: No such file or directory

รายการส่งเมลนี้บ่งชี้ว่า slsnif รองรับ "ปลอม" เทอร์มินัลหลอก ( /dev/ttyp0ฯลฯ ) ซึ่งอาจไม่ได้ใช้กับเคอร์เนล Linux ปัจจุบัน


1
ขอบคุณ! ข้อผิดพลาดเดียวกันที่นี่ในอุปกรณ์ฝังตัวของฉัน จากนั้นฉันก็ใช้intercepttyและทำงานได้!
gfleck

คุณจะรู้ได้อย่างไรว่าเทอร์มินัลหลอกใดที่สร้างขึ้น?
chwi

@chwi คุณสามารถให้พารามิเตอร์ตัวที่สองซึ่งเป็นชื่อของ "อุปกรณ์หน้า" ซึ่งเป็น symlink ไปยังสถานีหลอกที่สร้างขึ้น
Craig McQueen

ขอขอบคุณ. ฉันพบว่าโดยค่าเริ่มต้นจะสร้าง / dev / intercepttydummy ฉันสามารถดูการรับส่งข้อมูลได้ แต่ข้อมูลขาเข้าจากอุปกรณ์นั้นถูกอ่านโดยการสกัดกั้นเท่านั้นไม่ใช่ซอฟต์แวร์ของฉันที่ใช้ pyserial
chwi

3

ลองใช้jpnevulator (เดเบียนบรรจุ) หรือslsniff โปรดทราบว่า slsniff ใช้โมเดลการจำลองเทอร์มินัลที่เลิกใช้แล้ว

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