Проблема

Пришла в наш двор беда. Инициативная группа установила шлагбаумы, а ключи раздали только избранным.
Печально, конечно, но надо что-то с этим делать. Пока альтернативная инициативная группа пытается юридически воздействовать на беспредельщиков, я пытаюсь как-то воздествовать на шлагбаумы технически. Просто физически сломать их было бы, конечно, проще, но ведь их починят.
Поэтому родалсь мысль либо сграбить коды радиобрелков из эфира и клонировать брелок, либо, если клонировать не получится - просто сделать глушилку, чтобы все были в равных условиях и шлаги не открывались ни у кого.

Матчасть

Что может понадобится для клонирования радиобрелка?
Самый простой вариант - оригинальный радиобрелок есть в наличии и код его статический. В этом случае на http://aliexpress.com/ покупается китайская “болванка” брелка и он клонируется буквально за пару минут.
Например такая -

Второй вариант - код статический, но брелка в наличии нет. В этом случае нужно сграбить код из эфира и воспроизвести его для записи на болванку. Это реалистичный для исполнения сценарий.
Для граббинга радиосигнала понадобится девайс - SDR (Software Defined Radio). Я купил за 7 долларов на aliexpress тюнер на базе RTL2832U+R820T2:

Для того чтобы воспроизвести сграбленный сигнал и записать его на “болванку” понадобится трансмиттер. У меня в закромах оказался трансмиттер TexasInstruments на базе чипа CC1111-F32. Он входил в состав комплекта для разработчиков MSP430 MCU ez Chronos, который в свое время был приобретен примерно за $140:

Вот сам трансмиттер:

У именно этого варианта есть один минус - у него нет разъема и провода для прошивки к нему нужно припаивать. Но оказалось, что нормальный девайс с разъемами стоит неприлично дорого (примерно $70).
Для того чтобы воспроизвести сграбленный сигнал в этот трансмиттер надо залить прошивку, которая может работать совместно с утилитой rfcat.
Для прошивания CC1111-F32 нужен программатор - SmartRF04, который стоит около 5 баксов:

Софт

- Для прослушивания эфира есть несколько разных тулзов. Под разные ОС. Для windows есть SDRSharp (SDR#), который без регистрации можно скачать, например, тут: http://airspy.com/download/
- Но я работаю под Ubuntu Linux и поэтому пользуюсь связкой rtl-sdr + GQRX.
- Для декодирования непосредственно из эфира можно пользоваться rtl_433. Эта утилитка слушает эфир и в реальном времени может декодировать битовые последовательности, а также знает некоторые протоколы и способна выдавать уже расшифрованные читабельные данные.
- Для прошивки CC1111 понадобится rfcat и

Подготовка CC1111 для работы с rfcat

Вот разводка пинов SmartRF04:

        * Chronos Dongle Details
    --------------------------------
    |                              |
    |         RST  1  2  TP         ------
    |         GND  3  4  VCC         USB |
    |     DC P2.2  5  6  P2.1 DD    ------
    | Chronos                      |
    --------------------------------

Chronos CC1111
PIN 

Name     PIN   Name
RST      1 2	
GND      3 4   Vcc
DC(P2.2) 5 6   DD(P2.1)



          

Прошивать можно утилитами от TexasInstruments - SmartRF Flash Programmer и SmartRF Studio или GoodFet.

Подготовка CC1111 для работы с rfcat сводится к прошивке последовательно двух файликов - bootloader и собственно прошивки.
Для этого:
1. Скачиваем архив rfcat и распаковываем его. Ставим SmartRF Flash Programmer в Windows 7. Драйверы для программатора должны установиться автоматически.
2. Подключаем/подпаиваем кабель от программатора к CC1111.
3. Подключаем CC1111 к разъему USB на компе с SmartRF Flash Programmer.
4. Подключаем кабель от CC1111 к программатору SmartRF.
5. Подключаем программатор SmartRF к разъему USB на компе с SmartRF Flash Programmer.
6. Запускаем SmartRF Flash Programmer. Софтина может попросить обновить фирмварь в программаторе SmartRF. Можно согласиться и выбрать в выпадающем списке “Update EB Firmware”.
7. Дальше в выпадающем списке выбираем “Program CCxxxx SoC or MSP430
8. Убеждаемся, что программа корректно определила Chip Type и EB type
9. Дальше выбираем файл с прошивкой - rfcat_130515\firmware\bins\RfCatDonsCCBootloader-130515.hex и выбираем опцию Erase, program and verify и наконец жмем Perform actions

10. После прошивки Windows на пару секунд потеряет CC1111, но потом найдет снова.
11. Теперь нужно прошить второй файл - rfcat_130515\firmware\bins\RfCatDons-130515.hex. \\Повторяем прошивку, но теперь еще ставим галочку “Write protect boot block” и жмем Perform actions

12. Отключаем кабель от CC1111 и извлекаем его из USB.

Теперь CC1111 готов для работы с rfcat

Прошивка с помощью cctool

Из-под linux и MacOS прошивать СС1111 можно с помощью cctool. На всякий случай утащил к себе: cc-tool-0.26-src.tgz
Эта утилитка поддерживает китайский SmartRF04 (ID 11a0:eb20 Chipcon AS).

Ставим зависимости:

sudo apt-get install libusb-1.0 libboost-all-dev

Распаковываем и переходим в папку с cctool

cd cc-tool/

Копируем правила udev и рестартуем сервис:

sudo cp ./udev/90-cc-debugger.rules /etc/udev/rules.d/
sudo /etc/init.d/udev restart

Собираем и ставим:

./configure 
make
sudo make install

После этого подключаем CC1111 к SmartRF04EB и пробуем запустить. При запуске без параметров CC1111 моргнет лампочкой и прога определит программатор и сам девайс:

$ sudo cc-tool
Programmer: SmartRF04DD
Target: CC1111
No actions specified

Делаем бекап прошивки:

sudo cc-tool -r ./CC1111_USB_Chronos_backup.hex
Programmer: SmartRF04DD
Target: CC1111
Reading flash (32 KB)...
Completed (8.02 s.)

И дальше по очереди прошиваем RfCatChronos-150225.hex и RfCatChronosCCBootloader-150225.hex из папки распакованного rfcat - rfcat_150225/firmware/bins/.

  $ sudo cc-tool -v -e -w RfCatChronosCCBootloader-150225.hex 
  Programmer: SmartRF04DD
  Target: CC1111
  Erasing flash...
  Completed       
  Writing flash (14 KB)...
  Completed (4.41 s.)
  Verifying flash...
  Completed (0.66 s.)
  
  $ sudo cc-tool -v -e -w RfCatChronos-150225.hex
  Programmer: SmartRF04DD
  Target: CC1111
  Erasing flash...
  Completed       
  Writing flash (14 KB)...
  Completed (4.41 s.)
  Verifying flash...
  Completed (0.66 s.) 

Если система говорит:

Error occured: libusb_control_transfer (out) failed, Pipe error

то в моем случае было достаточно нажать кнопку RESET на SmartRF04 и снова запустить cc-tool.

В результате прошивки CC1111 стал определяться так:

$ lsusb 
Bus 004 Device 009: ID 1d50:6047 OpenMoko, Inc.

Собираем и используем rfcat

На всякий случай ставим зависимости:

sudo apt-get install libusb-dev python-usb

Распаковываем, переходим в папку с rfcat и устанавливаем:

cd ~/rfcat_150225/
sudo python setup.py install

Копируем файлик с правилами udev из папки rfcat:

  sudo cp etc/udev/rules.d/20-rfcat.rules /etc/udev/rules.d
  sudo udevadm control --reload-rules

Теперь можем запустить:

rfcat -r

Первые попытки декодировать сигнал

Для того чтобы что-то передавать с помощью rfcat необходимо перехватить и декодировать сигнал.
Под декодированием я понимаю определение скорости передачи (baud rate) и информационного наполнения посылки.
Имеем - брелок CAME TOP 434NA на 433,92 MHz. 4 кнопки. Код - статический.
Подключаем тюнер, запускаем rtl_433 и смотрим:

rtl_433 -a 

Тут параметр -a заставляет rtl_433 выводить то что перехвачено, без декодирования формата сообщений (просто программа знает форматы сообщений нескольких десятков устройств и способна в реальном времени декодировать посылаемую информацию).
Также можно поиграть с папаметром -l. Он задает уровень сигнала и по умолчанию равен 8000 и принимает значения до 32767.
Первая кнопка:

[00] {12} 75 60 : 01110101 0110

Вторая кнопка:

[00] {12} 75 50 : 01110101 0101

Третья кнопка:

[00] {12} 78 80 : 01111000 1000

Четвертая кнопка:

[00] {12} ef a0 : 11101111 1010

Судя по всему тут настроены две первые кнопки. И первые биты - это серийный номер брелка, а последние - команда.

Теперь попробуем записать эти же сигналы с помощью Gqrx и посмотрим на них в Audacity.

USB SDR с функцией передатчика

https://xakep.ru/2018/08/06/diy-sdr/
Оказалось, использовать в качестве передатчика можно и совсем не для этого придуманные устройства. А именно - адаптер USB-VGA на базе чипа Fresco Logic FL2000.

Links

Enter your comment. Wiki syntax is allowed:
 
  • linux_faq/клонирование_ключей_шлагбаумов.txt
  • Last modified: 2019/02/11 09:13
  • by 127.0.0.1