기본 콘텐츠로 건너뛰기

BLE Sniffer 방법

TESTO사의   BLE기반 온도계를 KISOK(윈도 OS)에 연결하여야 할 프로젝트를 진행한 후기입니다.

단계별로 관련 내용과 C#  소스 코드 공개합니다.

스니핑툴로 nRF52832 DK를 사용하기로 하고 Wireshark을 통해 패킷분석 진행후  C#으로 윈도용 프로그램을 개발한 내용입니다.

링크를 통해 노르딕 인포센터에 접속하면 nRF Sniffer를 만드는 방법에 대해서 자세히 나와 있습니다.

1. nRF Sniffer를 사용해 블루투스 패킷을 확인하는데 필요한 프로그램인 Wireshark를 다운로드

2. Windows Installer (64-bit, *OS따라 선택 필요)를 선택해 설치 과정 중 따로 변경하지 않고 기본 설정으로 설치하시면 됩니다.

3. nRF52 DK를 Packet sniffer로 만들어주기 위한 nRF Sniffer 소프트웨어를 사이트에 접속해 다운로드
    (bluetooth le 버전중 최신 버전을 선택하시면 됩니다.)
doc 폴더에는 nRF Sniffer 사용 방법에 대한 문서가 들어 있다.

4. 다운로드한  ZIP파일을 압축해제하한 extcap 폴더에는 nRF Sniffer를 사용하기 위한 파이썬 코드가 들어있습니다.

    hex 폴더에는 nRF Sniffer 펌웨어인 hex 파일이 들어있습니다.

   Profile_nRF_Sniffer_Bluetooth_LE 폴더에는 Whireshark에서 사용할 수 있는 프로파일 설정이 들어있습니다.

Development kit/dongleFirmware file name
nRF52840 DK (PCA10056)sniffer_nrf52840dk_nrf52840_*.hex
nRF52840 Dongle (PCA10059)sniffer_nrf52840dongle_nrf52840_*.hex
nRF52 DK (PCA10040)sniffer_nrf52dk_nrf52832_*.hex
nRF51 DK (PCA10028)sniffer_nrf51dk_nrf51422_*.hex
nRF51 DK (PCA10031)sniffer_nrf51dongle_nrf51422_*.hex

5. 펌웨어 파일을 nRF52 DK에 다운로드하기 위해서 nRF Connect for Desktop 프로그램을 설치해야 합니다.
   (판매중인 nRF52* DK 관련 펌웨어가 사전 설치된 경우도 있으나,  그냥 재설치 한다 생각하시면 편함~)

6. 설치 과정 중 별도의 설정을 변경하지 않고 기본 설정 그대로 설치하셔도 됩니다.

7. nRF Connect fo Desktop을 설치하고 실행하면 APP을 설치할 수 있는 창이 나타납니다.

7. Search 창에서 Programmer를 검색하면 nRF Programmer 항목이 나타나며 Install 버튼을 눌러 설치하시면 됩니다.

8. 설치가 끝나면 Install 버튼이 Open 버튼으로 변경되며 이 버튼을 눌러 Programmer를 실행할 수 있습니다.

9. Programmer가 실행되면 Select device 항목을 눌러 연결된 nRF52 DK 장치가 연결된 포트를 선택

10. File 카테고리의 Add HEX file을 선택해 설치할 nRF Sniffer 펌웨어 선택

11. Device 카테고리에서 Erase & Write 항목을 선택해 nRF52 DK의 플래시 메모리에 남아있는 내용을 삭제하고, nRF Sniffer 펌웨어를 nRF52 DK에 다운로드 

** 여기까지 nRF52 DK를 nRF Sniffer로 만드는 방법 입니다.

** 이제부터 Wireshark을 통해 블루투스 패킷을 확인할 수 있도록 프로그램 세팅이 필요합니다.

12. Wireshark 프로그램을 실행하고 메뉴바에서 Help > About Wireshark를 선택하고 Folders 탭으로 이동

13. Global Extcap path의 Location 부분을 더블클릭하여 폴더 오픈

14. \nrf_sniffer_for_bluetooth_le_***\extcap 폴더 안의 파일들을 복사해 \Wireshark\extcap 폴더에 붙여 넣기

**  지금부터는 파이썬 3.4이상이 설치되어 있어야 진행 가능합니다.

** AI, Bigdata에 있어 필수인 파이썬 겸사겸사 같이 설치하시죠~~~

15. Window키 + R,  cmd 엔터로 명령 프롬프트 실행 또는 PowerShell을 실행하고  다음 명령어를 입력

> pip3 install -r .\requirements.txt
> .\nrf_sniffer_ble.bat--extcap-interfaces

위 그림이 보이면 정상설치 완료~~~

(Wireshark 프로그램에서 외부 캡처 플러그인(Plugin for nRF Sniffer Capture Tool)을 사용할 수 있도록 설정 완료)

16. Wireshark 프로그램의 시작 화면에서 F5 키를 눌러 인터페이스 목록 새로고침 

17. Wireshark 메뉴바에서 View > Interface Toolbars > nRF Sniffer for Bluetooth LE 항목 선택

18. Wireshark 메뉴바에서 Help > About Wireshark를 선택, Folders 탭으로 이동한 다음 Personal configuration의 Loaction을 더블클릭해 폴더를 열고 profiles 폴더로 이동

19. \nrf_sniffer_for_bluetooth_le_3.***폴더 안의 Profile_nRF_Sniffer_Bluetooth_LE 폴더를 \Wireshark\profiles 폴더에 복사

20. 메뉴바에서 Edit > Configuration Profiles를 선택하고 Profile_nRF_Sniffer_Bluetooth_LE를 누른 다음 확인 버튼 클릭

** Wireshark 프로그램에서 nRF Sniffer로 블루투스 패킷을 캡처할 수 있는 프로파일 설정 끝났습니다.


nRF Sniffer 사용하기

블루투스 패킷을 캡처하려면 컴퓨터와 nRF Sniffer가 연결된 상태에서 다음 사진과 같이 블루투스 장치를 배치한다.

Wireshark 프로그램을 실행하면 시작 화면에 Interface Toolbar가 있으며 nRF Sniffer가 정상적으로 연결 상태라면 포트가 확인된다.

nRF Sniffer for Bluetooth LE COMx를 더블 클릭하면 블루투스 패킷 캡처 화면으로 전환되며 주변의 블루투스 패킷들을 스니핑 할 수 있다.


댓글

이 블로그의 인기 게시물

2 files found with path 'lib/x86_64/libc++_shared.so' from inputs: 오류 해결 방법

안드로이드스튜디오로 앱을 개발하는 과정에서 플러그인, 외부 라이브러리를 추가하다 보면 "2 files found with path 'lib/ x86_64 /libc++_shared.so' from inputs: "과 같은 오류를 만날 수 있다. 'lib/x86_64/libc++_shared.so' 파일이 2개의 라이브러리에서 참조되어 발생하는 문제로 컴파일 환경에 따라 플랫폼 부분은 변경되면 나타날 수 있다 app수준의 build.gradle 파일에 다음과 같이 처리하면 관련 문제를 깔끔하게 처리 가능하다. android { ... packagingOptions { pickFirst 'lib/ x86 /libc++_shared.so' pickFirst 'lib/ x86_64 /libc++_shared.so' pickFirst 'lib/ arm64-v8a /libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' } ... } * 실제 내 앱소스내 코드임 * 위와 같이 컴파일 환경에서 제공하는 플랫폼별 참조를 전부 한번에 처리하는게 관련 오류를 원천 차단할 수 있는 방법이다.

Visual Studio Xamarin 프로젝트에서 Google Play Services 광고 SDK를 사용하는 방법

1. NuGet 패키지 설치 (패키지 관리자 콘솔 이용)      Install-Package Xamarin.GooglePlayServices.Ads 2.  Google Play Services 추가     - 프로젝트의 Android 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "Google Play 서비스 추가" 선택     - "광고" 카테고리에서 "광고"를 선택하고 확인 버튼 클릭   3. Android 매니페스트 업데이트     - Android 프로젝트의 Properties 폴더에서 AndroidManifest.xml 파일 선택     - manifest 요소에 다음 사용 권한 추가       <uses-permission android:name="android.permission.INTERNET" />     - application 요소 내에 다음 <meta-data> 요소를 추가       <meta-data          android:name="com.google.android.gms.ads.APPLICATION_ID"          android:value="현재 앱의 AdMob ID" /> 4. 레이아웃 파일에 광고 뷰 추가     - 광고를 추가할 레이아웃 파일 (예: activity_main.axml)을 오픈     - AdView를 추가하기 위해 원하는 위치에 <com.google.android.gms.ads.AdView> 요소 추가  <com.google.android.gms.ads.AdView     android:id="@+id/adView" ...

안드로이드용 무료 나스모 공개

■ 구글 플레이 스크린골프 가시면 스윙후에 자기 스윙모습을 보여주는 나스모 아시죠? 그 나스모를 내 핸드폰으로 옮겨놓은 무료 프로그램 입니다. "매직미러"에 대해 알아보세요 - https://play.google.com/store/apps/details?id=com.konestop.magicmirror ** 이제 출시된 앱이라 구글플레이에서 "매직미러" (쌍따옴표안에 넣어 검색) 하면 바로 나옵니다. ** 아래 QR 스캔하시면 구글플레이 바로 갑니다. ■ 앱 설명 스크린골프 가시면 스윙후에 자기 스윙모습을 보여주는 나스모 아시죠? 그 나스모를 내 핸드폰으로 옮겨놓은 무료 프로그램 입니다. 골프에 진심인데 10년째 백돌이인 개발자가 직접 만든 앱입니다. 이제 휴대폰카메라로 녹화 없이도 끊임없이 자기 스윙모습을 타임머신처럼 계속 보여줍니다. 설명이 더 힘든 앱이네요. 직접 써보세요 ■ 앱 기능   - 설치후 처음 시작하는 튜토디얼을 참고하세요.