Extcap을 사용하여 패킷 스니핑

GitHub에서 소스 보기

이 가이드에서는 Wireshark의 extcap를 구성하여 스레드 네트워크의 패킷을 스니핑하는 방법을 설명합니다.

extcap 없이 패킷 스니핑에 Pyspinel을 사용하려면 Pyspinel을 사용한 패킷 스니핑을 참고하세요.

스니퍼 환경 설정

시작하기 전에 다음 단계를 완료하세요.

인증

이 가이드는 다음 호스트 시스템에서 Zolertia Firefly (Texas Instruments CC2538 SoC)를 사용하여 확인되었습니다.

  • Debian 4.19.37 — Wireshark 3.0.4
  • macOS Mojave 10.14.6 — Wireshark 3.0.5
  • 64비트 Windows 10 버전 17134 — Wireshark 3.0.6

스니퍼 빌드 및 플래시

빌드 및 플래싱 안내는 플랫폼에 따라 다릅니다.

CC2538 빌드 및 플래싱에 관한 안내는 GitHub의 CC2538 예시 리드미를 참고하세요.

일반적인 빌드 안내는 OpenThread 빌드 방법을 참고하세요.

스니퍼 사용

Wireshark를 처음 실행하면 Wireshark 캡처 화면이 표시됩니다. OpenThread 스니퍼에 연결된 하드웨어 인터페이스가 표시됩니다.

단일 인터페이스에서 캡처

인터페이스를 처음 사용하는 경우 인터페이스 왼쪽에 있는 옵션 버튼을 클릭합니다.

OT 스니퍼 Wireshark Extcap 캡처

  1. 채널을 원하는 값으로 설정합니다.
  2. IEEE 802.15.4 TAP을 선택하여 채널 정보가 pcap 출력에 포함되어 있고 Wireshark GUI에 표시될 수 있는지 확인합니다.
  3. 캡처 시작 시 매개변수 저장을 선택하여 이러한 매개변수가 캡처 시작 후 저장되도록 합니다. 그러면 채널을 변경해야 하는 경우가 아니라면 다음에 인터페이스를 사용할 때 매개변수를 다시 설정하지 않아도 됩니다.
  4. 시작을 클릭합니다.

OT Sniffer Wireshark Extcap 옵션

매개변수가 이미 저장된 경우 하드웨어 인터페이스를 선택하고 왼쪽 상단의 Wireshark 아이콘을 클릭하여 스니핑을 시작합니다.

여러 인터페이스에서 캡처

캡처 화면에 표시된 모든 하드웨어 인터페이스를 선택하고 왼쪽 상단의 Wireshark 아이콘을 클릭합니다.

이 필드를 사용하여 여러 인터페이스에서 캡처할 때 개별 스니퍼를 식별합니다.

  • 인터페이스 ID (frame.interface_id): Wireshark에서 캡처 인터페이스를 식별하는 데 사용하는 인터페이스 식별자입니다.
  • 인터페이스 이름 (frame.interface_name) — Wireshark에서 캡처 인터페이스를 식별하는 데 사용하는 인터페이스 이름입니다.
  • 채널 (wpan-tap.ch_num) — IEEE 802.15.4 캡처 채널 (범위: 11~26)

OT 스니퍼 Wireshark Extcap 패킷

문제 해결

OpenThread 스니퍼가 Wireshark 인터페이스로 표시되지 않음

  1. Python 인터프리터가 여러 개 설치되어 있는 경우 extcap 스크립트에서 Python 3 인터프리터를 사용하고 있는지 확인합니다. Pyspinel은 Python 2를 지원하지 않습니다.
  2. 하드웨어가 USB에서 열거되고 드라이버가 로드되었는지 확인합니다.
  3. 올바른 펌웨어 (NCP 또는 RCP)가 하드웨어에 플래시되었는지 확인합니다.
  4. extcap 경로에 있는 Python 스크립트가 실행 가능한지 확인합니다.
    • 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에서는 루트 사용자만 패킷을 캡처할 수 있음

Ubuntu에서 Wireshark를 설치하는 동안 사용자에게 다음 옵션 중 하나를 선택하라는 메시지가 표시됩니다.

  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를 닫았다가 다시 시작하여 새 사용자 그룹 설정을 적용합니다.

Windows에서 여러 USB 인터페이스를 캡처할 때 Wireshark 형식 오류가 발생함

이는 일부 이전 버전의 Wireshark에서 발생하는 알려진 문제입니다. Wireshark 3.0.6 이상을 사용하고 있는지 확인합니다.