chrismrutherford / rfcat

Automatically exported from code.google.com/p/rfcat
Other
0 stars 1 forks source link

welcome to the rfcat project

= TOC =

== GOALS == the goals of the project are to reduce the time for security researchers to create needed tools for analyzing unknown targets, to aid in reverse-engineering of hardware, and to satiate my rf lust.

== DEVELOPMENT == new development efforts should copy the "application.c" file to "appWhateverMyToolIs.c" and attempt to avoid making changes to other files in the repo if at all possible. that is only a recommendation, because future bug-fixes in other libraries/headers will go much more smoothely for you.

a couple gotchas to keep in mind while developing for the cc1111:

== INSTALLING HARDWARE== installing and getting up to speed with rfcat...

first things first. using rfcat requires that you either use the python client in root mode (sudo works well), or configure udev to allow non-root users full access to the dongle. you must also have one of the supported dongles flashed with the necessary application firmware.

allowing non-root dongle access:

create a file in /etc/udev/rules.d called 20-rfcat.rules with the following lines in it: (note, we've included this file for your convenience within this repo. you may simply copy it to /etc/udev/rules.d/)

SUBSYSTEMS=="usb" ATTRS{idVendor}=="0451" ATTRS{idProduct}=="4715" MODE:="0666"
SUBSYSTEMS=="usb" ATTRS{idVendor}=="1d50" ATTRS{idProduct}=="6047" MODE:="0666"
SUBSYSTEMS=="usb" ATTRS{idVendor}=="1d50" ATTRS{idProduct}=="6048" MODE:="0666"
SUBSYSTEMS=="usb" ATTRS{idVendor}=="1d50" ATTRS{idProduct}=="605b" MODE:="0666"

reboot or run 'sudo udevadm control --reload-rules'

this tool is created, maintained, and used primarily on linux. make and sdcc must be installed for creating new firmware and some of the helper functions we provide through make.

supported dongles:

= INSTALLATION = your build environment:

= INSTALLING WITH BOOTLOADER =

Dependencies: Fergus Noble's CC-Bootloader (slightly modified). For your convenience, a hex file is provided in the CCBootloader sub-directory in firmware.

Source can be found here: https://github.com/AdamLaurie/CC-Bootloader which is branched from here: https://github.com/fnoble/CC-Bootloader

To install:

We need permanent symlinks to the USB serial devices that will communicate with the CHRONOS and/or DONSDONGLE bootloader when required:

edit /etc/udev/rules.d/20-rfcat.rules and add the lines: (note, we've included this file for your convenience within this repo. you may simply copy it to /etc/udev/rules.d/)

SUBSYSTEMS=="usb" ATTRS{idVendor}=="1d50" ATTRS{idProduct}=="6049" SYMLINK+="RFCAT_BL_C"
SUBSYSTEMS=="usb" ATTRS{idVendor}=="1d50" ATTRS{idProduct}=="604a" SYMLINK+="RFCAT_BL_D"

reboot or run 'sudo udevadm control --reload-rules'

To prepare your dongle for the first time, you'll need to hook up your debugger as described above and do:

for EMK/DONSDONGLE

for CHRONOS:

Now you have the bootloader installed, you can install new versions of rfcat over the USB with no debugger...

If you have just installed the bootloader, the dongle should be in bootloader mode, indicated by a solid LED. If you are re-flashing the dongle, you can put it into bootloader mode either by holding down the EMK/DONS button as you plug it into USB (on the CHRONOS jumper P2_2/DC to GROUND), or by issuing the command 'd.bootloader()' to rfcat in interactive mode ('rfcat -r'), or by issuing the command 'rfcat --bootloader --force' from the command line.

Once you have a solid LED, you can do the following:

for EMK/DONSDONGLE:

for CHRONOS:

The new version will be installed, and bootloader exited.

= INSTALLING - CLIENT-SIDE = Dependencies: python-usb and libusb

install rfcat onto your system. on most linux systems, this will place rfcat and rfcat_server in /usr/local/bin/ and rflib into /usr/*/lib/python2.x/dist-packages installation is simple:

= USING RFCAT - NON-root MODE = if you have configured your system to allow non-root use:

while the toolset was created to make communicating with <ghz much easier, you will find the cc1111 manual from ti a great value. the better you understand the radio, the better your experience will be. play with the radio settings, but i recommend playing in small amounts and watch for the effects. several things in the radio configuration settings are mandatory to get right in order to receive or transmit anything (one of those odd requirements is the TEST2/1/0 registers!)

if you watched any of my talks on rfcat, you will likely remember that you need to put the radio in IDLE state before configuring. (i said it three times, in a row, in different inflections). however, you will find that i've done that for you in the client for most things. the only time you need to do this yourself are:

== EPILOGUE other than that, hack fun, and feel free to share any details you can about successes and questions about failures you are able!

@ and the rest of the development team.