Table of Contents
nRF52840 Dongle 을 이용한 블루투스 패킷 스니핑
아래 테스트는 우분투 환경에서 진행합니다.
사전준비
# 1. 시스템 패키지 업데이트 및 필요 도구 설치
sudo apt update
sudo apt install -y wireshark python3-pip python3-serial
# 2. Wireshark 권한 설정 (현재 사용자를 wireshark 그룹에 추가)
sudo usermod -aG wireshark $USER
sudo usermod -aG dialout $USER
# 3. virtualenv
sudo apt-get install -y virtualenv
mkdir -p ~/work/nRF52840
cd ~/work/nRF52840
python -m venv venv
source venv/bin/activate
펌웨어 다운로드
wget https://nsscprodmedia.blob.core.windows.net/prod/software-and-other-downloads/desktop-software/nrf-sniffer/sw/nrf_sniffer_for_bluetooth_le_4.1.1.zip
unzip nrf_sniffer_for_bluetooth_le_4.1.1.zip
# 펌웨어
ls -al hex/sniffer_nrf52840dongle_nrf52840_4.1.1.hex
# Wireshark 연동 플러그인 스크립트
ls -al extcap/
펌웨어 플래싱
Window PC 에서 진행합니다.
nRF Connect for Desktop 실행
Programmer 실행

등글 연결
nRF52840 Dongle DFU 모드 진입
아래 사진을 참조해서 화살표 끝의 스위치를 눌러줍니다.
1-3초간 눌러주면 LED 가 점멸하기 시작합니다.
라즈베리파이3 에서 아무 작동을 하지 않았고, 라즈베리파이4 에서 정상적으로 DFU 모드로 진입했습니다.
내 기기만의 문제인지는 모릅니다.

sniffer_nrf52840dongle_nrf52840_4.1.1.hex 드래그 드랍
Write 버튼을 누릅니다.
Wireshark extcap 플러그인 설치
# extcap 파이썬 패키지 의존성 설치
pip3 install -r extcap/requirements.txt
# Wireshark extcap 디렉토리 생성 및 파일 복사
mkdir -p ~/.local/lib/wireshark/extcap
cp -r extcap/* ~/.local/lib/wireshark/extcap/
chmod +x ~/.local/lib/wireshark/extcap/nrf_sniffer_ble.py
실행 (With GUI)
wireshark
실행 (Without GUI)
sudo apt update
sudo apt install tshark
# 네트워크 인터페이스 목록 확인
tshark -D
# 특정 인터페이스에서 패킷 실시간 캡처
# 인터페이스 번호로 실행
tshark -i 12
# 또는 인터페이스 경로/이름으로 실행
tshark -i /dev/ttyACM0-4.4
tshark -i /dev/ttyACM0-4.4 -Y 'nordic_ble.rssi >= -70' -t a --color
tshark -i /dev/ttyACM0-4.4 -Y 'nordic_ble.rssi >= -60' -t a \
-T fields \
-e frame.number \
-e frame.time \
-e nordic_ble.channel \
-e btle.advertising_header.pdu_type \
-e btle.advertising_address \
-e btle.length \
-e nordic_ble.rssi\
-e btcommon.eir_ad.entry.company_id \
-e btcommon.eir_ad.entry.device_name