Code Monkey home page Code Monkey logo

nrf24scan's Introduction

NRF24 scanner with logging and resend ability for Flipper Zero

An NRF24 driver for the Flipper Zero device. The NRF24 is a popular line of 2.4GHz radio transceivers from Nordic Semiconductors.
NRF24L01+ Enhanced ShockBurst packet decoder example using Python: nrf24_packet_decoder.py

Flipper Zero FAP file: Nrf24_Scanner.fap



Приложение для Flipper Zero, читающее эфир на радиомодулях nRF24L01.
Выбор пукта меню - стрелки вверх/вниз, стрелки влево/вправо либо изменют настройки либо управляют видом списка, кнопка ОК либо выбирает режим (короткое нажатие), либо выполняет дополнительное действие (длительное нажатие).


По умолчанию при запуске включается режим поиска (sniff) - ищутся все валидные пакеты с корректным заголовком и CRC.
Размер CRC и тип пакета (Enhanced ShockBurst или нет) задается. CRC может быть или 1 или 2 байта.
Так как пакеты читаются в RAW формате, то длина полезной нагрузки не может быть больше 23 байт, пакеты с большей длинной не будут пойманы.
В настройках задается минимальный размер нагрузки (payload)
После принятия, пакет сдвигается побитно и валидируется. Побитный сдвиг сильно увеличивает вероятность отлова пакета, но так же увеличивается количество мусорных пакетов.
Количество уникальных адресов запоминается (просмотр - стрелка вниз в режиме просмотра адресов)
После поиска можно переключиться в режим сканирования по найденным адресам или сканировать адрес конкретного пакета или группы адресов с различным LSB в адресе


Адреса, которые попались дважды и более раз отображаются списком:



Изменение режима sniff/scan - стрелками на пункте Scan.

Режим сканирования (scan) - просто чтение пакетов по заданным в настройках мак адресам и виду пакета - ESB/DPL.
На начальном экране в режиме чтения можно загрузить файл настроек (по умолчанию загружается settings.txt из папки nrf24_scanner на SD карте).
В файле настройке задаются адреса (максимум 6) в шестнадцатеричном виде (старший байт - первый), длина адреса вычисляется по P0.
Остальные настройки можно поменять интерактивно
Настройки сохраняются длительным нажатием на ОК.

Описание настроек:
Ch - номер канала.
Rate - скорость передачи данных
Next Ch time - через сколько секунд будет увеличен номер канала
Log - выбор режима авто сохраннения в файлы log-xx.txt. Yes - сохранять в новый файл при заполнении буфера в 99 записей, Append - добавлять в последний файл, Clear - только очистка буфера

В пунктах Ch, Rate, Next при нажатии OK меняются параметры связи:
ESB - Enhanced ShockBurst (включена автоотправка подтверждения получения пакета, работающий приемник тоже попытается это сделать, возможны коллизии)
DPL - Динамический пакет
CRC1/2 - Размер CRC в байтах
Payload - размер пакета в байтах

Просмотр принятых пакетов


В пункте "Start scan/sniff" можно выбрать стрелками сканировать и смотреть или просто смотреть (view).
Если в файле настройки было несколько адресов, то первая цифра - номер канала (pipe) от 0 до 5.
Стрелки - перемещение по списку и горизонтальное скролирование
Долгий OK - отправка пакета
OK - вход в режим просмотра адресов и включения декодирования заголовка ESB пакета и CRC.
При декодировании заголовка (PCF) - первые 2 цифры - длина пакета в hex или 33, если длина пакета фиксирована
3-я цифра - PID (2bit) << 1 + флаг NO_ACK
Если включен режим декодирования CRC, то по всему пакету ищется подходящая CRC и подчеркивается в списке, а так же вместо ":" выводится "=" после номера записи в буфере





Схема подключения модуля nRF24l01:
Big board:

Gerber for full board (https://raw.githubusercontent.com/vad7/nrf24scan/master/Gerber_PCB_Flipper%20Zero%20nRF24%20board_v1_0.zip)
Easyeda source (https://oshwlab.com/vad7/flipper-zero-nrf24-board).

Mini board:



Gerber for mini board with 5V - 3.3V converter LM1117-3.3 (https://raw.githubusercontent.com/vad7/nrf24scan/master/Gerber_PCB_Flipper%20Zero%20nRF24%20board%20mini_v1_0.zip)
Easyeda source (https://oshwlab.com/vad7/flipper-zero-nrf24-board_copy).

_________________________________________________________________________________

Settings file (default addr.txt) format:

Rate: 0/1/2 - rate in Mbps (=0.25/1/2)
Ch: 0..125 - default channel
ESB: 0/1 (1 - Enhanced ShockBurst)
DPL: 0/1 (1 - Dynamic Payload Length)
CRC: 0/1/2 (CRC length)
Payload: 1..32 (bytes)
P0: address pipe #0 in hex (max 5 bytes, LSB last)
P1: address pipe #1 in hex (max 5 bytes, LSB last)
P2: address pipe #2, LSB in hex (1 byte)
P3: address pipe #3, LSB in hex (1 byte)
P4: address pipe #4, LSB in hex (1 byte)
P5: address pipe #5, LSB in hex (1 byte)
captured data in raw format, first byte = address # 0..5, Payload len if DPL
... up to MAX_LOG_RECORDS-1

In the list of the received:
Press OK - send the packet,
Long press OK - view addresses.

Decode the Packet Control Field and check CRC (long press OK in the list and then press '<' / '>').
ESB (Enhanced Shockburst) option must be turned off. Press '>' to decode CRC.
1 - pipe #
2 - Payload length (for valide packet must be 1..20 or 33 hex)
3 - PID (2 bit) + NO_ACK (1 bit)



PinOut from from NoComp/Frog

NRF24 pinout by UberGuidoZ

2/A7 on FZ goes to MOSI/6 on nrf24l01
3/A6 on FZ goes to MISO/7 on nrf24l01
4/A4 on FZ goes to CSN/4 on nrf24l01
5/B3 on FZ goes to SCK/5 on nrf24l01
6/B2 on FZ goes to CE/3 on nrf24l01
8/GND on FZ goes to GND/1 on nrf24l01
9/3V3 on FZ goes to VCC/2 on nrf24l01
IRQ/8 is left disconnected on nrf24l01 NRF_Pins If the nRF module is acting a bit flakey, try adding a capacitor to the vcc/gnd lines! I've not tried the Plus model so it may have a bigger need for a cap. Otherwise, I haven't had any major issues. Anything from a 3.3 uF to 10 uF should do. (Watch your positive/negative placement! Negative to ground.) I learned if you wanna get fancy, include a 0.1 uF cap in parallel. The 3.3 uF to 10 uF will respond to slow freq changes while the 0.1 uF will respond to the high freq switching spikes that the larger one cannot. That said, a single 10 uF will likely suffice for the Mousejack attack. ¯\_(ツ)_/¯ NRF_Capacitor

nrf24scan's People

Contributors

vad7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

gpsnts lauaall

nrf24scan's Issues

BusFault error

When the app is started with the configuration attached , and during the scan the down arrow is pressed on the pad , flipper crashes with BusFault error.
flpr-2023-06-09-091947
flpr-2023-06-09-091833

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.