การดักจับแพ็กเก็ตโดยใช้ Extcap

ดูซอร์สโค้ดใน GitHub

คู่มือนี้อธิบายวิธีกำหนดค่า extcap สำหรับ Wireshark เพื่อสนิฟแพ็กเก็ตจากเครือข่ายเทรด

หากต้องการใช้ Pyspinel สําหรับการสแกนหาแพ็กเก็ตโดยไม่ใช้ extcap โปรดดูการสแกนหาแพ็กเก็ตด้วย Pyspinel

ตั้งค่าสภาพแวดล้อมของโปรแกรมสนิฟเฟอร์

ก่อนเริ่มต้น ให้ทำตามขั้นตอนต่อไปนี้

การยืนยัน

คู่มือนี้ได้รับการยืนยันด้วย Zolertia Firefly (Texas Instruments CC2538 SoC) ในระบบโฮสต์ต่อไปนี้

  • Debian 4.19.37 — Wireshark 3.0.4
  • macOS Mojave 10.14.6 — Wireshark 3.0.5
  • Windows 10 เวอร์ชัน 17134 แบบ 64 บิต — Wireshark 3.0.6

สร้างและแฟลชโปรแกรมสนิฟ

วิธีการสร้างและแฟลชจะแตกต่างกันไปตามแพลตฟอร์ม

ดูวิธีการสร้างและแฟลช CC2538 ได้ที่ CC2538 example README ใน GitHub

ดูวิธีการสร้างทั่วไปได้ที่วิธีสร้าง OpenThread

ใช้โปรแกรมสนิฟเฟอร์

หน้าจอการบันทึกของ Wireshark จะแสดงขึ้นเมื่อเปิด Wireshark เป็นครั้งแรก โดยควรแสดงรายการอินเทอร์เฟซฮาร์ดแวร์ที่เชื่อมต่อกับเครื่องมือสนิฟ OpenThread

บันทึกจากอินเทอร์เฟซเดียว

หากใช้อินเทอร์เฟซเป็นครั้งแรก ให้คลิกปุ่มตัวเลือกทางด้านซ้ายของอินเทอร์เฟซ

OT Sniffer Wireshark Extcap Capture

  1. ตั้งค่า Channel เป็นค่าที่ต้องการ
  2. ตรวจสอบ IEEE 802.15.4 TAP เพื่อให้แน่ใจว่าข้อมูลช่องรวมอยู่ในเอาต์พุต pcap และแสดงใน GUI ของ Wireshark ได้
  3. เลือกบันทึกพารามิเตอร์เมื่อเริ่มการจับภาพเพื่อให้ระบบบันทึกพารามิเตอร์เหล่านี้หลังจากเริ่มการจับภาพ เพื่อหลีกเลี่ยงการตั้งค่าอีกครั้งในครั้งถัดไปที่คุณใช้อินเทอร์เฟซ (เว้นแต่จะต้องเปลี่ยนช่อง)
  4. คลิกเริ่ม

ตัวเลือก OT Sniffer Wireshark Extcap

หากบันทึกพารามิเตอร์ไว้แล้ว ให้เริ่มการสแกนโดยเลือกอินเทอร์เฟซฮาร์ดแวร์ แล้วคลิกไอคอน Wireshark ที่ด้านซ้ายบน

บันทึกจากอินเทอร์เฟซหลายรายการ

เลือกอินเทอร์เฟซฮาร์ดแวร์ทั้งหมดที่แสดงในหน้าจอการจับภาพ แล้วคลิกไอคอน Wireshark ที่ด้านซ้ายบน

ใช้ช่องเหล่านี้เพื่อระบุ Sniffer แต่ละรายการเมื่อบันทึกจากอินเทอร์เฟซหลายรายการ

  • รหัสอินเทอร์เฟซ (frame.interface_id) - ตัวระบุอินเทอร์เฟซที่ Wireshark ใช้เพื่อระบุอินเทอร์เฟซการบันทึก
  • ชื่ออินเทอร์เฟซ (frame.interface_name) — ชื่ออินเทอร์เฟซที่ Wireshark ใช้เพื่อระบุอินเทอร์เฟซการบันทึก
  • ช่อง (wpan-tap.ch_num) — ช่องการจับภาพ IEEE 802.15.4 (ช่วง: 11-26)

แพ็กเก็ต Extcap ของ Wireshark สำหรับ OT Sniffer

การแก้ปัญหา

เครื่องมือสนิฟ OpenThread ไม่แสดงเป็นอินเทอร์เฟซ Wireshark

  1. หากคุณติดตั้งโปรแกรมแปลภาษา Python ไว้หลายตัว ให้ตรวจสอบว่าสคริปต์ extcap ใช้โปรแกรมแปลภาษา Python 3 Pyspinel ไม่รองรับ Python 2
  2. ตรวจสอบว่าระบบระบุฮาร์ดแวร์ใน USB และโหลดไดรเวอร์แล้วหรือไม่
  3. ตรวจสอบว่าได้แฟลชเฟิร์มแวร์ (NCP หรือ RCP) ที่ถูกต้องลงในฮาร์ดแวร์แล้ว
  4. ตรวจสอบว่าสคริปต์ Python ที่อยู่ในเส้นทาง extcap เป็นแบบเรียกใช้ได้
    • สำหรับ OS X และ Linux ให้ทำดังนี้
      1. ตรวจสอบว่ามีสิทธิ์เรียกใช้สำหรับไฟล์ extcap_ot.py ดังนี้
        ls -l extcap_ot.py
        
      2. หากไม่มีสิทธิ์เรียกใช้ (x) ให้แก้ไขสิทธิ์ดังนี้
        chmod +x extcap_ot.py
        
      3. ตรวจสอบว่าอินเทอร์เฟซแสดงอยู่ในรายการแล้ว โดยทำดังนี้
        extcap_ot.py --extcap-interfaces
        
    • สำหรับ Windows ให้ทำดังนี้
      1. ตรวจสอบว่าอินเทอร์เฟซแสดงอยู่ในรายการแล้ว โดยทำดังนี้
        extcap_ot.bat --extcap-interfaces
        
      2. หากการดําเนินการนี้ออกมาพร้อมกับข้อผิดพลาด Python ให้ตรวจสอบว่าเวอร์ชัน Python เป็น 3.x ดังนี้
        py -3 --version
        

Wireshark อนุญาตให้ผู้ใช้รูทบันทึกแพ็กเก็ตเท่านั้น

ในระหว่างการติดตั้ง Wireshark ใน Ubuntu ระบบจะแจ้งให้ผู้ใช้เลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  1. สร้างกลุ่มผู้ใช้ wireshark และอนุญาตให้สมาชิกทุกคนในกลุ่มนั้นบันทึกแพ็กเก็ต
  2. อนุญาตให้ผู้ใช้ root บันทึกแพ็กเก็ตเท่านั้น

ไม่แนะนําอย่างยิ่งให้ใช้ Wireshark เป็นผู้ใช้ root หากคุณเลือกตัวเลือกดังกล่าว ให้เปลี่ยนการตั้งค่าดังนี้

sudo dpkg-reconfigure wireshark-common

หากกำหนดค่า Wireshark ให้จำกัดการบันทึกไว้สำหรับสมาชิกของกลุ่ม wireshark คุณอาจต้องเพิ่มผู้ใช้ที่ถูกต้องลงในกลุ่ม โดยทำดังนี้

sudo usermod -a -G wireshark user

เพิ่มผู้ใช้ที่ถูกต้องลงในกลุ่ม dialout ด้วย

sudo usermod -a -G dialout user

ปิดและเปิด Wireshark อีกครั้งเพื่อใช้การตั้งค่ากลุ่มผู้ใช้ใหม่

ข้อผิดพลาดเกี่ยวกับรูปแบบ Wireshark เมื่อบันทึกอินเทอร์เฟซ USB หลายรายการใน Windows

นี่เป็นปัญหาที่ทราบสำหรับ Wireshark บางเวอร์ชันเก่า ตรวจสอบว่าคุณใช้ Wireshark 3.0.6 ขึ้นไป