คู่มือนี้อธิบายวิธีกำหนดค่า extcap สำหรับ Wireshark เพื่อสนิฟแพ็กเก็ตจากเครือข่ายเทรด
หากต้องการใช้ Pyspinel สําหรับการสแกนหาแพ็กเก็ตโดยไม่ใช้ extcap โปรดดูการสแกนหาแพ็กเก็ตด้วย Pyspinel
ตั้งค่าสภาพแวดล้อมของโปรแกรมสนิฟเฟอร์
ก่อนเริ่มต้น ให้ทำตามขั้นตอนต่อไปนี้
- ตรวจสอบข้อกำหนดในการสนิฟแพ็กเก็ต
- ติดตั้งและกำหนดค่า Wireshark
- ติดตั้ง Pyspinel และไลบรารีที่เกี่ยวข้องด้วย extcap
การยืนยัน
คู่มือนี้ได้รับการยืนยันด้วย 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
บันทึกจากอินเทอร์เฟซเดียว
หากใช้อินเทอร์เฟซเป็นครั้งแรก ให้คลิกปุ่มตัวเลือกทางด้านซ้ายของอินเทอร์เฟซ
- ตั้งค่า Channel เป็นค่าที่ต้องการ
- ตรวจสอบ IEEE 802.15.4 TAP เพื่อให้แน่ใจว่าข้อมูลช่องรวมอยู่ในเอาต์พุต pcap และแสดงใน GUI ของ Wireshark ได้
- เลือกบันทึกพารามิเตอร์เมื่อเริ่มการจับภาพเพื่อให้ระบบบันทึกพารามิเตอร์เหล่านี้หลังจากเริ่มการจับภาพ เพื่อหลีกเลี่ยงการตั้งค่าอีกครั้งในครั้งถัดไปที่คุณใช้อินเทอร์เฟซ (เว้นแต่จะต้องเปลี่ยนช่อง)
- คลิกเริ่ม
หากบันทึกพารามิเตอร์ไว้แล้ว ให้เริ่มการสแกนโดยเลือกอินเทอร์เฟซฮาร์ดแวร์ แล้วคลิกไอคอน Wireshark ที่ด้านซ้ายบน
บันทึกจากอินเทอร์เฟซหลายรายการ
เลือกอินเทอร์เฟซฮาร์ดแวร์ทั้งหมดที่แสดงในหน้าจอการจับภาพ แล้วคลิกไอคอน Wireshark ที่ด้านซ้ายบน
ใช้ช่องเหล่านี้เพื่อระบุ Sniffer แต่ละรายการเมื่อบันทึกจากอินเทอร์เฟซหลายรายการ
- รหัสอินเทอร์เฟซ (frame.interface_id) - ตัวระบุอินเทอร์เฟซที่ Wireshark ใช้เพื่อระบุอินเทอร์เฟซการบันทึก
- ชื่ออินเทอร์เฟซ (frame.interface_name) — ชื่ออินเทอร์เฟซที่ Wireshark ใช้เพื่อระบุอินเทอร์เฟซการบันทึก
- ช่อง (wpan-tap.ch_num) — ช่องการจับภาพ IEEE 802.15.4 (ช่วง: 11-26)
การแก้ปัญหา
เครื่องมือสนิฟ OpenThread ไม่แสดงเป็นอินเทอร์เฟซ Wireshark
- หากคุณติดตั้งโปรแกรมแปลภาษา Python ไว้หลายตัว ให้ตรวจสอบว่าสคริปต์ extcap ใช้โปรแกรมแปลภาษา Python 3 Pyspinel ไม่รองรับ Python 2
- ตรวจสอบว่าระบบระบุฮาร์ดแวร์ใน USB และโหลดไดรเวอร์แล้วหรือไม่
- ตรวจสอบว่าได้แฟลชเฟิร์มแวร์ (NCP หรือ RCP) ที่ถูกต้องลงในฮาร์ดแวร์แล้ว
- ตรวจสอบว่าสคริปต์ Python ที่อยู่ในเส้นทาง extcap เป็นแบบเรียกใช้ได้
- สำหรับ OS X และ Linux ให้ทำดังนี้
- ตรวจสอบว่ามีสิทธิ์เรียกใช้สำหรับไฟล์
extcap_ot.py
ดังนี้ls -l extcap_ot.py
- หากไม่มีสิทธิ์เรียกใช้ (x) ให้แก้ไขสิทธิ์ดังนี้
chmod +x extcap_ot.py
- ตรวจสอบว่าอินเทอร์เฟซแสดงอยู่ในรายการแล้ว โดยทำดังนี้
extcap_ot.py --extcap-interfaces
- ตรวจสอบว่ามีสิทธิ์เรียกใช้สำหรับไฟล์
- สำหรับ Windows ให้ทำดังนี้
- ตรวจสอบว่าอินเทอร์เฟซแสดงอยู่ในรายการแล้ว โดยทำดังนี้
extcap_ot.bat --extcap-interfaces
- หากการดําเนินการนี้ออกมาพร้อมกับข้อผิดพลาด Python ให้ตรวจสอบว่าเวอร์ชัน Python เป็น 3.x ดังนี้
py -3 --version
- ตรวจสอบว่าอินเทอร์เฟซแสดงอยู่ในรายการแล้ว โดยทำดังนี้
- สำหรับ OS X และ Linux ให้ทำดังนี้
Wireshark อนุญาตให้ผู้ใช้รูทบันทึกแพ็กเก็ตเท่านั้น
ในระหว่างการติดตั้ง Wireshark ใน Ubuntu ระบบจะแจ้งให้ผู้ใช้เลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้
- สร้างกลุ่มผู้ใช้
wireshark
และอนุญาตให้สมาชิกทุกคนในกลุ่มนั้นบันทึกแพ็กเก็ต - อนุญาตให้ผู้ใช้
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 ขึ้นไป