Инструмент для атак на субгигагерцовые RF-устройства через адаптер CC1111 (YardStick One). Позволяет перехватывать, воспроизводить и генерировать RF-сигналы в диапазонах 300-928 МГц. Используется для атак на гаражные ворота, брелоки, умные счётчики.
pip install rfcat # Требуется YardStick One или CC1111 # Интерактивный режим: rfcat -r # В Python: from rflib import * d = RfCat() d.setFreq(433920000) d.setMdmModulation(MOD_ASK_OOK)
Цели проекта — сократить время, необходимое исследователям безопасности для создания нужных инструментов для анализа неизвестных целей, помочь в реверс-инжиниринге оборудования и удовлетворить мою страсть к радио (rf lust).
RfCat в настоящее время требует Python 2.7. Единственные предполагаемые несовместимости с Python 3.x минимальны, в основном это print("stuff") вместо print "stuff" и другие проблемы с типами str/bytes.
pip:
$ sudo pip install PySide2Новые разработки должны копировать файл application.c в appWhateverMyToolIs.c и по возможности стараться не вносить изменения в другие файлы в репозитории. Это лишь рекомендация, поскольку будущие исправления ошибок в других библиотеках/заголовках пройдут для вас гораздо более гладко.
Несколько подводных камней, которые следует иметь в виду при разработке для CC1111
.c, а затем объявлены как "externs" в файле .h, который может быть включен в другие модули. Это довольно стандартная практика для программ на C, но и это, и предыдущий пункт вызвали у меня трудности в بعضые моменты, и я обнаруживал, что не уверен, что было причиной моих проблем.Установка и первоначальное ознакомление с rfcat...
Прежде всего. Использование rfcat требует, чтобы вы либо использовали клиент на Python в режиме root (sudo подходит отлично), либо настроили udev, чтобы разрешить обычным пользователям полный доступ к донглу. У вас также должен быть один из поддерживаемых донглов, прошитый необходимым прикладным прошивкой.
sudo cp etc/udev/rules.d/20-rfcat.rules /etc/udev/rules.d
sudo udevadm control --reload-rules
Пожалуйста, убедитесь, что все учетные записи пользователей, которым вы хотите разрешить доступ к донглу RfCat, являются членами группы dialout.
Этот инструмент создан, поддерживается и используется в основном в Linux. Для создания новой прошивки и некоторых вспомогательных функций, которые мы предоставляем через make, должны быть установлены make и sdcc.
--------------------------------
| 1 2 |
| 3 4 |
------ 5 6 |
| USB 7 8 |
------ 9 10 |
| 11 12 |
| GoodFET 13 14 |
--------------------------------
--------------------------------
| |
| RST 1 2 TP ------
| GND 3 4 VCC USB |
| DC/P2_2 5 6 DD/P2_1 ------
| Chronos |
--------------------------------
GoodFET Chronos GreatFET Chronos
PIN PIN PIN PIN
1 <----- DD -----> 6 J1.37 <----- DD -----> 6
2 <----- VCC ----> 4 J1.2 <----- VCC ----> 4
5 <----- RST ----> 1 J1.40 <----- RST ----> 1
7 <----- DC -----> 5 J1.39 <----- DC -----> 5
9 <----- GND ----> 3 J1.1 <----- GND ----> 3
--------------------------------
| 2 4 6 8 10 2 4 6 8 10 |
| 1 3 5 7 9 1 3 5 7 9 |
|-TEST-PINS----DEBUG-PINS------|
| |
------ |
| USB |
------ |
| Don's Dongle (EMK) |
--------------------------------
GoodFET EMK GreatFET EMK
PIN DEBUG PIN PIN DEBUG PIN
1 <----- DD -----> 4 J1.37 <----- DD -----> 4
2 <----- VCC ----> 2 J1.2 <----- VCC ----> 2
5 <----- RST ----> 7 J1.40 <----- RST ----> 7
7 <----- DC -----> 3 J1.39 <----- DC -----> 3
9 <----- GND ----> 1 J1.1 <----- GND ----> 1
Попугаевые контакты на задней стороне четко подписаны, но если вы хотите использовать разъем...
-----------------------------------------
| YARD Stick One 2 4 6 8 10 12 14 |
| 1 3 5 7 9 11 13 ------
| USB |
| ------
| |
-----------------------------------------
GoodFET YARD Stick One GreatFET YARD Stick One
PIN PIN PIN PIN
1 <----- DD -----> 1 J1.37 <----- DD -----> 1
2 <----- VCC ----> 2 J1.2 <----- VCC ----> 2
5 <----- RST ----> 5 J1.40 <----- RST ----> 5
7 <----- DC -----> 7 J1.39 <----- DC -----> 7
9 <----- GND ----> 9 J1.1 <----- GND ----> 9
Вам также потребуется установить требования для сборки: python-usb, libusb-1.0.0, make и sdcc.
sudo apt install python-usb libusb-1.0.0 make sdcc
Для sdcc и его зависимости sdcc-libraries вам может потребоваться загрузить их из репозитория более раннего выпуска, если у вас более новая версия Debian или Ubuntu, например:
Далее, ваш пользователь должен иметь доступ на чтение/запись к донглу, когда он появляется в операционной системе.
Для большинства дистрибутивов Linux это означает, что вы должны быть членом группы dialout.
usermod -a -G sudo $USER
su - $USER
Вам также потребуются постоянные символьные ссылки на устройства USB-последовательного порта, которые будут взаимодействовать с загрузчиком CHRONOS, DONSDONGLE или YARDSTICKONE при необходимости. Если вы еще не выполнили этот шаг (см. выше), то выполните:
sudo cp etc/udev/rules.d/20-rfcat.rules /etc/udev/rules.d
sudo udevadm control --reload-rules
Для первоначальной подготовки вашего донгла вам потребуется подключить отладчик, как описано выше.
Предполагаемая модель разработки использует GoodFET, хотя один из наших разработчиков использует отладчик Chipcon от Texas Instruments.
cd rfcat/firmware/
make testgoodfet
Эта команда считает информацию с вашего донгла с помощью GoodFET. Вы должны увидеть что-то подобное:
SmartRF not found for this chip.
Ident CC1111/r1103/ps0x0400
Freq 0.000 MHz
RSSI 00
make backupdongle считает текущую прошивку с вашего донгла в файл .../bins/original-dongle-hex.backup.
(make restoredongle) для возврата к оригинальной прошивке.make clean installRfCatChronosDongle очистит, соберёт и установит прошивку RfCat (appFHSSNIC.c) для донгла Chronos.make clean installRfCatDonsDongle очистит, соберёт и установит прошивку RfCat (appFHSSNIC.c) для cc1111emk.make clean installimmesnifffw очистит, соберёт и установит прошивку RfSniff для игрушки IMME от girltech.Зависимости: CC-Bootloader от Fergus Noble (с небольшими модификациями). Для вашего удобства hex-файлы предоставляются в подкаталоге CCBootloader в папке firmware.
Исходный код можно найти здесь: * https://github.com/AdamLaurie/CC-Bootloader
который является ответвлением от: * https://github.com/fnoble/CC-Bootloader
и сделайте:
(установите rfcat_bootloader из подкаталога CC-Bootloader в какое-нибудь место в вашем пути выполнения)
cd firmware
для EMK/DONSDONGLE:
make installdonsbootloader
для CHRONOS:
make installchronosbootloader
для YARDSTICKONE:
make installys1bootloader
теперь отсоедините отладчик и подключите ваш USB-донгл.
Если вы только что установили загрузчик, донгл должен находиться в режиме загрузчика, что индикается постоянным свечением светодиода.
Если вы повторно прошиваете донгл, на котором уже запущена прошивка rfcat, такой как YarstickOne, цели Makefile автоматически переключат его в режим загрузчика для вас. Однако вы можете вручную перевести его в режим загрузчика, либо удерживая кнопку EMK/DONS при подключении к USB (для CHRONOS или YARDSTICKONE перемычку P2_2/DC на GROUND), либо выполнив команду d.bootloader() в интерактивном режиме rfcat (rfcat -r), либо выполнив команду rfcat --bootloader --force из командной строки.
Когда у вас загорится постоянным светодиод, или если вы работаете с донглом rfcat, вы можете выполнить следующее:
cd firmware
для EMK/DONSDONGLE:
make installRfCatDonsDongleCCBootloader
для CHRONOS:
make installRfCatChronosDongleCCBootloader
для YARDSTICKONE:
make installRfCatYS1CCBootloader
Новая версия будет установлена, и загрузчик завершит работу.
Установите rfcat в вашей системе. В большинстве систем Linux это поместит rfcat и rfcat_server в /usr/local/bin/, а rflib в /usr/*/lib/python2.x/dist-packages.
sudo python setup.py installipythonapt-get install ipythonpip install -e . (устанавливает в редактируемом режиме и запускается из распакованного или полученного из репозитория расположения)Если вы настроили свою систему для разрешения использования без root:
введите rfcat -r (если ваша система не настроена для разрешения использования без root, добавьте sudo перед командой или вы должны запускать как root)
вы должны были войти в интерактивную оболочку Python, где дополнение по табуляции и другие средства должны обеспечить очень мощный опыт.
мне нравится работа с сырыми байтами и интроспекция всего этого.
попробуйте такие команды:
хотя набор инструментов был создан, чтобы сделать взаимодействие с суб-ГГц диапазоном намного проще, вы обнаружите, что руководство по CC1111 от TI очень ценно. Чем лучше вы понимаете радио, тем лучше будет ваш опыт.
поиграйте с настройками радио, но я рекомендую играть небольшими порциями и следить за эффектами. Несколько вещей в настройках конфигурации радио являются обязательными для правильной настройки, чтобы принимать или передавать что-либо (одно из таких странных требований - регистры TEST2/1/0!).
Если вы смотрели какие-либо мои выступления по rfcat, вы, вероятно, помните, что вам нужно перевести радио в состояние ОСТОЯНИЯ ПОКОЯ перед настройкой. (Я сказал это три раза подряд, с разными интонациями).
Однако вы обнаружите, что я сделал это за вас в клиенте для большинства вещей. Единственные случаи, когда вам нужно делать это самим:
d.poke()d.setRFRegister(), это обрабатывается за васиспользуйте d.setRFRegister()ZWave Attack: https://github.com/initbrain/Z-Attack
Помимо этого, удачи в хакинге, и не стесняйтесь делиться любыми подробностями об успехах и вопросах о неудачах, которые вы смогли уточнить!
@ и остальная команда разработчиков.