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 예시 README를 참고하세요.

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

스니퍼 사용

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

단일 인터페이스에서 캡처

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

OT 스니퍼 와이어샤크 Extcap 캡처

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

OT 스니퍼 와이어샤크 Extcap 옵션

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

여러 인터페이스에서 캡처

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

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

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

OT 스니퍼 와이어샤크 엑스캡 패킷

문제 해결

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 이상을 사용 중인지 확인합니다.